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 谢谢!已经可以!
大约一年之前 回复
caozhy
caozhy   Ds   Rxr 2016.09.19 09:47

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

tianxiezhi
tianxiezhi 谢谢!可否详细一些呢?初学者!我获取右键菜单的代码如下:
大约一年之前 回复
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: ...是,我看错需求了。。。我以为是要把控件上的字符显示到菜单上面
大约一年之前 回复
tianxiezhi
tianxiezhi 代码GetDlgItem(IDC_Check/*这个地方填你需要获取名字的IDC*/)->GetWindowTextW(str);//add可以获得字符串,下面的代码无法修改字符串
大约一年之前 回复
tianxiezhi
tianxiezhi 初步尝试了下,右键选了菜单没有反应,即原复选按钮文字没有被修改,可否有更好的方法,谢谢!
大约一年之前 回复
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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!