重寫PreTranslateMessage(MSG* pMsg)遇到的問題--相應右鍵消息。隔一次響應一次,求解。

重載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);


暫時沒有完全分析清楚,先貼到這裏,希望高人講解機制。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章