菜单打勾 的问题 对话框的三个一般菜单,随时有且只能有一个被选中(打勾),并可以点取进行切换,如何实现.应该挺简单,但花了我挺长时间了代码说明,最好有例子 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 响应UPDATE_COMMAND_UI用pCmdUI->SetCheck(1);就可以打上勾了 不过在对话框中,你要自己在空闲事后处理菜单自绘消息在OnKickIdle中添加如下语句UpdateDialogControls(this, FALSE); CMenu* pMainMenu = GetMenu(); CCmdUI cmdUI; // update menu enable/disable state for (UINT n = 0; n < pMainMenu->GetMenuItemCount(); ++n) { CMenu* pSubMenu = pMainMenu->GetSubMenu(n); cmdUI.m_nIndexMax = pSubMenu->GetMenuItemCount(); for (UINT i = 0; i < cmdUI.m_nIndexMax;++i) { cmdUI.m_nIndex = i; cmdUI.m_nID = pSubMenu->GetMenuItemID(i); cmdUI.m_pMenu = pSubMenu; cmdUI.DoUpdate(this, FALSE); } } return Default(); TO stevecrisewu(月亮骑士) OnKickIdle 是什么,如何添加? 楼主的意思是不是用radio方式?可以用函数CheckRadioMenuItem。不过需要设置若干个menuitem为radio类型(MFT_RADIOCHECK)可以用SetMenuItemInfo bool bMemu1 = TRUE , bMemu2 = FALSE, bMenu3 = FALSE;用三个变量控制菜单是否打勾在每个菜单的UPDATE_COMMAND_UI消息相应函数中用pCmdUI->SetCheck(bMenu*);控制在每个菜单的单机消息中,修改控制变量bMenu1,bMenu2, bMenu3的值 实际上我用过pCmdUI->SetCheck(1)的方式,但是在对话框中好象不起作用,点了后了不打勾.谁知道如何解决?可能是stevecrisewu(月亮骑士) 说的那样,但不知道OnKickIdle是什么.........不过在对话框中,你要自己在空闲事后处理菜单自绘消息在OnKickIdle中添加如下语句UpdateDialogControls(this, FALSE);.......... 在头文件中加入LRESULT OnKickIdle(WPARAM wParam, LPARAM lParam);申明然后在cpp文件中添加映射ON_MESSAGE(WM_KICKIDLE, OnKickIdle)就好了就是空闲事后让绘制菜单WM_KICKIDLE,你也可以用向导添加消息映射 TO stevecrisewu(月亮骑士) 抱歉 我在cpp文件中添加映射ON_MESSAGE(WM_KICKIDLE, OnKickIdle)但总是说WM_KICKIDLE无此定义 消息映射里也没有WM_KICKIDLE 有谁知道如何解决 在源文件中定义:#define WM_KICKIDLE WM_USER+102 求助:加载一个位图,如何获取某个部分的位图 捕获另一个进程的编辑框信息问题 今天偶尔看了一下我参与的帖子,发现未结帖的帖子的地竟然有一百多,心里有点小郁闷。 比较怪异的问题 如何把一个txt中的内容读到ListCtrl和TreeCtrl中?高手指点~~~~~~~~~~ 关于send函数的返回值的问题 学习中遇到的问题,请教大家一下: sdfsdsdf WriteBufferFull的问题 急需一个VC做的类似画图板程序源程序 关于属性页的问题,dialog中的属性页怎样随主窗口大小的改变相应的页面也改变 下载指定网络路径的文件。
用pCmdUI->SetCheck(1);就可以打上勾了
CCmdUI cmdUI;
// update menu enable/disable state
for (UINT n = 0; n < pMainMenu->GetMenuItemCount(); ++n)
{
CMenu* pSubMenu = pMainMenu->GetSubMenu(n);
cmdUI.m_nIndexMax = pSubMenu->GetMenuItemCount();
for (UINT i = 0; i < cmdUI.m_nIndexMax;++i)
{
cmdUI.m_nIndex = i;
cmdUI.m_nID = pSubMenu->GetMenuItemID(i);
cmdUI.m_pMenu = pSubMenu;
cmdUI.DoUpdate(this, FALSE);
}
} return Default();
可以用函数CheckRadioMenuItem。
不过需要设置若干个menuitem为radio类型(MFT_RADIOCHECK)可以用
SetMenuItemInfo
用三个变量控制菜单是否打勾
在每个菜单的UPDATE_COMMAND_UI消息相应函数中
用pCmdUI->SetCheck(bMenu*);控制在每个菜单的单机消息中,修改控制变量bMenu1,bMenu2, bMenu3的值
但是在对话框中好象不起作用,点了后了不
打勾.
谁知道如何解决?可能是stevecrisewu(月亮骑士) 说的那样,但不知道
OnKickIdle是什么
.........
不过在对话框中,你要自己在空闲事后处理菜单自绘消息在OnKickIdle中添加如下语句UpdateDialogControls(this, FALSE);..........
抱歉
我在cpp文件中添加映射ON_MESSAGE(WM_KICKIDLE, OnKickIdle)
但总是说WM_KICKIDLE无此定义 消息映射里也没有WM_KICKIDLE 有谁知道如何解决