对于那些花时间处理Win32 API的人,我想我的问题相对容易。
所以我的问题是:
初始化WNDCLASSEX实例后,我们需要使用“RegisterClassEx”函数“注册”它,为什么?我们为什么这样做?这种注册的含义是什么?在什么情况下我需要注册?
答案 0 :(得分:5)
ATOM
返回的RegisterClassEx
唯一标识您的“窗口类”,然后可以在其他Windows API中引用它。 [MSDN]
实际上它是一个哈希值,以便在每次创建或查找窗口时减少处理的数据量。这也意味着可以轻松创建和识别具有相同功能的多个窗口。
我正在解决上面的实际原因。 Hans Passant的answer正确地解释了这是为C. Further MSDN example提供的OO类概念。
答案 1 :(得分:5)
函数名中的 Class 一词很重要。当您使用面向对象语言(如C ++,Delphi,Java或C#等)编写代码时,可以使用 class 关键字创建具有行为的对象。但是winapi被设计用于C语言,这种语言没有这种功能。 RegisterClassEx()函数是对它的模拟,它允许您创建一个"派生的窗口。它来自命名类的行为,您可以覆盖的行为。使用该类名创建的每个窗口都具有相同的行为。
您传递的WNDCLASSEX结构为窗口提供了默认行为。这个结构中最重要的成员是:
即使您不打算重新使用窗口,Windows也要求您调用RegisterClassEx()。到目前为止,这是您自己的代码中最常用的函数。在编写实现控件的库,其他代码可以使用的窗口之前,您才开始真正利用它。喜欢" EDIT"。