今天想了解下ATL 的acitvex基本開發,實現了基本的js調用裏面的方法,後來添加了右鍵菜單代碼以下函數
1 LRESULT CClassName::OnRButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) 2 { 3 // TODO: 在此添加消息處理程序代碼和/或調用默認值 4 HMENU hMenu; 5 hMenu=CreatePopupMenu(); 6 AppendMenu(hMenu, MF_STRING, 1, L"test1"); 7 AppendMenu(hMenu, MF_STRING, 2, L"test2"); 8 POINT ptDown; 9 GetCursorPos(&ptDown); 10 TrackPopupMenu(hMenu,TPM_TOPALIGN | TPM_RETURNCMD,ptDown.x,ptDown.y,NULL,m_hWnd,NULL); 11 return 0; 12 }
結果菜單就是彈不出來,,,調試發現是m_hWnd句柄爲NULL致使。
小弟不才使用了下面2種解決方法:
1.從新獲取下m_hWnd.
2.在CClassName構造函數裏面添加下面一行代碼解決問題。spa
1 m_bWindowOnly = TRUE;