Win32程序入口函数
2016-11-27 09:38
288 查看
每一个Win32程序都有一个入口函数,一般来说入口函数的名字是WinMain。
在大多数的Win32程序中,WinMain函数要为应用程序完成以下几个步骤:
1.注册窗口类
2.创建主窗口
3.创建消息循环
1.注册窗口类
每个窗口必须有一个窗口类。窗口类定义了一个窗口的属性,例如样式,图标,光标,菜单名称和窗口过程名称。
第一步是用类信息填充一个WNDCLASS结构。然后把WNDCLASS结构传递给RegisterClass函数。示例程序创建窗口类GenericAppClass的过程如下:
wc.lpszClassName="GenericAppClass";
wc.lpfnWndProc=MainWndProc;
wc.style=CS_OWNDC | CS_VREDRAW | CS_HREDRAW;
wc.hInstance=hInstance;
wc.hCursor=LoadIcon(NULL,IDI_APPLICATION);
wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName="GenericAPPMenu";
wc.cbClsExtra=0;
wc.cbWndExtra=0;
RegisterClass(&wc);
2.创建主窗口
你可以通过调用CreatWindow函数来创建窗口,示例程序创建窗口
4000
的过程如下:
hWnd = CreateWindow( "GenericAppClass",
"Generic Application",
WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_VSCROLL,
0,
0,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);
第一个参数是之前注册过的类的名字。剩下的参数指定了其它窗口属性。调用这个函数可以创建一个窗口,但是你只有在这之后调用ShowWindow这个函数,系统才会显示之前创建的窗口。示例程序显示窗口过程如下:
ShowWindow(hWnd,nCmdShow);
3.创建消息循环
一旦主窗口被创建和显示,WinMain函数可以执行它的主任务,即从示例程序消息队列中读取消息,然后把消息分配给适合的窗口处理。
系统不会直接把输入传递给应用程序。它会把用户通过鼠标和键盘的输入的消息同系统消息,其它应用程序消息一起,放到消息队列中。示例程序必须从消息队列中获取这些输入消息,然后分配给可以处理这些消息的窗口处理过程。
示例程序使用的消息循环如下:
while( GetMessage( &msg, NULL, 0, 0 ) ){
TranslateMessage( &msg );
DispatchMessage( &msg );
}
GetMessage函数可以从消息队列中获取消息。DispatchMessage函数可以把消息分配给合适的窗口处理过程。TranslateMessage函数可以把虚拟键码(virtual-key)翻译成字符消息。
原文地址:http://blog.csdn.net/jian_chi/article/details/7933787
在大多数的Win32程序中,WinMain函数要为应用程序完成以下几个步骤:
1.注册窗口类
2.创建主窗口
3.创建消息循环
1.注册窗口类
每个窗口必须有一个窗口类。窗口类定义了一个窗口的属性,例如样式,图标,光标,菜单名称和窗口过程名称。
第一步是用类信息填充一个WNDCLASS结构。然后把WNDCLASS结构传递给RegisterClass函数。示例程序创建窗口类GenericAppClass的过程如下:
wc.lpszClassName="GenericAppClass";
wc.lpfnWndProc=MainWndProc;
wc.style=CS_OWNDC | CS_VREDRAW | CS_HREDRAW;
wc.hInstance=hInstance;
wc.hCursor=LoadIcon(NULL,IDI_APPLICATION);
wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName="GenericAPPMenu";
wc.cbClsExtra=0;
wc.cbWndExtra=0;
RegisterClass(&wc);
2.创建主窗口
你可以通过调用CreatWindow函数来创建窗口,示例程序创建窗口
4000
的过程如下:
hWnd = CreateWindow( "GenericAppClass",
"Generic Application",
WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_VSCROLL,
0,
0,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);
第一个参数是之前注册过的类的名字。剩下的参数指定了其它窗口属性。调用这个函数可以创建一个窗口,但是你只有在这之后调用ShowWindow这个函数,系统才会显示之前创建的窗口。示例程序显示窗口过程如下:
ShowWindow(hWnd,nCmdShow);
3.创建消息循环
一旦主窗口被创建和显示,WinMain函数可以执行它的主任务,即从示例程序消息队列中读取消息,然后把消息分配给适合的窗口处理。
系统不会直接把输入传递给应用程序。它会把用户通过鼠标和键盘的输入的消息同系统消息,其它应用程序消息一起,放到消息队列中。示例程序必须从消息队列中获取这些输入消息,然后分配给可以处理这些消息的窗口处理过程。
示例程序使用的消息循环如下:
while( GetMessage( &msg, NULL, 0, 0 ) ){
TranslateMessage( &msg );
DispatchMessage( &msg );
}
GetMessage函数可以从消息队列中获取消息。DispatchMessage函数可以把消息分配给合适的窗口处理过程。TranslateMessage函数可以把虚拟键码(virtual-key)翻译成字符消息。
原文地址:http://blog.csdn.net/jian_chi/article/details/7933787
相关文章推荐
- Win32程序入口函数
- Win32程序函数调用时堆栈变化情况分析
- Win32程序函数调用时堆栈变化情况分析
- linux 入口函数和程序初始化
- 程序入口函数和glibc及C++全局构造和析构
- WinAPI【Win32 系统入口函数介绍】WinMain DllMain
- GUI程序如何使用控制台输出调试信息[zz][MFC调用win32窗口显示调试信息,使用AllocConsole 函数 ]
- Win32程序函数调用时堆栈变化情况分析
- 3.1.3、为AutoCAD程序实现入口点函数
- 读书笔记--程序员的自我修养-入口函数和程序初始化
- DirectX 3D_基础之HLSL(高级着色语言) HLSL着色器程序的编制 HSLS变量 HLSL入口函数 HLSL程序编译 变量常量类型 设置方法 前缀 关键字 类型 语句 类型转换
- Win32程序函数调用时堆栈变化情况
- Win32汇编程序——一个窗口函数
- windows程序入口函数
- C/C++程序入口函数的隐藏方法
- C++ 程序启动入口函数main还是winmain?
- ACE程序入口函数替换机制分析
- 黑莓程序入口函数main误区
- Win32程序函数调用时堆栈变化情况分析(zt)
- linux启动分析---C程序入口函数start_kernel