insertMenuItem()中uItem参数的用途是什么?

时间:2014-11-07 06:13:54

标签: c++ winapi

这就是InsertMenuItem()文档所说的:

uItem [in]

    Type: UINT

    The identifier or position of the menu item before which to insert the new item. The meaning of this parameter depends on the value of fByPosition.

但那么MENUITEMINFO.wID的目的是什么?

wID

    Type: UINT

    An application-defined value that identifies the menu item. Set fMask to MIIM_ID to use wID.

请注意,我测试了两个参数,只有wID有效!

1 个答案:

答案 0 :(得分:1)

  

但那么MENUITEMINFO.wID的目的是什么?

uItem控制插入新菜单项的位置wID控制新菜单项的 ID

假设您有一个包含3个项目的菜单,标识为IDM_FOOIDM_BARIDM_BAZ。现在假设您要在IDM_QUUXIDM_FOO项目之间的菜单中插入标识为IDM_BAR的第4项。您可以使用InsertMenuItem()IDM_BAR之前(使用fByPosition == FALSE)或在索引1之前(使用fByPosition == TRUE)插入它。例如:

MENUITEMINFO mii;
ZeroMemory(&mii, sizeof(mii));
mii.cbSize = sizeof(mii);
mii.fMask = MIIM_ID | /* Other flags */;
mii.wID = IDM_QUUX;  // ID of new menu item to be inserted
// Fill out other fields
... 
// Insert new menu item before the IDM_BAR item
InsertMenuItem(hMenuParent, IDM_BAR, FALSE, &mii);
...
// OR, insert new menu item before position 1
InsertMenuItem(hMenuParent, 1, TRUE, &mii);

至于这个评论:

  

请注意,我测试了两个参数,只有wID有效!

你必须澄清你的意思"只有wID有效。"工作怎么样?你究竟做了什么,发生了什么,你期望发生什么?请务必仔细阅读文档,以了解功能和结构的工作原理。