RegisterClass和RegisterClassEx有什么区别?
来源:互联网 发布:数据编程入门 编辑:程序博客网 时间:2024/06/06 23:26
引言
继上篇文章“VC CreateWindow 找不到窗口类”中将RegisterClassEx改为RegisterClass问题就解决了,究竟是什么原因,RegisterClass和RegisterClassEx有什么区别呢?
经过一番查找和测试,终于找到了答案:
不同之处:
The RegisterClass function has been superseded by the RegisterClassEx function. You can still use RegisterClass, however, if you do not need to set the class small icon. In addition,their parameters are different.
E文看不太懂,经过测试就是一个参数的区别,如果使用RegisterClassEx 则WNDCLASSEX的hIconSm参数是必须设置的。
相关代码片:
//函数:MyRegisterClass//作用:注册窗口类ATOM MyRegisterClass(HINSTANCE hInstance){ WNDCLASSEX wndclass; wndclass.cbSize = sizeof(wndclass); wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = 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 = szAppName; //将下面这条语句注释,“CreateWindow”时就会出现“找不到窗口类”的错误; wndclass.hIconSm = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION)); return RegisterClassEx(&wndclass);}//函数:InitInstance//作用:初始化应用程序BOOL InitInstance(HINSTANCE hInstance, int nCmdShow){ HWND hwnd = NULL; hwnd = CreateWindow(szAppName, _T("按钮设计"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); if (hwnd == NULL) { TCHAR szBuf[128]; LPVOID lpMsgBuf; DWORD dw = GetLastError(); FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL ); MessageBox(NULL, (LPTSTR)lpMsgBuf, "hwnd", MB_OK); } BOOL ret = ShowWindow(hwnd, SW_SHOWNORMAL); UpdateWindow(hwnd); return TRUE;}
1 1
- RegisterClass和RegisterClassEx有什么区别?
- RegisterClassEx和RegisterClass
- (5)RegisterClass和RegisterClassEx函数
- (5)RegisterClass和RegisterClassEx函数
- Windows API一日一练(5)RegisterClass和RegisterClassEx函数
- 传递给 CreateWindow 和 RegisterClass 的 HINSTANCE 有什么用?
- /和../和~/有什么区别
- /和../和~/有什么区别?
- /和../和~/有什么区别
- TableView 注册 registerNib 和registerClass区别
- Windows API一日一练(一)第一个应用程序 使用应用程序句柄 使用命令行参数 MessageBox函数 RegisterClass和RegisterClassEx函数
- C#和C++有什么区别?各有什么长处?
- gradle和maven有什么用?分别有什么区别?
- Socket具体有什么用途?和P2P有什么区别
- volatile到底有什么用?和regist有什么区别?
- 【matlab】./和/ .*和* 有什么区别
- ios 注册cell 中 registerClass 和registerNib 的区别
- 用strlen和sizeof()有什么区别
- Android 手势&触摸事件。手势各种状态
- 解决onSaveInstanceState的Bug
- gcc常用的参数
- android DPI 表
- Codeforces 509 B Painting Pebbles 贪心
- RegisterClass和RegisterClassEx有什么区别?
- QA的价值(1)
- 分享个福利关于iOS关于程序被强杀调用的方法
- 基于Storm的Nginx log实时监控系统
- 2013年7月做的一个自动应答机器人的架构
- Cocoa Core Competencies_0_序
- [Email]各种问题的分析和解决方案
- Android理论梳理-No1异步处理之Handler相关机制
- nginx后端服务器返回给nginx502、504、404、执行超时等错误状态的解决方法