#include<windows.h> // 包含 windows.h 头文件
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM ); // 窗口函数声明
/* 入口函数 WinMain()*/
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,
int nCmdShow){
WNDCLASS wndclass; // 定义窗口类结构变量
HWND hwnd; // 定义窗口句柄
MSG msg; // 定义消息结构变量
/* 定义窗口类的各属性 */
wndclass.style = CS_HREDRAW|CS_VREDRAW; // 改变窗口大小则重画
wndclass.lpfnWndProc = WndProc; // 窗口函数为 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 = "window 窗口创建 "; // 窗口类名为 window 窗口创建
/* 注册窗口类 */
if(! RegisterClass(&wndclass)) return FALSE;
/* 创建窗口 */
hwnd = CreateWindow("window 窗口创建 ", // 窗口类名 window 窗口创建
"window 窗口创建 ", // 窗口名 window 窗口创建
WS_OVERLAPPEDWINDOW, // 重叠式窗口
CW_USEDEFAULT, CW_USEDEFAULT, // 左上角屏幕坐标默认值
CW_USEDEFAULT, CW_USEDEFAULT, // 窗口宽度和高度默认值
NULL, // 此窗口无父窗口
NULL, // 此窗口无主菜单
hInstance, // 创建此窗口的实例句柄
NULL); // 此窗口无创建参数
/* 显示并更新窗口 */
ShowWindow(hwnd,nCmdShow); // 显示窗口
UpdateWindow (hwnd); // 更新窗口的客户区
/* 消息循环 */
while(GetMessage (&msg,NULL,0,0)) {
TranslateMessage (&msg); // 键盘消息转换
DispatchMessage (&msg); // 派送消息给窗口函数
}
return msg.wParam; // 返回退出值
}
/* 窗口函数 */
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam, LPARAM lParam){
// 根据消息值转相应的消息处理
switch (message){
case WM_PAINT: // 重画窗口客户区消息处理
HDC hdc; // 定义设备描述表句柄
PAINTSTRUCT ps; // 定义绘图信息结构变量
hdc = BeginPaint (hwnd,&ps); // 获取要重画的窗口的设备描述表句柄
TextOut(hdc,10,20," 哈哈, Windows 编程创建的窗口 !", 28); // 输出文本
EndPaint (hwnd,&ps); // 结束要重画的窗口
return 0;
case WM_DESTROY: // 撤销窗口消息处理
PostQuitMessage (0); // 产生退出程序消息 WM_QUIT
return 0;
}
return DefWindowProc (hwnd, message, wParam, lParam);
// 其他转默认窗口函数
}