今天想了解下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构造函数里面添加下面一行代码解决问题。
1 m_bWindowOnly = TRUE;
ATL Activex 右击菜单,布布扣,bubuko.com
原文:http://www.cnblogs.com/shark-smart/p/3656069.html