WinMain函数
当Windows操作系统启动一个程序时,它调用的就是WinMain函数(由插入到可执行文件中的可执行代码调用)
函数功能:该函数被系统调用,作为一个32位应用程序的入口点。
WinMain是Windows程序的入口点函数 (main是DOS程序的入口点函数)
WinMain函数与DOS下的main函数作用相同,当WinMain函数结束或返回时,Windows应用程序结束。
一个完整的Win32程序,这个程序实现的功能是创建一个窗口,并在窗口中响应键盘及鼠标的消息,程序的实现步骤为:
1. WinMain函数的定义;
2. 创建一个窗口;
3. 进行消息循环;
4. 编写窗口过程函数;
WinMain函数原型:
Int WINAPI WinMain ( WINAPI实际就是_stdcall
HINSTANCE hInstance, hInstance: 应用程序当前运行的实例句柄,是一个数值
HINSTANCE hPrevInstance, hPrebInstance: 当前实例的前一个实例句柄。
LPSTR lpCmdLine, lpCmdLine:是一个以空终止的字符串,指定传递给 应用程序的命令行参数。
INT nCmdShow nCmdShow:指明窗口如何显示。例:最大化,隐藏
);
WinMain函数接受4个参数,这些参数都是系统调用WinMain函数时,传递给应用程序的。
hInstance: 应用程序当前运行的实例句柄,是一个数值。当程序在windows下运行时,它标识运行中的实例,一个应用程序可以运行多个实例,每运行一个实例,系统都分配一个句柄值,通过hInstance参数传递给WinMain函数。
hPrebInstance: 当前实例的前一个实例句柄。对于同一个程序打开两次,出现两个窗口第一次打开的窗口就是先前实例的窗口。对于一个32的位程序,该参数总为NULL,不再起作用。
lpCmdLine:是一个以空终止的字符串,指定传递给应用程序的命令行参数。例如:在D盘下有一个sunxin.txt文件,当我们用鼠标双击这个文件时将启动记事本程序(notepad.exe),此时系统会将D:/sunxin.txt作为命令行参数传递给记事本程序的WinMain函数,记事本程序在得到这个文件的全路径名后,就在窗口中显示该文件的内容。要在VC++开发环境中向应用程序传递参数,可以单击菜单【Project】→【Settings】,选择“Debug”选项卡,在“Program arguments”编辑框中输入你想传递给应用程序的参数。
nCmdShow:指明窗口如何显示。
SW_HIOE:隐藏窗口并且激活另外一个窗口。
SW_MINIMIZE:最小化指定的窗口,并且激活在系统表中的顶层窗口。
SW_RESTORE:激活并显示窗口。如果窗口已经最小化或最大化,系统将以恢复到原来的尺寸和位置显示窗口(与SW_SHOWNORMAL相同)。
SW_SHOW:激活一个窗口并以原来的尺寸和位置显示窗口。
SW_SHOWMAXIMIZED:激活窗口并且将其最大化。
SW_SHOWMINIMIZED:激活窗口并将其目标化。
SW_SHOWMINNOACTIVE:将一个窗口显示为图标。激活窗口维持活动状态。
SW_SHOWNA:以窗口的当前状态显示窗口。激活窗口保持活动状态。
SW_SHOWNOACTIVATE:以窗口的最近一次的尺寸和位置显示窗口。激活窗口维持激活状态。
SW_SHOWNORMAL:激活并显示窗口。如果窗口最大化或最小化,系统将其恢复到原来的尺寸和位置(与SW_RESTORE相同)。