我正在制作一个绘图程序,我有MDI和需要访问菜单项的多个对话框。
现在,我把菜单放在全球范围内,所以一切都可以看到它。但是,我想使用
typedef struct datastruct
{
DWORD currentTool;
POINT start, end;
DWORD lastShape;
HINSTANCE hInst;
HMENU hMenuInit, hMenuHello;
HMENU hMenuInitWindow, hMenuHelloWindow;
}
DATA, *PDATA;
此结构以及PDATA pdata = 0, pglobaldata=0;
访问以下项目:
HINSTANCE hInst;
HMENU hMenuInit, hMenu;
HMENU hMenuInitWindow, hMenuWindow;
例如,当我需要在MDI子窗口中访问hMenuInit时,我会执行此操作:pglobaldata->hMenuInit
并且我能够访问WinMain正在使用的同一个:hMenuInit = LoadMenu (hInstance, MAKEINTRESOURCE(IDR_MENU));
我该如何做到这一点?
在此处粘贴所有代码时遇到问题。我把它放在了pastebin上:http://pastebin.com/z9tKSwhG
答案 0 :(得分:0)
听起来您想要将某些特定于实例的数据与窗口相关联。您可以通过在注册窗口类时在cbWndExtra
WNDCLASSEX
成员中指定额外数据的大小来实现此目的。然后访问为GetWindowLongPtr
传递SetWindowLongPtr
和0
nIndex
的额外数据。该索引标识了存储实例数据的缓慢程度。