如何在下拉菜单的某项上右击鼠标键弹出一新的弹出菜单? 实例:windows 开始菜单-〉在其中的某个菜单项上右击鼠标键,会弹出一个新的上下文菜单;而且有的菜单项可以,有的不可以,请问如何做到这点? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 pContexMenu=new Cmenu;if(!pContextMenu) return -1;BOOL bOK =pContextMenu->Load(IDR_CONTEXT);if(!bOK) return -1; 不明白,我再说得具体点:新建一个单文档视图结构的应用程序;在主菜单里添加一个新的菜单项Test(为popup类型),为其增加两个子下拉菜单,Test1和Test2;再新建一个菜单IDR_MENU1;为其添加两个子菜单项Sub1,Sub2;再新建一个菜单IDR_MENU2;为其添加两个子菜单项Sub3,Sub4;程序运行时,我想在右键单击Test-〉Test1时会弹出IDR_MENU1;程序运行时,我想在右键单击Test-〉Test2时会弹出IDR_MENU2;该如何处理呢?我原先想响应WM_CONTEXTMENU消息如下:void CTest05102View::OnContextMenu(CWnd* /*pWnd*/, CPoint /*point*/){ // TODO: Add your message handler code here //* CMenu* pMenu = new CMenu; pMenu->LoadMenu( IDR_MENU1 ); CMenu* pMenu1; pMenu1 = pMenu->GetSubMenu( 0 ); CPoint point1; GetCursorPos( &point1 ); pMenu1->TrackPopupMenu( TPM_RIGHTBUTTON, point1.x, point1.y, this ); //*/}但该函数只响应键盘上的快捷键; 我有两个思路:其一:响应WM_MENURBUTTONUP消息,可惜我不会;MFC消息映射中好像不支持该消息;其二:响应WM_NCRBUTTONDOWN消息,可是我试了一下,在下拉菜单上右击鼠标并不响应;毛病可能出在消息的传递路径上,遗憾的是我这方面的功夫不行,MFC的幕后工作知之甚少;高手们请指点一下。 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/Resources/Menus/MenuReference/MenuMessages/WM_MENURBUTTONUP.asp TO BinaryPoet:你提供的这个链接是WM_MENURBUTTONUP的帮助吧,我已经看过它了,光那两句好像不太好使, 我搞定了!只要作如下定义#define WM_MENURBUTTONUP 0x0122就行了!是不是要谢谢我? 咱俩想到一块了,我昨天查了一下winuser.h,发现似乎由于版本的问题而使得WM_MENURBUTTONUP没被定义,可是我自己在mainfrm.cpp中定义了还是不好使嘛,待会儿我试一下,如果好使,定当重谢,以分鼓励;另外我的邮箱[email protected]欢迎把你的测试代码发给我 多谢,是很好使,咱俩可以再讨论一个问题,在winuser.h中有如下定义:...#if(WINVER >= 0x0500)#ifndef _WIN32_WCE#define WM_MENURBUTTONUP 0x0122#define WM_MENUDRAG 0x0123#define WM_MENUGETOBJECT 0x0124#define WM_UNINITMENUPOPUP 0x0125#define WM_MENUCOMMAND 0x0126...问题应该出在这里,这是win98以后才支持的消息,可是我在winxp+visual studio.net上为什么不支持呢?如果不重新定义该消息,通过比如设定系统默认的消息过滤路径等方法可否达到同样目的呢?如SetEventMask() MFC 实现一个登陆界面两个窗体,可以实现吗?怎么实现? 有没有能编译mfc的绿色版编译器 Socket通讯的问题,常年在线等! 两个独立的应用程序,每个程序都对一张表编辑,一个程序编辑表后在切换到另一个程序时会实时得到编辑的数据。 InstallShield程序打包文件时候出错,请问是什么原因? 问:国内目前最牛的软件企业是那一家啊????用的什么开发工具??? 关于两个时间之差的问题 请教! 这个是什么东东,帮忙看看,谢谢 怎么在程序中修改资源,例如我要修改对话框为IDD_DIALOG的left,right.等等. 请教高手,关于FILETIME winsock编程的小问题
if(!pContextMenu)
return -1;
BOOL bOK =pContextMenu->Load(IDR_CONTEXT);
if(!bOK)
return -1;
新建一个单文档视图结构的应用程序;
在主菜单里添加一个新的菜单项Test(为popup类型),为其增加两个子下拉菜单,Test1和Test2;
再新建一个菜单IDR_MENU1;为其添加两个子菜单项Sub1,Sub2;
再新建一个菜单IDR_MENU2;为其添加两个子菜单项Sub3,Sub4;程序运行时,我想在右键单击Test-〉Test1时会弹出IDR_MENU1;
程序运行时,我想在右键单击Test-〉Test2时会弹出IDR_MENU2;
该如何处理呢?
我原先想响应WM_CONTEXTMENU消息如下:
void CTest05102View::OnContextMenu(CWnd* /*pWnd*/, CPoint /*point*/)
{
// TODO: Add your message handler code here
//*
CMenu* pMenu = new CMenu;
pMenu->LoadMenu( IDR_MENU1 );
CMenu* pMenu1;
pMenu1 = pMenu->GetSubMenu( 0 ); CPoint point1;
GetCursorPos( &point1 );
pMenu1->TrackPopupMenu( TPM_RIGHTBUTTON, point1.x, point1.y, this );
//*/
}
但该函数只响应键盘上的快捷键;
其一:响应WM_MENURBUTTONUP消息,可惜我不会;MFC消息映射中好像不支持该消息;
其二:响应WM_NCRBUTTONDOWN消息,可是我试了一下,在下拉菜单上右击鼠标并不响应;毛病可能出在消息的传递路径上,遗憾的是我这方面的功夫不行,MFC的幕后工作知之甚少;
高手们请指点一下。
你提供的这个链接是WM_MENURBUTTONUP的帮助吧,
我已经看过它了,光那两句好像不太好使,
#define WM_MENURBUTTONUP 0x0122
就行了!是不是要谢谢我?
另外我的邮箱[email protected]
欢迎把你的测试代码发给我
在winuser.h中有如下定义:
.
.
.
#if(WINVER >= 0x0500)
#ifndef _WIN32_WCE
#define WM_MENURBUTTONUP 0x0122
#define WM_MENUDRAG 0x0123
#define WM_MENUGETOBJECT 0x0124
#define WM_UNINITMENUPOPUP 0x0125
#define WM_MENUCOMMAND 0x0126
.
.
.
问题应该出在这里,这是win98以后才支持的消息,可是我在winxp+visual studio.net上为什么不支持呢?
如果不重新定义该消息,通过比如设定系统默认的消息过滤路径等方法可否达到同样目的呢?
如SetEventMask()