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: 在此处添加消息处理程序代码
}

效果:

 

作者:快雪
本文版权归作者所有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/kuaixue/p/13723093.html