VC 對話方塊程式添加工具列按鈕表徵圖及其按鈕tooltip

來源:互聯網
上載者:User

標籤: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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.