在CreateWindow中的hInstance

问题描述 投票:0回答:2

我使用CreateWindow来创建主窗口。 hInstance中的WNDCLASSEX指定了该类注册的实例。所以我需要在hInstance函数中使用CreateWindow才能找到它。

我使用CreateWindow创建一个按钮。现在没有用户定义的WNDCLASSEX。 BUTTON的WNDCLASSEX是全球性的。但是我还需要将hInstance传递给函数吗?为什么以及通过什么是正确的价值?

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

如果我有什么不对劲,请告诉我。

谢谢。

c++ winapi
2个回答
1
投票

但是我还需要将hInstance传递给函数吗?为什么以及通过什么是正确的价值?

至于为什么,创建一个全新的函数来获取除了那个之外的所有内容并且只是在所有其他参数仍然有用时使用父类或其他东西,这将是有点无意义的(至少从winapi的角度来看)。

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

如果今天使用NULL和应用程序的HINSTANCE之间存在细微的差别,我想知道,但是其中任何一个都应该适用于在Windows上创建子控件。


1
投票

我在MSDN中找到了2001年的CreateWindowCreateWindowEx

hInstance

Windows 95/98 / Me:[in]处理与窗口关联的模块实例。

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

© www.soinside.com 2019 - 2024. All rights reserved.