该WNDCLASSEX
结构有一个hInstance
字段。
我已经创建了一个 DLL,它将注册一个窗口类(WNDCLASSEX wcex
)并使用此类创建一个窗口。
wcex.hInstance
在调用之前不定义字段(将其归零)是否正确RegisterClassExW(&wcex)
?
或者我应该定义它,在 DLL 加载时获取?
该WNDCLASSEX
结构有一个hInstance
字段。
我已经创建了一个 DLL,它将注册一个窗口类(WNDCLASSEX wcex
)并使用此类创建一个窗口。
wcex.hInstance
在调用之前不定义字段(将其归零)是否正确RegisterClassExW(&wcex)
?
或者我应该定义它,在 DLL 加载时获取?
HINSTANCE
是的,在 DLL 中注册任何窗口类时,您都应该提供 DLL 。这样,如果另一个 DLL 或主机 EXE 恰好为不同的类注册了相同的名称,窗口管理器就可以区分您的类名。稍后,当创建窗口时,调用者可以指定
HINSTANCE
所需的类来自哪个类。Raymond Chen 曾在博客中讨论过这个话题以及它的重要性:
传递给 CreateWindow 和 RegisterClass 的 HINSTANCE 有什么用处?
在 RegisterClass 中使用错误的 HINSTANCE 就像身份盗窃