社区
界面
帖子详情
VC如何实现右键显示菜单
hzr_hope
2005-01-13 02:51:17
VC如何实现右键显示菜单
...全文
609
8
打赏
收藏
VC如何实现右键显示菜单
VC如何实现右键显示菜单
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
aoosang
2005-01-13
打赏
举报
回复
代码中包含了中文方式输入的字符
chuanke
2005-01-13
打赏
举报
回复
怎么老比别人后发!
chuanke
2005-01-13
打赏
举报
回复
汉,怎么反映这么慢!
===============================
unknown character '0xa1'
有VC不认识的字符
kugou123
2005-01-13
打赏
举报
回复
看看你的代码中是不是包含了中文方式输入的字符。比如逗号,分号之类的。。。
chuanke
2005-01-13
打赏
举报
回复
路过
hzr_hope
2005-01-13
打赏
举报
回复
E:\hzr\project\Demo\DemoDlg.cpp(209) : error C2018: unknown character '0xa1'
E:\hzr\project\Demo\DemoDlg.cpp(209) : error C2018: unknown character '0xa1'
E:\hzr\project\Demo\DemoDlg.cpp(209) : error C2018: unknown character '0xa1'
E:\hzr\project\Demo\DemoDlg.cpp(209) : error C2018: unknown character '0xa1'
为什么会出现这个错误??
kugou123
2005-01-13
打赏
举报
回复
一、在资源编辑器中建立一个菜单资源
新建一个菜单资源,比如把菜单的ID号为IDC_POPMENU。此菜单有一项两层,即有一个可弹出的菜单项,而此菜单项的弹出内容即为将要建立的弹出式菜单的内容。至于每一个菜单项的消息映射,与一般的菜单相同。
二、使用CMenu类对象
CMenu类的成员函数较多,但建立弹出式菜单只需用到其中几个成员函数。
1、LoadMenu函数
功能:从应用程序的可执行文件中加载菜单资源
原型:BOOL LoadMenu( UINT nIDResource );
其中nIDResource是菜单资源的ID号,这里用的是刚建立的IDC_POPMENU。
2、GetSubMenu函数
功能:此函数用于得到子菜单的指针。
原型:CMenu* GetSubMenu( int nPos ) const;
nPos为层数,0为第一层子菜单……以此类推。
由于我们需要的是“可弹出项”的第一层子菜单,因此用GetSubMenu(0)来得到第一层子菜单的类指针。
3、TrackPopupMenu函数
功能:在指定位置显示弹出菜单,并跟踪所选择的项
原型:BOOL TrackPopupMenu( UINT nFlags,int x,int y,CWnd* pWnd,LPCRECT lpRect = NULL );
其中:
nFlags为屏幕坐标属性和鼠标坐标属性
屏幕坐标属性:
TPM_CENTERALIGN 横向将菜单以x居中
TPM_LEFTALIGN 横向将菜单以x左对齐
TPM_RIGHTALIGN 横向将菜单以x右对齐
鼠标按键属性(只在响应WM_CONTEXTMENU消息时有效):
TPM_LEFTBUTTON 连续按? 右键不会连续弹出菜单,鼠标右键不可用于选定菜单项
TPM_RIGHTBUTTON 连续按鼠标右键会连续弹出菜单,鼠标右键可用于选定菜单项
x,y均为屏幕坐标
lpRect 菜单所占的区域。如果为NULL,当用户在菜单以外的区域按鼠标键时,菜单会消失
三、具体实现方法
用ClassWizard中的“Add Windows Message Handler”功能添加对NM_RCLICKT消息的响应函数,函数中代码如下,注释很详细,在vc6+win2000环境下调试成功:
void CMyView::OnRclick(NMHDR* pNMHDR, LRESULT* pResult)
{
CListCtrl &CList = GetListCtrl();//获取当前列表控件的指针
CMenu menu ,* pSubMenu;//定义下面要用到的cmenu对象
menu.LoadMenu(IDR_POPMENU);//装载自定义的右键菜单
pSubMenu = menu.GetSubMenu(0);//获取第一个弹出菜单,所以第一个菜单必须有子菜单
CPoint oPoint;//定义一个用于确定光标位置的位置
GetCursorPos( &oPoint);//获取当前光标的位置,以便使得菜单可以跟随光标
int istat=CList.GetSelectionMark();//用istat存放当前选定的是第几项
CString pString =CList.GetItemText(istat,0);//获取当前项中的数据,0代表是第0列
pString="您选择的路径是:"+pString ;//显示当前选择项
MessageBox(pString);//显示当前选中的路径
pSubMenu->TrackPopupMenu (TPM_LEFTALIGN, oPoint.x, oPoint.y, this); //在指定位置显示弹出菜单
}
frank_yufu
2005-01-13
打赏
举报
回复
添加右键消息,在处理函数中用LoadMenu,具体做法网上例子很多。
MultiSelectMenu_
vc
6
右键
菜单
_
`MultiSelectMenu_
vc
6`是一个示例项目,展示了如何
实现
一个支持多选的
右键
菜单
。这对于提高用户交互性和效率至关重要,特别是对于需要大量操作选项的软件。下面我们将深入探讨如何在
VC
6中创建和
实现
这样的
右键
菜单
。...
VC
6.0
实现
动态
右键
菜单
本教程将深入探讨如何使用Visual C++ 6.0(简称
VC
6.0)来
实现
动态
右键
菜单
的功能。 首先,我们需要了解Windows消息处理机制。在Windows程序中,用户的所有操作,包括鼠标点击,都会生成相应的消息。当用户在窗口上...
VC
++在系统
右键
菜单
中添加自定义
菜单
项
首先,我们要理解系统
右键
菜单
的
实现
原理。Windows操作系统使用注册表来存储
右键
菜单
的相关信息,特别是在`HKEY_CLASSES_ROOT`或`HKEY_CURRENT_USER\Software\Classes`下的键值。我们需要在这些位置添加新的子键和值...
修复TortoiseSVN鼠标
右键
菜单
不
显示
当遇到“TortoiseSVN鼠标
右键
菜单
不
显示
”的问题时,这通常是由于系统环境与TortoiseSVN的兼容性问题,或者是某些系统设置或软件冲突导致的。以下是一些可能的原因和解决方法: 1. **系统兼容性**:确保您的...
vc
关于窗口的list
实现
右键
菜单
在
VC
++编程环境中,创建和
实现
窗口的
右键
菜单
是一项常用的功能,特别是在开发用户界面时。
右键
菜单
为用户提供了一...通过阅读"
VC
右键
菜单
的
实现
.txt"文件,可以获取更详细的代码
实现
和注释,帮助你更好地理解这个过程。
界面
15,976
社区成员
115,866
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章