zoukankan      html  css  js  c++  java
  • MFC如何使用ToolTip提示框

    这篇文章和上一篇有关,顺便记录下来,也方便自己以后查看

    1、定义变量

    CMFCToolTipInfo用于设置提示框的外观等

    class CTestDlg : public CDialogEx
    {
        DECLARE_DYNAMIC(CTestDlg)
    
    public:
        CTestDlg(CWnd* pParent = NULL);   // 标准构造函数
        virtual ~CTestDlg();
        CMFCToolTipCtrl* m_ptooltip;
        CMFCToolTipInfo* m_ttinfo;

    2、初始化

    BOOL CTestDlg::OnInitDialog()
    {
        CDialogEx::OnInitDialog();
        m_ttinfo = new CMFCToolTipInfo();
        if ( m_ttinfo == NULL ) {
            AfxMessageBox(_T("内存错误!"));
            return FALSE;
        }
    
        m_ttinfo->m_bBalloonTooltip = TRUE;
        m_ttinfo->m_bBoldLabel = TRUE;
        m_ttinfo->m_bDrawDescription = FALSE;
        m_ttinfo->m_bDrawIcon = FALSE;
        m_ttinfo->m_bRoundedCorners = TRUE;
        m_ttinfo->m_bDrawSeparator = TRUE;
        m_ttinfo->m_clrFill = RGB(255, 255, 255);
        m_ttinfo->m_clrFillGradient = RGB(228, 228, 240);
        m_ttinfo->m_clrText = RGB(61, 83, 80);
        m_ttinfo->m_clrBorder = RGB(144, 149, 168);
    
        // TODO:  在此添加额外的初始化
        m_ptooltip = new CMFCToolTipCtrl(m_ttinfo);
        m_ptooltip->SetDescription(_T("测试"));
        m_ptooltip->SetFixedWidth(180, 240);
        m_ptooltip->Create(this);
        m_ptooltip->AddTool(GetDlgItem(IDC_BUTTON1), _T("test"));
    
        m_ptooltip->Activate(TRUE);
        return TRUE;  // return TRUE unless you set the focus to a control
        // 异常: OCX 属性页应返回 FALSE
    }

    3、消息响应

    BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
    {
        // TODO: 在此添加专用代码和/或调用基类
        if ( pMsg != NULL ) 
        {
            int nMsg = pMsg->message;
            if ( nMsg == WM_MOUSEMOVE || nMsg == WM_LBUTTONDOWN) 
            {
                m_ptooltip->RelayEvent(pMsg); 
            }
        }
        return CDialogEx::PreTranslateMessage(pMsg);
    }

    4、销毁资源

    void CTestDlg::OnDestroy()
    {
        CDialogEx::OnDestroy();
         if ( m_ptooltip != NULL ) delete m_ptooltip;
         if ( m_ttinfo != NULL ) delete m_ttinfo;
        // TODO: 在此处添加消息处理程序代码
    }

    效果:

     

    作者:快雪
    本文版权归作者所有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    时间选择器UIDatePicker的使用
    在app中屏蔽第三方键盘
    plist文件的相关操作
    查看mac上的隐藏文件
    设置ARC有效或者无效
    Linux 下源代码安装编译 ImageMagick6.8.48 且使其支持 JPEG
    Linux Netcat 命令—网络工具中的瑞士军刀
    Linux 好书、经典书籍推荐
    让你拥有超能力:程序员应该掌握的统计学公式
    shell 脚本实现的守护进程
  • 原文地址:https://www.cnblogs.com/kuaixue/p/13723093.html
Copyright © 2011-2022 走看看