首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Winapi: createWindow插件

Winapi: createWindow插件
EN

Stack Overflow用户
提问于 2012-02-06 12:58:23
回答 2查看 512关注 0票数 1

我正在开发一个插件(一个由其他应用程序加载的dll )。有一个特殊的函数应该返回HWND,以便应用程序可以显示一个对话框。问题是我不知道从哪里可以得到hInstance (它不是作为参数传递给函数)。

看起来我不懂什么,我对所有这些东西都是新手,所以如果这个问题很愚蠢,请原谅。

UPD:尝试用getModuleHandle获取hInstance

代码语言:javascript
复制
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;
}

我还在非法进入。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-06 15:42:02

得到它的几种方法:

传递给HINSTANCE

  • GetModuleHandle() ()入口点的第一个参数,使用DLL名称强制转换到HINSTANCE

  • VirtualQuery(),,传递函数地址的
  • 。将返回的MEMORY_BASIC_INFORMATION.BaseAddress转换为HINSTANCE。适用于Windows.

的32位和64位版本。

票数 3
EN

Stack Overflow用户

发布于 2012-02-06 13:02:27

根据CreateWindow的文档,hInstance参数是可选的。这意味着在这里传递NULL是有效的。但是,正如Simon在对此答案的注释中所指出的那样,参数可能仅为NULL窗口类是全局注册的。

如果您正在编写DLL,那么您也可以自己定义一个DllMain入口点函数。此函数由Windows调用,将函数的句柄作为第一次调用。在创建窗口时,您可以在某个地方记忆这个句柄来重用它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9160462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档