请问 :在Ocx组件里 用TrackPopupMenu 不能显示弹出菜单
网页调用组件,在有的网页显示出得来,在有的网页不能显示出来。 --------------------编程问答-------------------- 在xp 上 弹出菜单显示的出来,在win2008上不能显示弹出菜单,iSelection 总是返回0
void CWebSignCtrlCtrl::DoRightClick()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CMenu m_popmenu;
m_popmenu.LoadMenu(IDR_MENU1);
if (m_Lock=="1") {
m_popmenu.GetSubMenu(0)->ModifyMenu(ID_0_LOCK, MF_BYCOMMAND|MF_STRING, ID_0_LOCK, "解除锁定");
}
int iSelection = ::TrackPopupMenu(m_popmenu.GetSubMenu(0)->m_hMenu,TPM_LEFTALIGN|TPM_RETURNCMD,pMouse.x,pMouse.y,0,hWnd,NULL);
LRESULT lr = ::SendMessage(hWnd, WM_COMMAND, iSelection, (LPARAM)this);
}
--------------------编程问答-------------------- 看看和下面的情况是否有关联
http://forums.devx.com/showthread.php?t=136075
--------------------编程问答-------------------- http://www.windows-devel.com/windev.htm
Why doesn't my Context Menu dismiss properly when I click elsewhere ? [Context Menu, TrackPopupMenu(), Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
21.
Why doesn't my Context Menu dismiss properly when I click elsewhere ?
This is a known problem with TrackPopupMenu(). The cure is simple,
though somewhat obscure. Immediately before you call TrackPopupMenu, make a
call to SetForegroundWindow for your menu's owner window. Then immediately
after the call to TrackPopupMenu, post the same window a WM_NULL message.
Bizarre, but it works. Look at this sample code:
HMENU hQuick = ::GetSubMenu (m_hUtility, IDM_QUICK);
POINT CurPos ;
GetCursorPos (&CurPos);
SetForegroundWindow (); // Bodge
TrackPopupMenu (hQuick,
TPM_LEFTBUTTON,
CurPos.x,
CurPos.y,
0,
GetSafeHwnd(),
NULL);
PostMessage (WM_NULL, 0, 0); // Bodge
补充:.NET技术 , VC.NET