MFC中當鼠標經過控件時出現文字提示功能CToolTipCtrl

VC中自己定義類型的提示信息處理:

類成員或結構體成員的定義形式:

class a 

{

  //

 //成員B的作用

 float  B;

};

在使用時, a  A;

當輸入a.彈出成員時,選中B會顯示“成員B的作用”。

//---------------------------------------------------------------------------------------------------------

在VC中,常常爲一些圖片按鈕添加一些功能提示。
下面講解實現過程,大部分代碼是網上的,但已經過測試,可以直接使用~


該功能的實現主要是用CToolTipCtrl類。該類在VC  msdn中有詳細說明。
首先在對話框的頭文件中加入初始化語句:public:下,加入:CToolTipCtrl    m_stat;
然後在初始化對話框函數BOOL FunctionWindowD::OnInitDialog(void)中加入:
m_stat.Create(this);  
m_stat.AddTool( GetDlgItem(IDC_BUTTON), "你想要添加的提示信息" ); //IDC_BUTTON爲你要添加提示信息的按鈕的ID
 //m_stat.SetDelayTime(200); //設置延遲,如果爲0則不等待,立即顯示
//m_stat.SetTipTextColor( RGB(0,0,255) ); //設置提示文本的顏色
//m_stat.SetTipBkColor( RGB(255,255,255)); //設置提示框的背景顏色

//m_stat.SetMaxTipWidth(600);//設置文本框的最大寬度,注意裏邊的數值單位爲像素,所以要通過不斷測試來選定最理想的寬度。利用此句可顯示多行
m_stat.Activate(TRUE); //設置是否啓用提示

然後手動添加PreTranslateMessage消息響應函數
BOOL CXXXDlg::PreTranslateMessage(MSG* pMsg)
{
  m_stat.RelayEvent(pMsg); 
return CDialog::PreTranslateMessage(pMsg);
}
注:1.如果要爲多個按鈕添加功能提示只需在
          m_stat.AddTool( GetDlgItem(IDC_BUTTON), "你想要添加的提示信息" );
          的下面再加上類似語句,如
          m_stat.AddTool( GetDlgItem(IDC_BUTTON1), "你想要添加的提示信息1" );
          m_stat.AddTool( GetDlgItem(IDC_BUTTON2), "你想要添加的提示信息2" );

      2.上面這個是按鈕,然後我同樣想顯示picture控件的提示信息時,發現按上面的步驟沒反應,後來網上查了在picture控件屬性裏把Notify這個屬性打勾,就顯示內容了。其他控件不知道是不是這樣,有待驗證。

      3.如果想在需要顯示的時候顯示提示,可以使用m_tooltip.Activate(TRUE);函數,但發現如果已經是TRUE了,再Activate,提示框就不顯示了,此時可以調用m_tooltip.UpdateTipText(str,GetDlgItem(IDC_BUTTON));更新一下要顯示內容,雖然內容可能沒有變,然後再Activate(TRUE)就能正常顯示了。

      4.當需要顯示多行提示信息時,直接用“\n”拼接字符串並不能達到效果,需要添加這句m_stat.SetMaxTipWidth(600);並設置合適的寬度,這樣用“\n”來拼接字符串就能顯示多行信息。

 

補充一下添加BMP圖: 1、添加BMP圖資源,並添加picture控件,屬性改爲BMP

                                      2、初始化函數中添加:

                                HBITMAP hBitmap; 
                               hBitmap = ::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BMP_TRAIN)); //BMP圖ID號
                               m_Trainp1.SetBitmap(hBitmap);

                                 GetDlgItem(IDC_STATIC2)->ShowWindow(SW_HIDE);//隱藏圖片 ShowWindow(SW_SHOW)是顯示圖片

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