CMFCRibbonEdit怎么禁用?

AthrunArthur 2009-04-26 09:53:53
我用到了CMFCRibbonBaseElement中的控件,我想在程序中把某个控件禁用,就是变成灰色的,不响应用户的输入,但是我发现这之中的控件都没有Enable方法,请问各位高人怎么才能禁用呢?
另外MSDN中提到有个OnEnable方法是给framework调用的,究竟怎么调用呢?
...全文
340 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
arhisqq 2010-11-28
  • 打赏
  • 举报
回复
ON_UPDATE_COMMAND_UI
方法只适用于鼠标键盘触发frame刷新,
如果是任务触发(比如说,某件事情处理完,需要enable/disable几个控件),就不适用了。
redraw updatewindow等方法都不行。
V01kswagen 2009-09-01
  • 打赏
  • 举报
回复
定义ON_UPDATE_COMMAND_UI,在消息响应函数中添加
pCmdUI->Enable(xxx);

其中xxx是bool变量的条件成员函数
mutou0422 2009-07-16
  • 打赏
  • 举报
回复
http://stackoverflow.com/questions/502640/disable-enable-ribbon-buttons-for-mfc-feature-pack/505352


这有答案
AthrunArthur 2009-05-05
  • 打赏
  • 举报
回复
楼上的解答只能适合一部分控件吧 因为CMFCRibbonButton之类的控件不是从CWnd继承过来的 ,所有好像不能通用的,不过对Edit还是可以的
AI菜鸟实习生 2009-05-01
  • 打赏
  • 举报
回复
CMainFrame *pMain=(CMainFrame *)AfxGetApp()->m_pMainWnd;
pMain->m_wndRibbonBar.GetDlgItem(ID_edit1)->EnableWindow(FALSE);
tian_yang_jian 2009-04-27
  • 打赏
  • 举报
回复
我也试了一下,弄不出来,没有办法帮你了。
使用VS2010创建一个带Ribbon样式的单文档程序 项目类型为:Office 在资源中,可对Ribbon进行编辑 Ribbon控件中,按右键,添加事件处理 图标的添加: 使用 Axialis IconWorkshop 添加一个: 来自数个文件的图像带 添加数个PNG图像(推荐PNG图像,带Alpha透明) 最后保存成BMP格式 在VS资源中,导入BMP,如下: IDB_BMP_ICO IDB_BMP_ICO2 分别用于大图标与小图标 在面板的属性中,分别指定此面板需要采用的LargeImages 与 SmallImages 在面板中的按钮属性中,添加图标 复选框的按钮,需要添加一个 BOOL m_bCheck; 在按钮中,对其进行控件,并在Ribbon更新的时候,对复选框进行勾选或取消勾选 void CMainFrame::OnChkTest() { m_bCheck = !m_bCheck; if (m_bCheck) { AfxMessageBox(_T("勾选")); } else { AfxMessageBox(_T("取消")); } } void CMainFrame::OnUpdateChkTest(CCmdUI *pCmdUI) { pCmdUI->SetCheck(m_bCheck); } 程序运行结果如下: 主要菜单响应事件如下代码: void CMainFrame::OnBtnEditText() { CMFCRibbonEdit* pEditA = DYNAMIC_DOWNCAST(CMFCRibbonEdit, m_wndRibbonBar.FindByID(ID_EDT_A)); CMFCRibbonEdit* pEditB = DYNAMIC_DOWNCAST(CMFCRibbonEdit, m_wndRibbonBar.FindByID(ID_EDT_B)); CString strA; strA = pEditA->GetEditText(); CString strB; strB = pEditB->GetEditText(); AfxMessageBox(strA+_T(" - ")+strB); CMFCRibbonButton* pBtn = DYNAMIC_DOWNCAST(CMFCRibbonButton, m_wndRibbonBar.FindByID(ID_BTN_EDIT_TEXT)); } void CMainFrame::OnBtnColor() { CMFCRibbonColorButton* pBtn = DYNAMIC_DOWNCAST(CMFCRibbonColorButton, m_wndRibbonBar.FindByID(ID_BTN_COLOR)); COLORREF color; color = pBtn->GetColor(); BYTE r = GetRValue(color); BYTE g = GetGValue(color); BYTE b = GetBValue(color); CString strColor; strColor.Format(_T("颜色:R:%d-G:%d-B:%d"), r, g, b); AfxMessageBox(strColor); } void CMainFrame::OnSpinNum() { // 怎么会运行两次呢 CMFCRibbonEdit* pEdit = DYNAMIC_DOWNCAST(CMFCRibbonEdit, m_wndRibbonBar.FindByID(ID_SPIN_NUM)); CString strGet; strGet = pEdit->GetEditText(); AfxMessageBox(strGet); } void CMainFrame::OnCmbTest() { CMFCRibbonComboBox* pCmb = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, m_wndRibbonBar.FindByID(ID_CMB_TEST)); CString strGet; strGet =

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧