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 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事: