请教下大家,问题如标题:
1.在复选按钮上点右键显示右键菜单已完成;
2.选中右键菜单文字,让其显示在复选按钮上,就是我的问题
将按钮上的“Check2”通过右键菜单显示为“文字1”
谢谢!
到菜单中点击文字2右键,选择添加事件处理程序,这个添加的函数会在你鼠标左键单击文字二后调用
添加事件处理程序
可以修改函数名,类列表里选择工程名+Dlg的那个,即你要实现这个函数的类
然后在函数里面添加修个语句即可,我这里用的是最简单的办法,看看你自己有什么具体的要求没有,没有就这样也行
setwindowtext(你的checkbox的句柄, 需要设置的文字)
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);
}
你用这个试试看,应该可以给你点思路
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);
}