和史前远古框架MFC真是有缘:我做的一个工程,MFC单文档,带Ribbon功能区,添加了一个SPIN控件(数字调整编辑控件,ID为ID_SPIN_GAP_X0),如下图:
消息响应都可以触发,无论是放在框架类还是视图类都行,Message调试过,是可以的。
然后遇到两个问题:
问题1、无法区分是点击了SPIN控件的上箭头还是下箭头,就是说我需要根据用户的点击来确认height这个参数需要增加还是减小,不像其他MFC消息响应函数那样带参数,下图这个详细响应函数无法区分用户的增减需求:
问题2、尝试了其他方案,也无法获取ID_SPIN_GAP_X0这个控件的指针,即无法获取这个控件的数字/文本值,想曲线救国也不行:
CEdit也换成其他试过,都不行:
已解决,指针方案:
//获取MainFrame指针
CMainFrame* pMainFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;
ASSERT_VALID(pMainFrame);
//获取RibbonBar指针
CMFCRibbonBar *pRibbonBar = pMainFrame->GetRibbonBar();
ASSERT_VALID(pRibbonBar);
CMFCRibbonEdit* pSpin = DYNAMIC_DOWNCAST(CMFCRibbonEdit, pRibbonBar->FindByID(ID_SPIN_GAP_X0));//关键是这行,CMFCRibbonEdit可以换成CMFCRibbonXXXXX,与控件类型对应的类
CString strHeight = pSpin->GetEditText();
height = _wtof(strHeight.GetBuffer(strHeight.GetLength()));
不知道你这个问题是否已经解决, 如果还没有解决的话: