2013-02-10 85 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