3

CreateWindow用来创建主窗口。hInstanceinWNDCLASSEX指定注册类的实例。所以我需要hInstanceCreateWindow函数中找到它。

CreateWindow用来创建一个按钮。现在没有用户定义WNDCLASSEX。BUTTONWNDCLASSEX是全球性的。但是我仍然需要将一个传递hInstance给函数?为什么以及什么是正确的传递值?

在 Microsoft 的示例中,它是(HINSTANCE)GetWindowLong(hMainWnd, GWL_HINSTANCE),但我不知道它是什么。

如果我有什么问题,也请告诉我。

谢谢。

4

3 回答 3

4

CreateWindow我在 2001年的 MSDN 中发现CreateWindowEx

hInstance

Windows 95/98/Me: [输入]要与窗口关联的模块实例的句柄。

Windows NT/2000/XP:忽略此值。

于 2019-03-19T21:20:51.640 回答
1

但是我仍然需要将 hInstance 传递给函数吗?为什么以及什么是正确的传递值?

至于为什么,创建一个全新的函数会有点毫无意义(至少从winapi的角度来看),它会接受除此之外的所有内容,并且在所有其他参数仍然有用时只使用父级或其他东西。

我个人不确定传入的正确值是什么,但我使用GetModuleHandle(nullptr),它应该相当于传入的实例WinMain。如果您使用它来创建父窗口,它也将与 Microsoft 的示例使用的示例(获取用于创建父窗口的实例)相同。如果使用不同的应用程序的窗口作为父窗口,就会出现差异。我看到使用的另一个主要选项是nullptr/ NULL,每次我使用它时,它的工作方式都与上述选项相同。

如果今天 usingNULL和 application's之间存在细微差别HINSTANCE,我想知道,但其中任何一个都可以很好地用于在 Windows 上创建子控件。

于 2013-03-17T16:16:45.393 回答
1

lpClassName创建窗口时,您在 的第一个参数中使用字符串 ( ) 指定创建实例的类CreateWindow

hInstance用于在引用的多个 DLL 包含同名类的情况下进行标识。

有关详细信息,请参阅https://devblogs.microsoft.com/oldnewthing/20050418-59/?p=35873

于 2019-11-20T10:56:24.947 回答