【发布时间】:2014-10-10 01:59:49
【问题描述】:
当我单击主窗口上的按钮时,我试图创建一个弹出窗口,为此我使用了 CreateWindowEX 函数。但是,CreateWindowEx 函数接收 HINSTANCE 类型变量作为其倒数第二个参数。鉴于我在单击按钮时从 WndProcedure 内部创建了这个新窗口,WinMain 函数中的 HINSTANCE 变量对我来说将不可用,因为它不是全局变量。
以下代码是从 WndProcedure 回调函数中获取的:
case IDC_BUTTON PRESSED:
{
const char g_szClassName2[] = "POPWIND";
const char WndName2[] = "POPUP WINDOW";
HWND invisWindowHandle = CreateWindowEx(0,
g_szClassName2,
WndName2,
WS_OVERLAPPEDWINDOW,
200,
200,
800,
500,
NULL,
NULL,
hInstance,//THIS IS THE VARIABLE I AM HAVING TROUBLE GETTING
NULL);
ShowWindow(invisWindowHandle, 3);// SW_SHOWNORMAL);
UpdateWindow(invisWindowHandle);
}
如何获取所需的 hInstance 变量,以便 CreateWindowEx 函数在 WndProcedure 回调函数内部工作?
注意:我考虑过将 hInstance 变量设为全局变量,但我不确定我的应用程序创建的每个窗口是否都必须使用相同的 hInstance。
【问题讨论】:
-
这是一个可选参数(如文档中所述),但如果您真的想要,
GetModuleHandle(nullptr) -
哦,好吧,你知道加入它有什么好处吗?
标签: c++ window createwindowex