1、注册窗口类别2:10个字段的详细分析
/*执行实体句柄*/
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);//为所有依据窗口类别建立的窗口设置一个图标,[ID]代表图示。IDI_APPLICATION图标是一个简单的窗口小图形。LoadIcon函数传回该图示的句柄。WNDCLASS结构中定义为HICON型态。
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
//。LoadCursor函数加载一个预先定义的鼠标光标(命名为IDC_ARROW),
并传回该游标的句柄。该句柄被设定给WNDCLASS结构的hCursor字段。
wndclass.hbrBackground = GetStockObject(WHITE_BRUSH);
//hbrBackground字段名称中的hbr前缀代表「handle to a brush(画刷句柄)」,
GetStockObject呼叫将传回一个白色画刷的句柄,所以显示区域背景为白色。
/*字段指定窗口类别菜单,HELLOWIN没有应用程序菜单*/
wndclass.lpszMenuName = NULL;
/*给出一个类别名称,即存放在szAppName变量中的「HelloWin」字符串*/
wndclass.lpszClassName = szAppName;
/*在windows 98下执行了Unicode,需通知使用者有问题,
并终止执行,函数呼叫返回0*/
if(!RegisterClass(&wndclass))
{
MessageBox(NULL,TEXT("This program requires Windows NT"),
szAppName,MB_ICONERROR);
return 0;
}
//GetlastError函数可帮助确定错误产生的原因,可获得更多错误信息。
可在/Platform SDK/Windows BaseServices/Debugging and Error Handling/Error Codes/System Errors - Numerical Order查看错误。
[好习惯]:检查所有可能发生错误的函数呼叫的传回值;在配置内存后检查错误。
/16位window的遗留产物,32位中,hPrevInstance总是NULL/
if(!hPrevInstance)
{
wndclass.cbStyle = CS_HREDRAW|CS_VREDRAW;
初始化其他wndclass
RegisterClass(&wndclass);
}