我正在开发一个插件(一个由其他应用程序加载的dll )。有一个特殊的函数应该返回HWND,以便应用程序可以显示一个对话框。问题是我不知道从哪里可以得到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;
}我还在非法进入。
发布于 2012-02-06 15:42:02
得到它的几种方法:
传递给HINSTANCE
的32位和64位版本。
发布于 2012-02-06 13:02:27
根据CreateWindow的文档,hInstance参数是可选的。这意味着在这里传递NULL是有效的。但是,正如Simon在对此答案的注释中所指出的那样,参数可能仅为NULL窗口类是全局注册的。
如果您正在编写DLL,那么您也可以自己定义一个DllMain入口点函数。此函数由Windows调用,将函数的句柄作为第一次调用。在创建窗口时,您可以在某个地方记忆这个句柄来重用它。
https://stackoverflow.com/questions/9160462
复制相似问题