2 tianxiezhi tianxiezhi 于 2016.09.19 07:41 提问

C++按钮创建鼠标右键菜单后,选择右键菜单项后如何将选中的文字更新为按钮的文字?

请教下大家,问题如标题:
1.在复选按钮上点右键显示右键菜单已完成;
2.选中右键菜单文字,让其显示在复选按钮上,就是我的问题
将按钮上的“Check2”通过右键菜单显示为“文字1”
图片说明
谢谢!

4个回答

qq_27587417
qq_27587417   2016.09.20 08:33
已采纳

到菜单中点击文字2右键,选择添加事件处理程序,这个添加的函数会在你鼠标左键单击文字二后调用
添加事件处理程序
图片说明
可以修改函数名,类列表里选择工程名+Dlg的那个,即你要实现这个函数的类
图片说明
然后在函数里面添加修个语句即可,我这里用的是最简单的办法,看看你自己有什么具体的要求没有,没有就这样也行
图片说明

tianxiezhi
tianxiezhi 谢谢!已经可以!
接近 2 年之前 回复
caozhy
caozhy   Ds   Rxr 2016.09.19 09:47

setwindowtext(你的checkbox的句柄, 需要设置的文字)

tianxiezhi
tianxiezhi 谢谢!可否详细一些呢?初学者!我获取右键菜单的代码如下:
接近 2 年之前 回复
qq_27587417
qq_27587417   2016.09.19 14:00

你用这个试试看,应该可以给你点思路

 if (rect.PtInRect(point)) //右击点在指定控件上
    {
        CMenu menu;//弹出菜单
        VERIFY(menu.LoadMenu(IDR_MENU1));//
        CMenu* pPopup = menu.GetSubMenu(0);
        ASSERT(pPopup != NULL);
        CWnd* pWndPopupOwner = this;
        CString str;//add
        GetDlgItem(IDC_Check/*这个地方填你需要获取名字的IDC*/)->GetWindowTextW(str);//add
        pPopup->ModifyMenuW(0,MF_BYPOSITION, NULL, str);//add

        while (pWndPopupOwner->GetStyle() & WS_CHILD)
            pWndPopupOwner = pWndPopupOwner->GetParent();


        pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, point.x, point.y, this);  

    }
qq_27587417
qq_27587417 回复tianxiezhi: ...是,我看错需求了。。。我以为是要把控件上的字符显示到菜单上面
接近 2 年之前 回复
tianxiezhi
tianxiezhi 代码GetDlgItem(IDC_Check/*这个地方填你需要获取名字的IDC*/)->GetWindowTextW(str);//add可以获得字符串,下面的代码无法修改字符串
接近 2 年之前 回复
tianxiezhi
tianxiezhi 初步尝试了下,右键选了菜单没有反应,即原复选按钮文字没有被修改,可否有更好的方法,谢谢!
接近 2 年之前 回复
tianxiezhi
tianxiezhi   2016.09.19 10:24

GetDlgItem(IDC_YuanSi)->GetWindowRect(&rect); //控件ID
if (rect.PtInRect(point)) //右击点在指定控件上
{
CMenu menu;//弹出菜单
VERIFY(menu.LoadMenu(IDR_MENU1));//

        CMenu* pPopup = menu.GetSubMenu(0);
        ASSERT(pPopup != NULL);
        CWnd* pWndPopupOwner = this;

        while (pWndPopupOwner->GetStyle() & WS_CHILD)
            pWndPopupOwner = pWndPopupOwner->GetParent();


        pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, point.x, point.y, this);  
    }
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
js防止点击右键产生菜单,不让选择文字
在这样便好,记得是返回false,不是值为false。
QML实现Label的文字选择与右键各操作
在QML中,原生的Label是不能够进行鼠标的选中,复制,全选等操作的,仅仅只能用于简单的展示文字,但是在实际开发中,往往我们需要给用户展示一些信息,而且要支持可以用鼠标进行选择文字,并进行复制操作,所以,用QML中的Label控件显然是不行的,因此考虑重写控件实现以上功能: import QtQuick 2.2 import QtQuick.Controls 1.2 Rectangle {
VB实现右键扩展菜单以及按钮触发扩展菜单功能
开发全自动液体工作站的过程,需要用到点击扩展菜单功能,经过摸索终于实现了一个Demo,现分享出来。 1、扩展菜单大致原理:利用PopUpMenu功能,事先做好扩展菜单以及子菜单,设置为隐藏属性,通过一定条件触发显示。 2、源码如下,供参考。 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
右键禁用、防止文字选中 、返回选中的文本
event事件参考:  http://www.mangguo.org/8-jquery-tip-and-trick/ http://bbs.blueidea.com/forum.php?mod=viewthread&tid=273549 1  右键菜单的禁用: 网上有几种方法: 1. document.oncontextmenu = new Function("return
在WPF中弹出右键菜单时判断鼠标是否选中该项
和上篇在WPF的TreeView中实现右键选定一样,这仍然是一个右键菜单的问题: 这个需求是在一个实现剪贴板的功能的时候遇到的:在弹出右键菜单时,如果菜单弹出位置在ListViewItem中时,我们认为这项已经被选中,可以使用剪贴板功能。   当菜单弹出位置在ListView的空白处时,我们一般认为没有项被选中,此时是不应该使能剪贴板功能的。  
在 Windows 的右键菜单中增加选项
(原创文章,未经作者许可,不得擅自删除本声明或更改文章内容,转载请注明出处。)在FreeBSD、Linux等操作系统的X环境下,有一项功能大家一定非常熟悉,就是在文件浏览器中能通过点击右键,在弹出的菜单中随时打开命令行终端,然后输入命令进行一系列需要的操作。通过更改注册表,我们同样可以在Windows中实现这一功能,同时还能将许多便捷的操作也放到右键菜单中,以下是我的系统中增加的三个命令:“在
TortoiseSVN安装后添加到鼠标右键菜单
TortoiseSVN 是 Subversion 版本控制系统的一个免费开源客户端。但是下载(百度即可)对应的版本安装完成后,发现鼠标的右键找不到TortoiseSVN的菜单,折腾了一番之后,最终在官网上找到了合理的解释: 从上面的信息可以看出,对于64位的操作系统,如果想要在鼠标右键显示Tortoise的context menu(32位),需要安装vc_redist.x86.e
css样式设置鼠标选中后字体颜色以及背景颜色
做后台的要涉及前台我也是醉了 一个不是那么众所周知的技术就是我们可以在浏览器里美化被选择的文字的样式。Windows自身提供的是一种很难看的墨绿色的颜色,而苹果电脑上提供的是浅绿色。火狐浏览器,IE9,Opera和谷歌浏览器允许我们自定义被选择文字的颜色。让我来展示给你看: css示例代码: /* webkit, opera, IE9 */ ::selection { backgr
RichEdit选中文字右键菜单的实现
procedure TForm1.RichEdit1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);var vPoint: TPoint;begin if Button mbRight then Exit; vPoint := Point(X, Y)
Qt学习之QPushButton添加右键菜单
Qt学习之QPushButton添加右键菜单