今天在開發羣裏又有人問到ppc上如何長按彈出快捷菜單。
與windows不同的是,ppc並不依靠響應WM_RBUTTONDOWN消息來實現,而是在WM_LBUTTONDOWN來處理。說來也不奇怪,ppc上根本就沒有右鍵。
以下是正確的代碼:
......
case WM_LBUTTONDOWN:
{
SHRGINFO shrg;
shrg.cbSize = sizeof(shrg);
shrg.hwndClient = m_hWnd;
shrg.ptDown.x = LOWORD(lParam);
shrg.ptDown.y = HIWORD(lParam);
shrg.dwFlags = SHRG_RETURNCMD;
CPoint point;
point.x = shrg.ptDown.x;
point.y = shrg.ptDown.y;
if(::SHRecognizeGesture(&shrg) == GN_CONTEXTMENU)//長按鍵消息
{
CMenu menu;
menu.LoadMenu(IDR_MENU_DOWN);
CMenu *pPopupMenu = menu.GetSubMenu(0);
ClientToScreen(&point);
pPopupMenu->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);
}
}
......