VC定制编辑框的上下文菜单

上下文菜单的应用在基于Windows的应用程序中使用得越来越广泛。本文针对WM_INITMENUPOPUP消息的处理机制谈谈如何在编辑框控制的上下文菜单上添加自己的菜单项。

刚开始的时候常常碰到一个问题,就是在编辑框上单击鼠标右键时,程序并不产生WM_INITMENUPOPUP消息,原因我也说不清楚,也没有找到说明这个问题的具体文档资料。每当我子类化编辑框控制向标准的上下文菜单添加自己的菜单项时(如图二),

图二

总是要碰到上面这样的问题。那么到底该如何使用WM_INITMENUPOPUP处理机制实现自己的上下文菜单呢?

通常的方法是为编辑框控制实现WM_INITMENUPOPUP的消息处理,但前面说过,编辑框控制不发送WM_INITMENUPOPUP。编辑控制一定是以空的HWND句柄或者TPM_NONOTIFY调用TrackPopupMenu,TPM_NONOTIFY的作用是要菜单不发送通知。也有可能——只是猜测——Windows(r)通过降低消息的通行量来改善性能。很难再回忆起当年Windows1.0和 Windows 2.0 运行在640kb/8MHZ的机器上的情形!(那时候编辑框控制有上下文菜单吗?谁还记得?)。

不管怎么说,如果想要添加自己的菜单项到编辑框控制的上下文菜单。如何做呢?唉,是不是除了自己发明外就别无选择了呢?天无绝人之路,本文将为你提供一个小类:CEitMenuHandler,有了它的话,一切都搞掂。你只要使用它就行了。为了显示这个类的用法,我用以前的一个例子程序,将其中的编译框控制修改了一下,在它的上下文菜单中写进了三种文件类型的菜单项,见图三。


图三

时间: 2024-08-29 08:16:05

VC定制编辑框的上下文菜单的相关文章

Shell扩展:定制上下文菜单

如若需要获取某个选定文件的完整路径,小弟经常机械性地先复制Shell窗口 中的路径,紧接着复制文件名并拼在路径之后.有时候复制文件路径是为了程序使 用,这就必须将路径中的所有"\"换成"\\",总之一切都是 很无聊的操作.还好我是个程序员,完全可以定制一些程序来方便自己.在此分享 给大家. 程序实现的功能很明确:在Shell的上下文菜单中加入一菜单项目"获取 文件路径并保存到剪贴板",点击此项可以将选中的一个或多个文件的完整 路径保存到剪贴板中.

c语言-VC++6.0如何去掉Edit编辑框内初始状态出现的0!

问题描述 VC++6.0如何去掉Edit编辑框内初始状态出现的0! 最近在做一个计算器MFC,输出结果的Edit编辑框初始状态总有一个0,怎么去掉0?请高手指导!谢谢~! 解决方案 不要绑定float型,可以绑定为CString,默认设置为空,通过atof转换:或者直接通过setdlgitemtext设置edit框内容. 解决方案二: 要看你的代码.默认情况下编辑框没有内容.你的程序肯定有代码逻辑设置了它. 解决方案三: 或者说将其设为控件类型通过API函数去给他设定值就可以了. 解决方案四:

vc60-怎么设置vc编辑框只允许输入不能复制

问题描述 怎么设置vc编辑框只允许输入不能复制 准备做一个密码验证的界面,需要输入两次密码,但编辑框不允许复制内容,只能手输两次密码~~怎么设置编辑框只允许输入不能复制? 解决方案 有输入框的密码样式,用那个就可以

vc++6.0mfc-vc++6.0如何实现在模态对话框编辑框中输入数据,单击确定按钮将数据添加到组合框按钮中!

问题描述 vc++6.0如何实现在模态对话框编辑框中输入数据,单击确定按钮将数据添加到组合框按钮中! vc++6.0如何实现在模态对话框编辑框中输入数据,单击确定按钮将数据添加到组合框按钮中!我'是个新手,请求详解! 解决方案 添加编辑框,组合框 ctrl+w映射两个成员变量,一个对应编辑框(比如m_edit1),一个对应组合框(比如m_combo1),添加一个按钮. 双击按钮,编写 UpdateData(true); m_combo1.AddString(m_edit1); 解决方案二: 大神

vc++6.0如何实现基于对话框模态对话框中编辑框的内容显示在主对话框静态文本中?

问题描述 vc++6.0如何实现基于对话框模态对话框中编辑框的内容显示在主对话框静态文本中? vc++6.0基于对话框如何实现在模态对话框中输入一个数,然后点击确定按钮将编辑框中的数值显示在主对话框的静态文本中.(注:静态文本的默认值为10)求具体步骤和代码! 解决方案 模式对话框 class CSubDlg : public CDialogEx { ... public: int num; //定义一个成员变量 }; //对话框初始化函数 BOOL CSubDlg::OnInitDialog(

VC++:选择组合框中的条件实现对access数据库文件的自动查询并显示到编辑框中

问题描述 VC++:选择组合框中的条件实现对access数据库文件的自动查询并显示到编辑框中 请教下大家:如标题 当鼠标选择组合框下拉列表中的条件时,自动根据下拉框条件查询ACCES数据库中的数据,并将查询的结果显示到编辑框中去,谢谢! 解决方案 http://blog.csdn.net/wenluderen/article/details/39029649 解决方案二: http://blog.csdn.net/yunqi415/article/details/6963720

Ribbon编辑框如何改变显示内容(VC++2010 MFC Ribbon)?

问题描述 在程序运行过程中如何改变Ribbon编辑框现实的内容?该Ribbon编辑框的事件处理函数OnUpdateRibbonEdit(CCmdUI*pCmdUI){pCmdUI->Enable(true);pCmdUI->SetText(L"显示内容");}//正常显示为:显示内容//只要我将样式改为Windows7(D)后显示为:显示内容显示内容前一个为caption,后一个为text;我很无语啊,用Ribbon开发的人比较少,参考资料更少了,哪位大虾能帮个忙?最好您能

VC++通过选择组合框条件自动查询数据库,并将查询结果显示到编辑框

问题描述 VC++通过选择组合框条件自动查询数据库,并将查询结果显示到编辑框 问题如标题,目前编写代码如下,但选择组合框条件后没反应 代码如下,诚盼大家指教,我是编程爱好者,为自己做需,谢谢!: CShiYinShaSet rs; UpdateData(); CString strSQL; //ShiYinSha:数据库中表名: //PiCi:表中列名: //Si_Pi:组合框ID变量,CString Si_Pi strSQL.Format("select * from ShiYinSha wh

vc++6.0-VC++6.0如何实现按向上箭头焦点移动到上一个编辑框?

问题描述 VC++6.0如何实现按向上箭头焦点移动到上一个编辑框? VC++6.0基于对话框如何实现按向上箭头焦点移动到上一个编辑框,连续按连续移动?