当前位置: 首页 > ops >正文

Visual Studio 2022 MFC Dialog 添加Toolbar及Tips提示

主要步骤:

  1. 在主框架类中添加消息处理函数声明
  2. 在 OnCreate 函数中启用工具栏提示
  3. 在消息映射中注册 TTN_NEEDTEXT 消息
  4. 使用 OnToolTipText 函数实现自定义提示文本

1.在主程序的.h文件中加入
    afx_msg BOOL OnToolTipText(UINT id, NMHDR* pNMHDR, LRESULT* pResult); 

2.在主程序int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)中加入

    m_wndToolBar.EnableToolTips(TRUE);

3.在消息映射中
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
END_MESSAGE_MAP()
加入
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXT, 0, 0xffff, OnToolTipText)

4.实现OnToolTipText

BOOL CMainFrame::OnToolTipText(UINT id, NMHDR* pNMHDR, LRESULT* pResult)
{
    ASSERT(pNMHDR->code == TTN_NEEDTEXTA || pNMHDR->code == TTN_NEEDTEXTW);

    // 获取实际的控件ID
    UINT nID = pNMHDR->idFrom;
    if ((pNMHDR->code == TTN_NEEDTEXTA && ((TOOLTIPTEXTA*)pNMHDR)->uFlags & TTF_IDISHWND) ||
        (pNMHDR->code == TTN_NEEDTEXTW && ((TOOLTIPTEXTW*)pNMHDR)->uFlags & TTF_IDISHWND))
    {
        nID = ::GetDlgCtrlID((HWND)nID);
    }

    // 使用正确的Unicode结构体
    NMTTDISPINFOW* pTTT = (NMTTDISPINFOW*)pNMHDR;

    // 初始化文本为空
    pTTT->lpszText[0] = L'\0';

    // 使用switch语句处理不同ID
    switch (nID)
    {
    case ID_VIEW_CONTROLBAR:
        _tcscpy(pTTT->lpszText,  L"操作面板");
        break;

    case ID_VIEW_LOGBAR:
        _tcscpy(pTTT->lpszText,  L"日志");
        break;  

    default:
        // 尝试从资源加载默认文本
        CString strTip;
        if (strTip.LoadString(nID) && !strTip.IsEmpty())
        {
            _tcscpy(pTTT->lpszText, strTip);
        }
        else
        {
            // 没有找到匹配的ID,使用基类处理
            return CFrameWnd::OnToolTipText(id, pNMHDR, pResult);
        }
        break;
    }

    *pResult = 0;
    return TRUE;
}

http://www.xdnf.cn/news/14846.html

相关文章:

  • 【算法刷题记录(简单题)002】字符串字符匹配(java代码实现)
  • 补充:问题:CORS ,前后端访问跨域问题
  • Java Go SDK 管理工具与最佳实践
  • 《Java修仙传:从凡胎到码帝》第四章:设计模式破万法
  • PageRank:互联网的马尔可夫链平衡态
  • CSS 文字浮雕效果:巧用 text-shadow 实现 3D 立体文字
  • 【内存】Linux 内核优化实战 - net.ipv4.tcp_tw_reuse
  • springBoot接口层时间参数JSON序列化问题,兼容处理
  • STM32F103RCTx的PWM输出控制电机
  • Matplotlib 安装部署与版本兼容问题解决方案(pyCharm)
  • 共射级放大电路的频率响应Multisim电路仿真——硬件工程师笔记
  • C++11 forward_list 从基础到精通:原理、实践与性能优化
  • 利用 AI 打造的开发者工具集合
  • 高档宠物食品对宠物的健康益处有哪些?
  • Python-GUI-wxPython-布局
  • python打卡day59@浙大疏锦行
  • 应急响应靶场——web3 ——知攻善防实验室
  • docker运行的一些常用命令
  • 使用alist+RaiDrive+webdav将百度夸克网盘变为本地电脑磁盘方法教程
  • 基于led框架及gpiolib管理的驱动编写
  • git教程-pycharm使用tag打标签
  • Mint密室 · 猫猫狐狐的“特征选择”囚室逃脱
  • Adobe Illustrator设置的颜色和显示的颜色不对应问题
  • 同步(Synchronization)和互斥(Mutual Exclusion)关系
  • OLAP 是什么?一文讲清 OLAP 和 OLTP 的区别
  • 类图+案例+代码详解:软件设计模式----单例模式
  • 分布式光伏监控系统防孤岛保护装置光功率预测
  • 如何选择合适的工业相机快门种类
  • Selenium 安装使用教程
  • Java 中的锁机制详解