首页 > 代码库 > win32API 入口WinMain()内部机理
win32API 入口WinMain()内部机理
win32API 入口WinMain()内部机理
- 入口 WinMain()
- 前面戴两重“帽子”:一个"int"是指返回值; 一个WINAPI指“调用约定”。
- 后面有四个参数:
- HINSTANCE hInstance, 由操作系统生成的“当前实例句柄”。
- HINSTANCE hPrevInstance,"先前实例句柄"----已经遭废弃,以前有用到过,现在已无用。“二货”都会遭到”白眼“,一般赋值null。
- LPSTR lpCmdLine,由外部传递进来的命令行,如:用记事本打开一个txt文件,内里实现是把txt文件路径传入记事本程序,而记事本也要从入口WinMain()进入的,LPSTR lpCmdLine就来接收此路径参数。
- int nShowCmd 显示参数,由操作系统指定。
- WNDCLASSEX 结构用于注册窗口类
- cbSize:
- wcex.cbSize = sizeof( WNDCLASSEX );
- WNDCLASSEX 的大小。我们可以用sizeof(WNDCLASSEX)来获得准确的值。
- cbClsExtra:
- wcex.cbClsExtra = 0;
- 指定紧跟在窗口类结构后的附加字节数。窗口类关联的一个额外的空间。基本已经用不到。
- cbWndExtra:
- wcex.cbWndExtra = 0;
- 指定紧跟在窗口事例后的附加字节数。如果一个应用程序在资源中用CLASS伪指令注册一个对话框类时,则必须把这个成员设成DLGWINDOWEXTRA。窗口关联的一个额外的空间。
- hbrBackground:
- wcex.hbrBackground = (HBRUSH) GetStockObject( WHITE_BRUSH );
- 背景画刷的句柄。
- hCursor:
- wcex.hCursor = LoadCursor( NULL, IDC_ARROW );
- 光标的句柄。
- hIcon:
- wcex.hIcon = LoadIcon( NULL, IDI_APPLICATION );
- 图标的句柄,任务栏上面的图标。
- hIconSm:
- wcex.hIconSm = LoadIcon( NULL, IDI_WINLOGO );
- 和窗口类关联的小图标。如果该值为NULL。则把hIcon中的图标转换成大小合适的小图标。标题栏左边的小图标。
- hInstance:
- wcex.hInstance = hInstance;
- 本模块的事例句柄。
- lpfnWndProc:
- wcex.lpfnWndProc = (WNDPROC) WndProc;
- 窗口处理函数的指针。
- WNDCLASSEX 中最重要的成员莫过于lpfnWndProc了。前缀 lpfn 表示该成员是一个指向函数的长指针。在 Win32中由于内存模式是 FLAT 型,所以没有 near 或 far 的区别。每一个窗口类必须有一个窗口过程,当 Windows 把属于特定窗口的消息发送给该窗口时,该窗口的窗口类负责处理所有的消息,如键盘消息或鼠标消息。由于窗口过程差不多智能地处理了所有的窗口消息循环,所以您只要在其中加入消息处理过程即可。
- lpszClassName:
- wcex.lpszClassName = "My Class";
- 指向类名称的指针。
- lpszMenuName:
- wcex.lpszMenuName = NULL;
- 指向菜单的指针。
- style:
- wcex.style = CS_HREDRAW | CS_VREDRAW;
- 从这个窗口类派生的窗口具有的风格。您可以用“or”操作符来把几个风格或到一起。
- return RegisterClassEx( &wcex );
win32API 入口WinMain()内部机理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。