接触VC之一:WinSDK
2006-07-19 11:36:55 来源:WEB开发网核心提示: int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int CmdShow)第一个参数是hInstance,是所传进来的值是此程序的当前程序实例句柄,接触VC之一:WinSDK(2),什么叫实例
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int CmdShow)
第一个参数是hInstance,是所传进来的值是此程序的当前程序实例句柄。什么叫实例呢?当你运行两次同一个Windows程序时,屏幕上会出现两个一模一样的窗口;这时我们就说这个程序就被生成了两个实例。再举一个例子,在你眼前搁仨苹果,其时这个仨苹果就是苹果这一大类的三个实例。按照这个思路说实例就是一个抽象概念中的实体存在。那么严格来说其时我们所编写的并不是这个程序,而是这个程序的逻辑。而程序实例则是按照这个我们编写的逻辑所生成的实体结果。而句柄就是用来代表实例的,它是一个32位的值。每一个实例都对就着一个32位的值,而这个值就被称为句柄。不知道我说明白没有。这里的Instance就是当前程序被实例化后的句柄。而且属于同一个实例中的资源是共享的。第二个参数hPreInstance则代表上一个(前一个)程序实例句柄,在Win32程序中这个值总为空(为零),第三个参数是lpCmdLine,这是一个字符串,记录着启动程序时的命令行,起着C中main函数的(argc,argv)的作用.最后nCmdShow则表示这个程序的窗口是否被显示出来。
在主函数中,第一个要执行的函数就是InitApplication(),语句如下:
if (!InitApplication(hInstance))
return (FALSE);
这个函数所起的作用是注册窗口类。注册窗口类的意思就是告诉系统将我们的提供的图标,菜单,消息处理函数,光标联系起来成为一个窗口类,为后面的显示窗口作准备。在InitApplication()函数中使用RegisterClass()来注册窗口。如果成功则返回true,否则返回false。其唯一的参数是一个WNDCLASS结构。其中各字段功能如下:(关于具体值请查看MSDN)
更多精彩
赞助商链接