首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VC >

鼠标右键菜单有关问题

2012-12-18 
鼠标右键菜单问题我只是想验证一下通过单击鼠标右键来弹出已经用ClassWized做好了的菜单IDR_MENU1(资源号)

鼠标右键菜单问题
我只是想验证一下通过单击鼠标右键来弹出已经用ClassWized做好了的菜单IDR_MENU1(资源号),我是直接在对话框类加入的OnContextMenu(CWnd* pWnd, CPoint point)这个函数。但是运行后,单击鼠标右键的时候,会出现错误:
错误出现在WINCORE.CPP里的红色部分:

BOOL CMenu::TrackPopupMenu(UINT nFlags, int x, int y,
CWnd* pWnd, LPCRECT lpRect)
{
ASSERT(m_hMenu != NULL);
_AFX_THREAD_STATE* pThreadState = AfxGetThreadState();
HWND hWndOld = pThreadState->m_hTrackingWindow;
HMENU hMenuOld = pThreadState->m_hTrackingMenu;
pThreadState->m_hTrackingWindow = pWnd->GetSafeHwnd();
pThreadState->m_hTrackingMenu = m_hMenu;
BOOL bOK = ::TrackPopupMenu(m_hMenu, nFlags, x, y, 0,
pThreadState->m_hTrackingWindow, lpRect);
pThreadState->m_hTrackingWindow = hWndOld;
pThreadState->m_hTrackingMenu = hMenuOld;

return bOK;
}
我写的函数如下:

void CMediaDlg::OnContextMenu(CWnd* pWnd, CPoint point) 
{
// TODO: Add your message handler code here
CMenu m_popMenu;    
m_popMenu.LoadMenu(IDR_MENU1);    
CMenu*  pSubMenu=m_popMenu.GetSubMenu(0)   
pSubMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON,point.x,point.y,this);
}

我自己在网上找了好久也没找到答案
我也是才学VC,有哪位好心人能帮我指点一下吗?
[最优解释]
m_hMenu为null。

你load的是m_popMenu。

[其他解释]



CMenu m_popMenu;    
ASSERT(m_popMenu.LoadMenu(IDR_MENU1));    

CMenu*  pSubMenu=m_popMenu.GetSubMenu(0);
ASSERT(pSubMenu!=NULL);  
pSubMenu->TrackPopupMenu(TPM_LEFTALIGN
[其他解释]
TPM_LEFTBUTTON,point.x,point.y,this);

热点排行