1. 程式人生 > >VC 對話框程序加入工具欄button圖標及其buttontooltip

VC 對話框程序加入工具欄button圖標及其buttontooltip

方式 dsm b2c size 傳遞 TTT dbi water ssa

註意:本人使用VC++2010開發環境進行測試。

在使用VC開發對話框程序時不像開發單文檔程序和多文檔程序那麽方便,非常多資源都須要自己手動加入。近期在開發一個程序時。想嘗試在對話框程序裏面加入 工具欄 及其 buttontooltip,於是便有了這篇文章,希望把經驗總結下來以方便自己以後查詢以及各位同仁查詢!


一、首先建立一個對話框程序

1、加入工具欄資源,並在工具欄資源裏加入幾個button,並將button的width 和 height 改為24,也能夠依據自己的須要更改尺寸。同一時候,還要為對應的button設置一個ID。

詳細操作如圖:

技術分享

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGJtb3hpYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

技術分享

技術分享


二、創建工具欄

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尺寸的位圖,註意。該尺寸是依據上面button的尺寸而設定的。
技術分享

技術分享

技術分享


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);

至此。便已並執行程序。能夠看到程序界面就有我們加入上句的工具欄button圖標,如圖:

技術分享


以上已經實現了為工具欄button加入圖標的功能。那怎樣為工具欄button加入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 對話框程序加入工具欄button圖標及其buttontooltip