window窗口编程,类似于linux下的socket编程,有一个固定的框架。
这个框架决定了窗口的属性,也提供了完整的消息机制。如下:
//头文件,这个头文件中包含了所有的头文件
#include <windows.h>
//Win32的入口函数,类似于标准c语言中的main函数,这是一个回调函数,由系统执行回调动作
//参数:
//hInstance:当前Win32进程的句柄
//hPreIns:上一个进程的句柄,参数已经废弃
//lpCmdLine:命令行参数
int CALLBACK WinMain(HINSTANCE hInstance,HINSTANCE hPreIns,LPSTR lpCmdLine,int nShowCmd){
//窗口类,这是一个结构体,定义即将创建的窗口的属性,一共10个成员变量。
WNDCLASS wc = {0};
//窗口类附加数据缓存区
wc.cbClsExtra = 0;
//窗口附加数据缓存区
wc.cbWndExtra = 0;
//窗口背景颜色
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
//光标类型,NULL表示默认
wc.hCursor = NULL;
//图标类型,NULL表示默认
wc.hIcon = NULL;
//当前winMain函数的句柄
wc.hInstance = hInstance;
//消息处理函数
wc.lpfnWndProc = WndProc;
//窗口类名
wc.lpszClassName = "Main";
//菜单选项,NULL表示没有菜单
wc.lpszMenuName = NULL;
//窗口类风格
wc.style = CS_HREDRAW|CS_VREDRAW;
//向操作系统注册这个窗口类
RegisterClass(&wc);
//创建窗口
HWND hWnd = CreateWindow(wc.lpszClassName,//窗口类名
"Window",//窗口名
WS_OVERLAPPEDWINDOW,//一般窗口风格
100,//窗口左上角横坐标
100,//窗口左上角纵坐标
700,//窗口宽度
500,//窗口高度
NULL,
NULL,
hInstance,//WinMain函数的句柄
0
);
//显示这个窗口
ShowWnd(hWnd,SW_SHOW);
//消息结构体,用于存放系统传递过来的消息
MSG nMsg = {0};
//消息循环
while(GetMessage(&nMsg,NULL,0,0)){
//翻译消息
TranslateMessage(&nMsg);
//派发消息
DispatchMessage(&nMsg);
}
return 0;
}
//消息处理函数
LRESULT CALLBACK WndProc(HWND hwnd,UINT msgId,WPARAM wParam,LPARAM lParam){
return DefWindowProc(hwnd,msgId,wParam,lParam);//系统默认的消息处理函数
}