您的位置:首页 > 移动开发

调用WINAPI 创建一个窗口并显示一些东西(create a window and display something)

2012-01-31 22:49 316 查看
#include <windows.h>
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("HelloWin") ;
HWND hwnd ;					//窗口句柄
MSG msg;							//消息结构
WNDCLASS wndclass ;    //窗口类别结构

wndclass.style = CS_HREDRAW | CS_VREDRAW ; //设置窗体风格
wndclass.lpfnWndProc = WndProc ;                        //指定窗口消息处理程序
wndclass.cbClsExtra = 0 ;										//
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;							//执行实体句柄
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;//加载图标
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;//加载鼠标图标
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;	//设置窗口背景(颜色)
wndclass.lpszMenuName = NULL ;						//窗体菜单名
wndclass.lpszClassName = szAppName ;			//窗体名

if (!RegisterClass (&wndclass))					//登记窗体
{
MessageBox ( NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}

hwnd = CreateWindow( szAppName,//windows classname
TEXT ("The Hello Progame"), //window caption
WS_OVERLAPPEDWINDOW,		//window style
CW_USEDEFAULT,				//inital x position
CW_USEDEFAULT,				//inital y position
CW_USEDEFAULT,				//inital x size
CW_USEDEFAULT,				//inital y size
NULL,						//parent windows hadle
NULL,						//windows menu handle
hInstance,					//program instance handle
NULL) ;						//creation paramenters
ShowWindow(hwnd, iCmdShow) ;						//show the window
UpdateWindow(hwnd) ;										//Update window itself

while (GetMessage (&msg, NULL, 0, 0))				//Get a Message from window's message manage
{
TranslateMessage (&msg) ;							//Translate some message from keyboard
D
4000
ispatchMessage (&msg) ;								//Send massage to massage process program
}
return msg.wParam;
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;							//device contest handle
PAINTSTRUCT ps;			//print struct
RECT rect ;						//rect struct
switch(message)
{
case WM_CREATE:					//if the window create,this function will accept this massage
//(WM_CREATE)
//PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ;
return 0;
case WM_PAINT:						//window redraw
hdc = BeginPaint (hwnd, &ps) ;			//begin paint window
GetClientRect (hwnd, &rect);				//get rect of client
DrawText (hdc, TEXT ("Hello, Windows XP!"), -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
EndPaint (hwnd, &ps);			//draw the text in centre of window
return 0 ;
case WM_DESTROY:				//when the window destroy ,this function will accept this massage,then process it:
PostQuitMessage (0);			//Quit the program
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐