Win32使菜单非全局,但可由所有子进程访问

时间:2014-04-12 20:15:26

标签: c windows winapi

我正在制作一个绘图程序,我有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

1 个答案:

答案 0 :(得分:0)

听起来您想要将某些特定于实例的数据与窗口相关联。您可以通过在注册窗口类时在cbWndExtra WNDCLASSEX成员中指定额外数据的大小来实现此目的。然后访问为GetWindowLongPtr传递SetWindowLongPtr0 nIndex的额外数据。该索引标识了存储实例数据的缓慢程度。