標籤:vc tooltip 工具列 按鈕表徵圖 mfc
注意:本人使用VC++2010開發環境進行測試。
在使用VC開發對話方塊程式時不像開發單文檔程式和多文檔程式那麼方便,很多資源都需要自己手動添加。最近在開發一個程式時,想嘗試在對話方塊程式裡面添加工具列 及其 按鈕tooltip,於是便有了這篇文章,希望把經驗總結下來以方便自己以後查詢以及各位同仁查詢!
一、首先建立一個對話方塊程式
1、添加工具列資源,並在工具列資源裡添加幾個按鈕,並將按鈕的width 和 height 改為24,也可以根據自己的需要更改尺寸,同時,還要為相應的按鈕設定一個ID。具體操作
二、建立工具列
1、在***Dlg.h添加工具列對象, 以及位元影像資源
private:CToolBar m_ToolBar;// 位元影像資源 CBitmap m_bitmap1; CBitmap m_bitmap2; CBitmap m_bitmap3; CImageList m_ImageList;
2、在OnInitDialog()函數裡面添加以下代碼,建立工具列
if( !m_ToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS ) ||!m_ToolBar.LoadToolBar(IDR_TOOLBAR1)){TRACE0("未能建立工具列\n");AfxMessageBox(_T("未能建立工具列\n"));return FALSE; // 未能建立}m_ToolBar.ShowWindow(SW_SHOW);//控制列定位RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
3、載入幾個24*24尺寸的位元影像,注意,該尺寸是根據上面按鈕的尺寸而設定的。
4、在以上 第2 步後面的代碼添載入入位元影像的代碼,最終
if( !m_ToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS ) ||!m_ToolBar.LoadToolBar(IDR_TOOLBAR1)){TRACE0("未能建立工具列\n");AfxMessageBox(_T("未能建立工具列\n"));return FALSE; // 未能建立}m_ToolBar.ShowWindow(SW_SHOW);//控制列定位RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);m_bitmap1.LoadBitmapW(IDB_BITMAP_MULTIMETER);m_bitmap2.LoadBitmapW(IDB_BITMAP_PHONE);m_bitmap3.LoadBitmapW(IDB_BITMAP_SPEAKER);m_ImageList.Create(24,24, ILC_COLOR32 | ILC_MASK,0,0);m_ImageList.Add(&m_bitmap1, RGB(0, 0, 0));m_ImageList.Add(&m_bitmap2,RGB(0, 0, 0));m_ImageList.Add(&m_bitmap3,RGB(255, 255, 255));m_ToolBar.GetToolBarCtrl().SetImageList(&m_ImageList);
至此,便已並運行程式,可以看到程式介面就有我們添加上句的工具列按鈕表徵圖,
以上已經實現了為工具列按鈕添加表徵圖的功能,那如何為工具列按鈕添加tooltip功能能,如的效果:
接著就由本人繼續介紹操作步驟:
1、在***Dlg.h 標頭檔添加 訊息處理函式宣告:
afx_msg BOOL OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult);// 工具條提示
2、在***Dlg.cpp添加訊息映射
BEGIN_MESSAGE_MAP(CSageRemoteKeyTestDlg, CDialogEx) ......ON_NOTIFY_EX_RANGE(TTN_NEEDTEXT, 0, 0xffff, OnToolTipText)END_MESSAGE_MAP()
3、添加函數定義
BOOL ***Dlg::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult){ TOOLTIPTEXT *pTTT=(TOOLTIPTEXT*)pNMHDR; UINT uID=pNMHDR->idFrom; // 相當於原WM_COMMAND傳遞方式的wParam(low-order), 在wParam中放的則是控制項的ID。 if(pTTT->uFlags & TTF_IDISHWND) uID=::GetDlgCtrlID((HWND)uID); if(uID==NULL) return FALSE; switch(uID) { case IDOK:pTTT->lpszText= _T("按下此鍵開始測試"); break;case IDM_POWER_MULTIMETER: pTTT->lpszText= _T("電錶配置"); break;case IDM_SHIELDINGBOX_COM: pTTT->lpszText= _T("串口配置"); break;case IDM_BEEP: pTTT->lpszText= _T("蜂鳴器配置"); break; } return TRUE;}
至此,編譯運行程式就能實現的tooltip功能了!
VC 對話方塊程式添加工具列按鈕表徵圖及其按鈕tooltip