Sco*_*out 6 c++ windows user-interface winapi registerclass
我想问一下,为什么在使用API开发Windows GUI时,是否需要注册窗口类?它的概念是什么?
我已经阅读了Charles Petzold 编写Windows的前三章,但我仍然想知道明确注册一个类的目的是什么.我为什么要明确地这样做?为什么不在后台完成,例如CreateWindow()(或CreateWindowEx())函数?我的意思是,为什么不是RegisterClass()在CreateWindow()中执行的代码,或者为什么CreateWindow()不调用RegisterClass()本身?
我也一直在阅读MSDN上的文档,我知道RegisterClass()函数通过填充WNDCLASS结构将窗口过程与窗口类相关联.我知道这是处理来自操作系统的消息的函数,但为什么有必要将该函数(WinProc一个)注册到CreateWindow()的单独函数中的类?
我可以理解存在CreateWindow()函数的原因,以及为什么它不会自动显示创建的窗口.这意味着我也理解ShowWindow()函数的用途.
我确信这种行为必须有充分的理由,让程序员在他想要的时候注册课程,我只是没有看到这些原因,这就是为什么我要求你们解释这个问题.
请记住,我是使用Windows API进行GUI开发的新手.我在MATLAB中做了一些GUI,它与Windows API不同,仍然允许我理解一些Windows哲学,特别是回调函数的目的.我不知道这些信息是否有用,但如果你需要做一些类比,请成为我的客人.
既然你用C++标记了你的问题,我会给你一个C++类比......
RegisterClass基本上你是在定义一个类并将它包含在你的程序中(就像#include在C++中一样).该WNDPROC是你的什么,如果当创建一个实例的窗口内发生的该处理程序.
CreateWindow在概念上和你new在C++中做的一样.你要求Windows创建一个新窗口,你必须告诉它窗口的类型.Windows包含一组预定义的窗口,例如Button或Edit,但是如果你想创建自己窗口的实例,那就没关系,你只需要告诉它你要创建的"类".您已经通过调用注册了此类RegisterClass,因此Windows现在可以直接进入定义并创建窗口实例.
| 归档时间: |
|
| 查看次数: |
4716 次 |
| 最近记录: |