ribbon 通过CCmdUI *pCmdUI改变对话框菜单状态,为什么失败了?

a3622041 2017-09-28 11:14:35

void CMainFrame::OnBtnConnect()
{
// TODO: 在此添加命令处理程序代码
int iret=m_NetConnect.DataConnect();
if(!iret)
{
m_SockData=m_NetConnect.sock_client;
}

int ret=m_NetConnect.DeviceConnect();
if(!ret)
{
m_SockPort=m_NetConnect.sock_client;
}

if(!(ret && iret))
MessageBox("设备连接成功!");
else
MessageBox("设备连接失败,请检查网络配置!");

this->boolValue = TRUE;


void CMainFrame::OnBtnDisconnect()
{
// TODO: 在此添加命令处理程序代码
m_NetConnect.DeviceDisableConnect(m_SockPort);
//m_NetConnect.DeviceDisableConnect(m_SockData);
this->boolValue = FALSE;
}
}


void CMainFrame::OnUpdateBtnDisconnect(CCmdUI *pCmdUI)
{
// TODO: 在此添加命令更新用户界面处理程序代码
pCmdUI->Enable(!boolValue);

}


void CMainFrame::OnUpdateBtnConnect(CCmdUI *pCmdUI)
{
// TODO: 在此添加命令更新用户界面处理程序代码
pCmdUI->Enable(boolValue);
}
...全文
848 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
叶恭介叶恭介 2017-09-29
  • 打赏
  • 举报
回复
ID不对应吧,ribbon有时编辑控件会这样,看一下resource.h和ribbon.mfcribbon-ms里的这个控钮的ID数值是否一致,不一致则改相同
使用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 =

1,649

社区成员

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

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