[Win窗口编程(1)] 寻找主窗口的创建方法 [TZZ]
1、打开已安装的Help Viewer程序(激默芡食必须保证已安装了Windows桌面开发所需要的帮助文档)。然后切换的“目录选项卡页”,打开“Desktop app technolo爿讥旌护gies > Windows and Messages(Windows) > Windows > Window Overviews”下的“Using Windows帮助文档”;
![[Win窗口编程(1)] 寻找主窗口的创建方法 [TZZ]](https://exp-picture.cdn.bcebos.com/116b1ae23ea23a42672b2da43733ec3835bbc0e5.jpg)
2、在打开的“Using Windows”中,查看“Creating a Main Window”一节的内容。在第一段中,它说“创建一个应用程序定义的主窗口需要先注册一个窗口类并为创建的主窗口提供一个窗口过程”。 再看一下目录中,其中正好有“Windows Classes (Windows)”和“Window Procedure”的目录;
![[Win窗口编程(1)] 寻找主窗口的创建方法 [TZZ]](https://exp-picture.cdn.bcebos.com/a31e1214c27bd28257d82cf23cb1eef97ebd36ea.jpg)
3、展开目录中的“Windows Classes钱砀渝测(Windows) > Window Classes Overv足毂忍珩iews”,打开主题“Using Window Classes”。这一主题中演示了“注册本地窗口并用它创建主窗口的代码”。注册窗口类需要定义一个WNDCLASSEX结构体变量,然后通过RegisterClassEx函数注册这个结构体变量;
![[Win窗口编程(1)] 寻找主窗口的创建方法 [TZZ]](https://exp-picture.cdn.bcebos.com/d2001d7de137c976fcedf07144672b5fd4462bea.jpg)
4、查看示例代码,它定义的应用程序入口函数是WinMain(),而不是我们学习C语言时的main()。代码中先初始化了应用程序,接着初始化了实例,最后写了一个while循环,不断地调用GetMessage()函数获取msg数据。在循环中则调用了TranslateMessage()函数转换msg,并通过DispatchMessage()函数分发消息(记得查一下这3个函数的帮助文档);
![[Win窗口编程(1)] 寻找主窗口的创建方法 [TZZ]](https://exp-picture.cdn.bcebos.com/f591ab03c8d246feae1f4f37b8bf3bef344f1eea.jpg)
5、在定义的InitApplication()函数中,定义了一个窗口类wcx,然后通过RegisterClassEx()函数将其注册。WNDCLASSEX结构体中的lpfnWndProc成员用于保存指向窗口过程的指针(记得查一下WNDCLASSEX和RegisterClassEx()函数);
![[Win窗口编程(1)] 寻找主窗口的创建方法 [TZZ]](https://exp-picture.cdn.bcebos.com/51f9aa3ea8db574a08631e28a7f7dfb2dd1917ea.jpg)
6、在定义的InitInstance()函数中,通过CreateWindow()创建了一个新窗口并通过 ShowWindow()函数将其显示出来,最后调用UpdateWindow()更新窗口(查一下这3个函数就知道它们的作用了);
![[Win窗口编程(1)] 寻找主窗口的创建方法 [TZZ]](https://exp-picture.cdn.bcebos.com/dd58d02c5b1b1ede0e8d2d8d981fceecd2d90fea.jpg)
7、注意,在这篇文章的最后写了一句话,说“注册应用程序全局(窗口)类和注册应用程序本地(窗口)类类似,不同的是注册全局类需要将WNDCLASSEX结构中的style成员设置为CS_GLOBALCLASS”。记得这里埋了个线索;
![[Win窗口编程(1)] 寻找主窗口的创建方法 [TZZ]](https://exp-picture.cdn.bcebos.com/cfadcdd96975f2c4edcbd4f78f0148fe1f4206ea.jpg)
8、看完“Using Window Classes”这一主题后,我想大家已经大概明白了创建主窗口的基本过程,毕竟它已经给出了示例代码。下一篇文章中,我将给大家演示一下“创建一个主窗口”的程序编写过程。Enjoy!