菜单的复选标记怎么设置或者实现? 不好意思,都学了1年了还不会。帮忙。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在执行菜单命令的类中选中命令ID,映射UPDATE_COMMAND_UI消息void CYourClass::OnUpdateYourID(CCmdUI* pCmdUI) { pCmdUI->SetCheck(TRUE);//单选 pCmdUI->SetRadio(TRUE);//复选 } 使用CheckMenuItem函数CheckMenuItem:Places a check next to or removes a check from a menu item in the pop-up menu. void CMainFrame::OnUpdateYourID(CCmdUI* pCmdUI) { pCmdUI->SetCheck(TRUE);} llm308(黎明) ( ) 给我个简单源码吧,[email protected]基于DLG的。谢谢了, 基于DLG的?你不早说,基于DLG的必须在空闲消息处理函数中更新控件状态才能使菜单或工具栏的状态改变。空闲消息处理如下:1.#include "afxpriv.h"2.ON_MESSAGE(WM_KICKIDLE,OnModalIdle)//增加消息映射3.在.h文件中声明afx_msg void OnModalIdle(WPARAM wParam,LPARAM lParam);4.在.cpp文件中实现void CMyDlg::OnModalIdle(WPARAM wParam,LPARAM lParam){ UpdateDialogControls(AfxGetApp()->m_pMainWnd,true);}试试看行不行,不行的话我再给你写一个 终于解决了,在空闲消息处理函数中加入下列代码就可以了CMenu* pMainMenu = GetMenu(); CCmdUI cmdUI; 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); } }另外,UpdateDialogControls(AfxGetApp()->m_pMainWnd,true);是更新控件状态的,你可以试试,也是好使的,终于给你解决了!!!,呵呵! 哎. 想做一个任务切换程序. 但是用了很多方法都不能完美切换? 能帮我看看吗 wx-devcpp下能否编译MFC程序 高手请进,关于监听队列满了,客户端连接出错的问题 VC界面编程小问题--获得编辑框内容 请教大家一个vc的报错! 发送键盘消息给另外一个进程的窗体? 请问这样添加消息映射为什么出错? 为什么CObect不可以在添加新类中看到 重载OnInitDialog()函数,添加消息的问题 高手赐教!关于Ctrl+alt+del GetDriverType的问题 怎样知道在打印预览,是点击了关闭还是打印按钮。(比较急,在线等待)
void CYourClass::OnUpdateYourID(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(TRUE);//单选
pCmdUI->SetRadio(TRUE);//复选
}
CheckMenuItem:Places a check next to or removes a check from a menu item in the pop-up menu.
{
pCmdUI->SetCheck(TRUE);
}
[email protected]基于DLG的。谢谢了,
空闲消息处理如下:
1.#include "afxpriv.h"
2.ON_MESSAGE(WM_KICKIDLE,OnModalIdle)//增加消息映射
3.在.h文件中声明
afx_msg void OnModalIdle(WPARAM wParam,LPARAM lParam);
4.在.cpp文件中实现
void CMyDlg::OnModalIdle(WPARAM wParam,LPARAM lParam)
{
UpdateDialogControls(AfxGetApp()->m_pMainWnd,true);
}
试试看行不行,不行的话我再给你写一个
CMenu* pMainMenu = GetMenu();
CCmdUI cmdUI;
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);
}
}另外,UpdateDialogControls(AfxGetApp()->m_pMainWnd,true);
是更新控件状态的,你可以试试,也是好使的,终于给你解决了!!!,呵呵!