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