1。我在用appwizard自动生成了一个单文档程序,怎么显示一个右键弹出菜单啊,我试了一下,可是显示不出来,只显示出来我自己建立的菜单的边缘。程序如下:
void CMfcSDocView::OnRButtonDown(UINT nFlags, CPoint point)
{
CMenu menu;
menu.LoadMenu(IDR_MENU1);
CPoint pt;
GetCursorPos(&pt);
menu.TrackPopupMenu(TPM_RIGHTBUTTON, pt.x, pt.y, this);
menu.DestroyMenu();
CView::OnRButtonDown(nFlags, point);
}2。在上面这个命令处理函数中,point这个参数为什么是针对全屏幕的?如果屏幕不是全屏的,出现的位置就不对,只有自己得到当前的光标的位置,这样这个函数这个参数是不是就失去了它本身的意义?
void CMfcSDocView::OnRButtonDown(UINT nFlags, CPoint point)
{
CMenu menu;
menu.LoadMenu(IDR_MENU1);
CPoint pt;
GetCursorPos(&pt);
menu.TrackPopupMenu(TPM_RIGHTBUTTON, pt.x, pt.y, this);
menu.DestroyMenu();
CView::OnRButtonDown(nFlags, point);
}2。在上面这个命令处理函数中,point这个参数为什么是针对全屏幕的?如果屏幕不是全屏的,出现的位置就不对,只有自己得到当前的光标的位置,这样这个函数这个参数是不是就失去了它本身的意义?
menu.LoadMenu(IDR_MENU1);
CPoint pt;
GetCursorPos(&pt);
menu.GetSubMenu(0)->TrackPopupMenu(TPM_RIGHTBUTTON, pt.x, pt.y, this);
menu.DestroyMenu();
void youview::OnContextMenu(CWnd* pWnd, CPoint point)
{
CMenu pMenu1;
pMenu1.LoadMenu(IDR_MENU1); CMenu* pMenu = pMenu1.GetSubMenu(0);
//pMenu->AppendMenu(MF_POPUP,0,"aaa");
pMenu->TrackPopupMenu(TPM_RIGHTBUTTON,point.x,point.y,this);
}
menu.LoadMenu(IDR_MENU1);
CPoint pt;
GetCursorPos(&pt);
menu.GetSubMenu(0)->TrackPopupMenu(TPM_RIGHTBUTTON, pt.x, pt.y, this);
menu.DestroyMenu();可以的...绝对没问题...看看你的资源里有没有ID为IDR_MENU1的菜单
2。在上面这个命令处理函数中,point这个参数为什么是针对全屏幕的?如果屏幕不是全屏的,出现的位置就不对,只有自己得到当前的光标的位置,这样这个函数这个参数是不是就失去了它本身的意义?这个问题可用 ClientToScreen(&point);来解决
CMenu menu;
menu.LoadMenu(IDR_MENU1);
ClientToScreen(&point);
menu.GetSubMenu(0)->TrackPopupMenu(TPM_RIGHTBUTTON, point.x, point.y, this);
menu.DestroyMenu();
CView::OnRButtonDown(nFlags, point);
我再请问一个问题,那上下文菜单应该设置成什么形式,我试了一下,好像第一个弹出菜单的文本没有办法显示,只是显示了这个弹出菜单下面的弹出项而已。我想应该有标准的弹出菜单的设置方法的,请问是什么?是不是弹出菜单不应该写文本啊,只要下面弹出项就可以了,谢谢!
---------|
文件->,,,|
编辑->,,,|
帮助->...|
---------|