创建窗口中的hInstance
hInstance in CreateWindow
我使用CreateWindow
创建主窗口。WNDCLASSEX
中的hInstance
为注册类的实例。所以我需要CreateWindow
函数中的hInstance
来找到它。
我使用CreateWindow
创建一个按钮。现在没有用户定义的WNDCLASSEX
。BUTTON的WNDCLASSEX
是全局的。但我仍然需要传递一个hInstance
的功能?为什么要传递正确的值?
在微软的例子中,它是(HINSTANCE)GetWindowLong(hMainWnd, GWL_HINSTANCE)
,但我不知道它是什么。
如果我有什么地方错了,也请告诉我。
谢谢。
我在2001年的MSDN中找到了CreateWindow
和CreateWindowEx
hInstance
Windows 95/98/Me: [in]要与窗口关联的模块实例的句柄。
Windows NT/2000/XP:该值被忽略。
创建窗口时,在CreateWindow
的第一个参数中使用字符串(lpClassName
)指定创建实例的类。
hInstance
用于在多个DLL引用中包含相同名称的类的情况下进行标识。
更多信息请参见https://devblogs.microsoft.com/oldnewthing/20050418-59/?p=35873
但是我仍然需要传递一个hInstance到函数?为什么要传递正确的值?
至于为什么,这将是有点毫无意义的(至少从winapi的角度来看),使一个全新的函数,采取一切,但只是使用父的或其他东西,当所有其他参数仍然有一个用途。
我个人不确定传递的正确值是什么,但我使用GetModuleHandle(nullptr)
,它应该等同于传递给WinMain
的实例。它也将与Microsoft示例中使用的相同(它获取用于创建父窗口的实例),如果您使用该实例创建父窗口的话。如果使用不同应用程序的窗口作为父窗口,则会出现差异。我看到使用的另一个主要选项是nullptr
/NULL
,每次我使用它时,它的工作方式与前面提到的选项相同。
如果今天使用NULL
和应用程序的HINSTANCE
之间有细微的差异,我想知道,但这两种方法都应该可以很好地在您的窗口上创建子控件。
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 问:如何使用C++中的按钮从窗口打开窗口
- SDL 窗口不会弹出
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 如何在cpp文件之间切换窗口?在Qt中
- QuadTree只在窗口的右上角绘制
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 处理闪烁窗口事件
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- C++win32 API创建多个类似视口的窗口
- SFML RenderWindow打开窗口需要很长时间
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 获取 SFML 窗口的 HWND 和高可用性?
- 如何获取 GLFW 窗口 ID?
- GLEW/GLUT:调用init并创建一个窗口后,取消初始化并重新初始化?
- 用于窗口的 HID 终端
- SFML 文本未绘制在窗口上
- 如何为窗口截屏
- 由于无效的 ValidateRgn() 子窗口不会收到WM_PAINT消息