【问题标题】:How can I get a winMain's hInstance? windows32 programming如何获得 winMain 的 hInstance? windows32编程
【发布时间】:2012-12-08 05:53:51
【问题描述】:

如何在不使用全局变量的情况下获取 winMain 的 HWND hwnd 的 hInstance 应用程序句柄?我正在尝试将一个对话框发送到 LRESULT CALLBACK 以使其显示某些菜单项。 或者是不同的设置方式。我已经用全局变量完成了,但我似乎无法弄清楚如何在 LRESULT CALLBACK 中设置它 我试过了

HINSTANCE hInst = (HINSTANCE)GetWindowLongPtr(hwnd, GWL_HINSTANCE);
HWND hDlgbox = CreateDialog(hInst, MAKEINTRESOURCE(ID_TOOL_BOX_CREATE) ,hwnd, ToolProc);

在 wndproc 中,但是当我尝试使用弹出菜单项打开它时,它只会显示一次,然后再也不会出现,并且在以这种方式在wndproc.

【问题讨论】:

  • 你试过GetModuleHandle(NULL)吗?
  • 我刚刚尝试过,我仍然遇到同样的问题......也许是winproc内部的设置?它仍然没有收到任何消息,有没有一种方法可以在不使用全局的情况下将对话框从 winmain 发送到 winproc?
  • 所以你有一些像 MyDialog dlg; dlg.DoModal()?
  • 不,我只是将它作为 winproc 问题中的上述代码。
  • nvm 我明白了。我会在下面发布我的答案

标签: c++ c winapi dialog


【解决方案1】:

所以我所做的是 在赢主

HWND hdlg;

将 wndextra 设置为 hwnd 的大小。

然后创建你的 dlg 框,无论你怎么做。

SetWindowLongPtr(hwnd, 0, (LONG_PTR)hdlg);

在winproc中 hwnd somenewDlg

somenewDlg = (HWND)GetWindowLongPtr(hwnd, 0);

【讨论】:

  • 我不明白这个。问题是关于 hinstance,但回答是关于 hdlg。
猜你喜欢
  • 2014-10-10
  • 1970-01-01
  • 1970-01-01
  • 2019-06-24
  • 2011-08-29
  • 2019-03-28
  • 2017-05-10
  • 1970-01-01
  • 2019-07-09
相关资源
最近更新 更多