我正在开发一个插件(由其他应用加载的dll)。有一个特殊的函数应该返回HWND
,以便app可以显示一个对话框。问题是我不知道从哪里可以获得hInstance
(它不作为参数传递给函数)。
看起来我不理解某些东西,我对所有这些东西都是新手,所以如果问题很愚蠢,请原谅。
UPD :尝试使用getModuleHandle
获取hInstance:
void* createLoginDialog() {
HINSTANCE hIns = (HINSTANCE) GetModuleHandle(L"comapping");
HWND hWnd = CreateWindow(L"Popup",
L"Enter login",
WS_POPUP,
20,
20,
20,
20,
NULL,
NULL,
hIns,
NULL);
return hWnd;
}
我仍然受到访问冲突。
答案 0 :(得分:3)
根据CreateWindow
的文档,hInstance
参数是可选的。这意味着在此处传递NULL
是有效的。但是,正如Simon Richter在对这个答案的评论中指出的那样,参数可能只是NULL
窗口类在全球注册。
如果您正在编写DLL,您也可以自己定义DllMain
入口点函数。 Windows调用此函数,将函数句柄作为第一个句柄传递。您可以在某处记住此句柄,以便在创建窗口时重复使用它。
答案 1 :(得分:3)
获得它的几种方法: