luliily 2022-03-22 11:52 采纳率: 100%
浏览 20
已结题

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

和史前远古框架MFC真是有缘:我做的一个工程,MFC单文档,带Ribbon功能区,添加了一个SPIN控件(数字调整编辑控件,ID为ID_SPIN_GAP_X0),如下图:

 

消息响应都可以触发,无论是放在框架类还是视图类都行,Message调试过,是可以的。

 

然后遇到两个问题:

问题1、无法区分是点击了SPIN控件的上箭头还是下箭头,就是说我需要根据用户的点击来确认height这个参数需要增加还是减小,不像其他MFC消息响应函数那样带参数,下图这个详细响应函数无法区分用户的增减需求:

 

问题2、尝试了其他方案,也无法获取ID_SPIN_GAP_X0这个控件的指针,即无法获取这个控件的数字/文本值,想曲线救国也不行:

CEdit也换成其他试过,都不行:

 

  • 写回答

2条回答 默认 最新

  • luliily 2022-09-12 11:27
    关注

    已解决,指针方案:

    //获取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()));
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月20日
  • 已采纳回答 9月12日
  • 创建了问题 3月22日

悬赏问题

  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题