MFC单文档Ribbon功能区的SPIN控件消息响应问题

和史前远古框架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()));
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^