我想问一下,为什么在使用API开发Windows GUI时,需要注册一个窗口类?它的概念是什么?
我已经阅读了Charles Petzold编写的Programming Windows的前 3 章,但我仍然想知道显式注册一个类的目的是什么。我为什么要明确地这样做?为什么它不在后台完成,例如在 CreateWindow()(或 CreateWindowEx())函数中?我的意思是,为什么 RegisterClass() 的代码不在 CreateWindow() 中执行,或者为什么 CreateWindow() 不调用 RegisterClass() 本身?
我也一直在阅读 MSDN 上的文档,并且我知道 RegisterClass() 函数通过填充 WNDCLASS 结构将窗口过程与窗口类相关联。我知道这是处理来自操作系统的消息的函数,但是为什么需要将该函数(WinProc 函数)注册到 CreateWindow() 的单独函数中的类中?
我可以理解存在 CreateWindow() 函数的原因,以及为什么它不会自动显示创建的窗口。这意味着我也了解 ShowWindow() 函数的用途。
我确信这种行为一定有充分的理由,让程序员在他想要的时候注册一个类,我只是看不到这些原因,这就是为什么我要求你们阐明这个问题。
请记住,我对使用 Windows API 进行 GUI 开发非常陌生。我在 MATLAB 中做了一些与 Windows API 不同的 GUI,仍然让我理解了一些 Windows 哲学,特别是回调函数的目的。我不知道这些信息是否有用,但如果您需要做一些类比,请成为我的客人。