CToolTipCtrl的使用

在對話框中CToolTipCtrl的方法。

在假設自定義的對話框 類爲CmyDlg:CDialog

1、在CmyDlg中添加CToolTipCtrl m_tip;

2、在CmyDlg的OnInitDialog()添加m_tip的初始化

m_tip.Create(this, TTS_ALWAYSTIP)

m_tip.Activate(TRUE);

3、在CmyDlg的MouseMove中添加 ShowToolTip()來顯示鼠標提示

void OnMouseMove()

{

ShowToolTip();

}

void ShowToolTip()

{

if(m_tip.GetToolCount()>0)

{

m_tip.DelTool(this);

                m_tip.Activate(FALSE);

         }

       //添加新的提示

      m_tip.AddTool(m_Grid,LPSTR_TEXTCALLBACK); m_Grid爲要提示信息的控件指針(原形可以是Button *)

      m_tip.Activate(TRUE);

}

4、添加鼠標移動的消息接受

BOOL CmyDlg::PreTranslateMessage(MSG* pMsg)

{      
if(pMsg->message== WM_LBUTTONDOWN ||
  pMsg->message== WM_LBUTTONUP ||
  pMsg->message== WM_MOUSEMOVE)
{
if (m_tip.m_hWnd != NULL)
m_tip.RelayEvent(pMsg);


}
return CDialog::PreTranslateMessage(pMsg);
}

5、添加一個鼠標提示信息更改的處理函數

在CmyDlg類定義添加 afx_msg BOOL SetTipText( UINT id, NMHDR * pTTTStruct, LRESULT * pResult );

在CmyDlg的實現添加

BEGIN_MESSAGE_MAP(CmyDlg, CDialog)

ON_NOTIFY_EX( TTN_NEEDTEXT, 0, SetTipText )

END_MESSAGE_MAP()

BOOL CmyDlg::SetTipText(UINT id, NMHDR* pNMHDR, LRESULT* pResult)

{

CString tooltip = GetToolTipText();  //獲得要提示的信息內容
if (tooltip.IsEmpty())
return FALSE;
TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;
TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;
#ifndef _UNICODE
if (pNMHDR->code == TTN_NEEDTEXTA)
lstrcpyn(pTTTA->szText, static_cast<LPCTSTR>(tooltip), 80);
else
mbstowcs(pTTTW->szText, static_cast<LPCTSTR>(tooltip), 80);

#else
if (pNMHDR->code == TTN_NEEDTEXTA)
_wcstombsz(pTTTA->szText, static_cast<LPCTSTR>(tooltip), 80);

else
lstrcpyn(pTTTW->szText, static_cast<LPCTSTR>(tooltip), 80);
#endif
return TRUE;

}

6、提示信息GetToolTipText();

CString GetToolTipText();

CString msg  = //你的提示信息;

}

這樣大體實現CToolTipCtrl在對話框中的實現。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章