重載PreTranslateMessage函數用於相應右鍵,並彈出預定義好的Menu
我的界面上有CTreeCtrl和CListCtrl,在CListCtrl和CTreeCtrl上點擊右鍵第一次彈出菜單,第二次菜單消失。
出問題的代碼如下
if(WM_RBUTTONDOWN==pMsg->message)
{
DWORD dwPos = GetMessagePos();
CPoint point(LOWORD(dwPos), HIWORD(dwPos));
CMenu menu;
VERIFY(menu.LoadMenu(IDR_RCLKMENU));
CMenu *popup=menu.GetSubMenu(0);
ASSERT(popup!=NULL);
popup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);
}
return CDialogEx::PreTranslateMessage(pMsg);
修正後的代碼如下:
if(WM_RBUTTONDOWN==pMsg->message)
{
DWORD dwPos = GetMessagePos();
CPoint point(LOWORD(dwPos), HIWORD(dwPos));
CMenu menu;
VERIFY(menu.LoadMenu(IDR_RCLKMENU));
CMenu *popup=menu.GetSubMenu(0);
ASSERT(popup!=NULL);
popup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);
return true; // Big Qu
}
return CDialogEx::PreTranslateMessage(pMsg);
暫時沒有完全分析清楚,先貼到這裏,希望高人講解機制。