标签:
#include <windows.h>
/*窗口函数的函数原型*/
LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
char szClassName[] = "MainWClass";
WNDCLASSEX wndclass;
/*用描述主窗口的参数填充WNDCLASSEX结构*/
wndclass.cbSize = sizeof(wndclass); /*结构的大小*/
wndclass.style = CS_HREDRAW | CS_VREDRAW; /*指定如果大小改变就重画*/
wndclass.lpfnWndProc = MainWndProc; /*窗口函数指针*/
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 = szClassName; /*窗口类的名称*/
wndclass.hIconSm = NULL; /*没有类的小图标*/
/*注册这个窗口*/
RegisterClassEx(&wndclass);
/*创建主窗口*/
HWND hwnd = CreateWindowEx(
0, /*dwExStyle, 扩展样式*/
szClassName, /*lpClassName, 类名*/
"My first Window!", /*lpWindowName, 标题*/
WS_OVERLAPPEDWINDOW, /*dwStyle, 窗口风格*/
CW_USEDEFAULT, /*X, 初始X坐标*/
CW_USEDEFAULT, /*Y, 初始Y坐标*/
CW_USEDEFAULT, /*nWidth,宽度*/
CW_USEDEFAULT, /*nHeight, 高度*/
NULL, /*hWndParent, 父窗口句柄*/
NULL, /*hMenu, 菜单句柄*/
hInstance, /*hInstance, 程序实例句柄*/
NULL); /*lpParam, 用户数据*/
if(hwnd == NULL)
{
MessageBox(NULL, "Error build the Window!", "Error", MB_OK);
return -1;
}
/*显示窗口,刷新窗口客户区*/
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
/*从消息队列中取出消息,交给窗户函数处理,直接到GetMessage返回FALSE,结束消息循环*/
MSG msg;
while(GetMessage(&msg, NULL, 0, 0))
{
/*转化键盘消息*/
TranslateMessage(&msg);
/*将消息发送到相应的窗口函数*/
DispatchMessage(&msg);
}
/*当GetMessage返回FALSE时程序结束*/
return msg.wParam;
}
LRESULT CALLBACK MainWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
char szText[] = "最简单的窗口程序!";
switch(message)
{
case WM_PAINT: /*窗口客户区需要重画*/
{
HDC hdc;
PAINTSTRUCT ps;
/*使无效的客户区变得有效,并取得设备环境句柄*/
hdc = BeginPaint(hwnd, &ps);
/*显示文字*/
TextOut(hdc, 10, 10, szText, strlen(szText));
EndPaint(hwnd, &ps);
return 0;
}
case WM_DESTROY: /*正在销毁窗口*/
/*向消息队列投递一个WM_QUIT消息,促使GetMessage函数返回0,结束消息循环*/
PostQuitMessage(0);
return 0;
}
/*将我们不处理的消息交给系统做默认处理*/
return DefWindowProc(hwnd, message, wParam, lParam);
}
标签:
原文地址:http://my.oschina.net/u/241930/blog/525083