2013-02-10 76 views
0

我有一个弹出菜单,我想修改它之前显示。我实际上可以修改菜单项的字符串。问题是,这使得它无用,因为点击修改的菜单项时什么都不会发生。修改菜单项

CMenu* pPopup = menu.GetSubMenu(0); 
ASSERT(pPopup != NULL); 

CWnd* pWndPopupOwner = this; 
while(pWndPopupOwner->GetStyle() & WS_CHILD) 
    pWndPopupOwner = pWndPopupOwner->GetParent(); 

// modify string 
pPopup->ModifyMenu(1, MF_BYPOSITION | MF_STRING, NULL, oss.str().c_str()); 

pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, pWndPopupOwner); 

回答

0

您致电ModifyMenu将菜单的ID设置为零(通过第三个参数)。你需要保持这个ID相同。

如果这很尴尬,则可以使用SetMenuItemInfo API更改字符串而不更改ID。

+0

辉煌,谢谢。 – mnoergaard 2013-02-10 09:40:29