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

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.dtcms.com/a/267488.html

相关文章:

  • Linux命令大全:按功能分类详解(附表格速查)
  • 故障诊断 | CNN-GRU-Attention故障诊断
  • 模块二:C++核心能力进阶(5篇)第四篇《C++对象模型:虚函数表与继承体系内存布局》
  • PJSIP 中的 TCP 传输配置指南
  • Linux内核深度解析:IPv4策略路由的核心实现与fib_rules.c源码剖析
  • 介绍Flutter
  • 06.自动化测试概念
  • 极简 Docker Compose + Nginx + Certbot 自动化 HTTPS 部署指南
  • 深度学习4(浅层神经网络)
  • Python之--基本知识
  • 马来西亚华韵海外华侨联合会宣布李子昂先生荣升名誉理事
  • HarmonyOS学习2---工程目录UIAbility
  • mysql 图形化界面工具 DataGrip 安装与配置
  • 基于人体骨架动作识别的神经信息处理技术(8 ANUBIS数据集)
  • UI前端与数字孪生结合实践案例分享:智慧水利的水情监测与预警系统
  • 信号与槽的总结
  • spring加载外部properties文件属性时,读取到userName变量值和properties文件的值不一致
  • 每日学习问题记录
  • 四、jenkins自动构建和设置邮箱
  • Matplotlib 安装部署与版本兼容问题解决方案(pyCharm)
  • nginx部署发布Vite项目
  • H3C WA6322 AP版本升级
  • 2 大模型高效参数微调;prompt tunning
  • (LeetCode 每日一题) 1394. 找出数组中的幸运数 (哈希表)
  • Vue前端项目接收webSocket信息
  • uniapp 国密sm2加密
  • 国产数据库之达梦DM:破甲成蝶
  • php协程
  • 【内存】Linux 内核优化实战 - net.ipv4.tcp_tw_reuse
  • Spring boot之身份验证和访问控制