菜单项不能变灰的问题
zufei 2009-12-18 09:44:53 该弹出菜单不能根据条件来使菜单变灰!
void CMainFrame::OnRclickTree(NMHDR* pNMHDR, LRESULT* pResult) //树表项右键单击处理函数
{
if(m_wndTree.GetCount() && m_wndTree.GetSelectedItem())
{
CMenu xpMenu;
POINT point;
GetCursorPos(&point);
VERIFY(xpMenu.LoadMenu(IDR_MENU_DOC)); //这里是在菜单资源做的
CMenu *menu=(CMenu*)xpMenu.GetSubMenu(0);
UINT nEnable;
HTREEITEM hItem=m_wndTree.GetSelectedItem();
int nIsDoc=m_wndTree.GetItemData(hItem);
if(nIsDoc!=-1) //根据这个条件来激活菜单项
{
nEnable = MF_BYCOMMAND | MF_ENABLED;
}
else
{
nEnable = MF_BYCOMMAND | MF_GRAYED;
}
menu->EnableMenuItem(ID_MENU_OPEN, nEnable); //问题是,这堆都无反应!不能变灰色
menu->EnableMenuItem(ID_MENU_ADD, nEnable);
menu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,this, NULL);
xpMenu.DestroyMenu();
}
*pResult = 0;
}