MFC CTooLBar 工具欄顯示提示資訊ToolTip
阿新 • • 發佈:2019-01-31
CTooLBar 工具欄顯示提示資訊ToolTip,首先新增Toolbar控制元件,網上有多種實現方式,推薦兩種:
一:
在資源裡新增ToolBar控制元件,在對話方塊OnInitDialog裡關聯,設定:
BOOL CWeldTechnologyDlg::OnInitDialog() { CDialogEx::OnInitDialog(); ............. m_wndToolBar.CreateEx(this,TBSTYLE_FLAT,WS_VISIBLE|WS_CHILD|CBRS_TOP|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_SIZE_DYNAMIC|CBRS_BORDER_TOP); m_wndToolBar.LoadToolBar(IDR_TOOLBAR1); //載入工具欄資源 m_wndToolBar.GetToolBarCtrl().SetBitmapSize(CSize(102,48)); //設定影象大小 m_wndToolBar.GetToolBarCtrl().SetButtonSize(CSize(102,48)); //設定工具欄圖示按鈕的大小 //顯示工具欄 RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0); INIT_EASYSIZE; return TRUE; }
二:
直接程式碼生成ToolBar,也是在OninitDialog中新增如下程式碼:
BOOL CToolTipDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here UINT array[10]; for (int i = 0;i<10;i++) { if (i==3 || i==7) array[i]= ID_SEPARATOR; //第4、8個按鈕為分隔條 else array[i]=i+1001; } m_ToolBar.Create(this); m_ToolBar.SetButtons(array,10); m_ToolBar.SetButtonText(0,"新建"); m_ToolBar.SetButtonText(1,"開啟"); m_ToolBar.SetButtonText(2,"儲存"); m_ToolBar.SetButtonText(4,"剪下"); m_ToolBar.SetButtonText(5,"複製"); m_ToolBar.SetButtonText(6,"貼上"); m_ToolBar.SetButtonText(8,"列印"); m_ToolBar.SetButtonText(9,"幫助"); m_ToolBar.LoadBitmap(IDB_BITMAP1); //載入點陣圖 m_ToolBar.SetSizes(CSize(36,36),CSize(16,16)); //設定按鈕和按鈕點陣圖大小 m_ToolBar.EnableToolTips(TRUE); RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0); //顯示工具欄 return TRUE; // return TRUE unless you set the focus to a control }
設定好了,新增工具欄ToolTip:
在.h檔案裡宣告訊息:
afx_msg BOOL OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult );
在.cpp下關聯訊息
BEGIN_MESSAGE_MAP(CWeldTechnologyDlg, CDialogEx)
ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify)
END_MESSAGE_MAP()
新增響應程式碼:
BOOL CWeldTechnologyDlg::OnToolTipNotify(UINT id, NMHDR *pNMHDR, LRESULT *pResult) { TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR; CString str; UINT nID =pNMHDR->idFrom; //獲取工具欄按鈕ID if(nID) { nID = m_wndToolBar.CommandToIndex(nID); //根據ID獲取按鈕索引 if (nID != -1) { switch(nID) { case 0: pTTT->lpszText = L"中心點設定"; break; case 1: pTTT->lpszText = L"焊板設定"; break; case 2: pTTT->lpszText =L"焊層設定"; break; case 3: pTTT->lpszText =L"焊道工藝設定"; break; case 4: pTTT->lpszText =L"生成焊點軌跡"; break; default: pTTT->lpszText = L" "; break; } //獲取工具欄文字 pTTT->hinst = AfxGetResourceHandle(); return(TRUE); } } return(FALSE); }