//1..WNDCLASS结构()
//WNDCLASS储存某一类窗口的信息,要得到某一窗口的WNDCLASS数据可以用GetClassLong()
WNDCLASS wndcls;
wndcls.cbSize = sizeof(WNDCLASSEX);
wndcls.style = CS_HREDRAW | CS_VREDRAW; //窗口类型
wndcls.lpfnWndProc = WinProc; //窗口处理函数(回调函数) long CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
wndcls.cbClsExtra = 0; //窗口扩展,缺省0,表示窗口类无扩展
wndcls.cbWndExtra = 0; //窗口实例扩展,缺省0,表示窗口实例无扩展
wndcls.hInstance = hInstance; //实例句柄
wndcls.hIcon = LoadIcon(NULL ,IDI_WINLOGO); //窗口的最小化图标,窗口的最小化图标为缺省图标
wndcls.hCursor = LoadCursor(NULL, IDC_ARROW); //窗口鼠标光标,IDC_ARROW表示窗口采用箭头光标
wndcls.hbrBackground = (HBRUSH) GetStockObject(LTGRAY_BRUSH);//窗口背景色,灰色画刷,即定义窗口背景为灰色
wndcls.lpszMenuName = NULL; //窗口菜单,NULL表示窗口无菜单
wndcls.lpszClassName = "FirstMain"; //窗口类名,每个程序都有类名称
//2..注册窗口
//就是在系统注册某一类型的窗体,也就是将你提供的WNDCLASS数据注册为一个窗口类,在WNDCLASS.lpszClassName中定义该WNDCLASS的标识.
//无论CreateWindow或CreateWindowEx创建的窗口都必须对应一个WNDCLASS,但一个WNDCLASS可以有多个窗口对象.
//有一些系统预定义的窗口类,如:"BUTTON","COMBOBOX","EDIT","LISTBOX","MDICLIENT","SCROLLBAR","STATIC.
//要得到某一窗口的窗口的窗口类名称,可以用GetClassName()获取
RegisterClass(&wndcls); //3..创建窗体
//将WNDCLASS定义的窗体变成实例
HWND hwnd = CreateWindowEx(
0, //窗口的扩展风格
"FirstMain", //指向注册类名的指针
"窗口标题", //指向窗口名称的指针
WS_TILEDWINDOW, //窗口风格
200, //窗口的水平位置
200, //窗口的垂直位置
268, //窗口的宽度
191, //窗口的高度
NULL, //父窗口的句柄,缺省NULL,表示此窗口无父窗口
NULL, //菜单句柄,缺省NULL,表示此窗口无子菜单
hInstance, //应用程序实例的句柄
NULL); //指向窗口的创建数据 //4..显示窗口
ShowWindow(hwnd,SW_SHOWNORMAL);
//5..绘制用户区
UpdateWindow(hwnd); //6..热键注册
#define ID_H1 0x1201
#define ID_H2 0x1202
#define ID_H3 0x1203
#define ID_H4 0x1204
RegisterHotKey(hwnd,ID_H1, MOD_ALT,'1');
RegisterHotKey(hwnd,ID_H2, MOD_ALT,'2');
RegisterHotKey(hwnd,ID_H3, MOD_ALT,'3');
RegisterHotKey(hwnd,ID_H4, MOD_ALT,'4'); //7..消息循环
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg); //键盘消息转换为字符
DispatchMessage(&msg); //返回msg给回调函数(过程)
}
Windows窗口编程基础
1939

被折叠的 条评论
为什么被折叠?



