• True bar


    真彩bar

     1 /***=========================================================================
     2 ====                                                                     ====
     3 ====                          D C U t i l i t y                          ====
     4 ====                                                                     ====
     5 =============================================================================
     6 ====                                                                     ====
     7 ====    File name           :  TrueColorToolBar.h                        ====
     8 ====    Project name        :  Tester                                    ====
     9 ====    Project number      :  ---                                       ====
    10 ====    Creation date       :  13/1/2003                                 ====
    11 ====    Author(s)           :  Dany Cantin                               ====
    12 ====                                                                     ====
    13 ====                  Copyright ?DCUtility  2003                        ====
    14 ====                                                                     ====
    15 =============================================================================
    16 ===========================================================================*/
    17 
    18 
    19 #ifndef TRUECOLORTOOLBAR_H_
    20 #define TRUECOLORTOOLBAR_H_
    21 
    22 #if _MSC_VER > 1000
    23 #pragma once
    24 #endif // _MSC_VER > 1000
    25 
    26 
    27 #include <afxtempl.h>
    28 
    29 /////////////////////////////////////////////////////////////////////////////
    30 // CTrueColorToolBar
    31 
    32 class CTrueColorToolBar : public CToolBar
    33 {
    34 // Construction
    35 public:
    36     CTrueColorToolBar();
    37 
    38 // Attributes
    39 private:
    40     BOOL m_bDropDown;
    41 
    42     struct stDropDownInfo {
    43     public:
    44         UINT  uButtonID;
    45         UINT  uMenuID;
    46         CWnd* pParent;
    47     };
    48     
    49     CArray <stDropDownInfo, stDropDownInfo&> m_lstDropDownButton;
    50     
    51 // Operations
    52 public:
    53     BOOL LoadTrueColorToolBar(int  nBtnWidth,
    54                               UINT uToolBar,
    55                               UINT uToolBarHot        = 0,
    56                               UINT uToolBarDisabled = 0);
    57 
    58     void AddDropDownButton(CWnd* pParent, UINT uButtonID, UINT uMenuID);
    59 
    60 private:
    61     BOOL SetTrueColorToolBar(UINT uToolBarType,
    62                              UINT uToolBar,
    63                              int  nBtnWidth);
    64 
    65 // Overrides
    66     // ClassWizard generated virtual function overrides
    67     //{{AFX_VIRTUAL(CTrueColorToolBar)
    68     //}}AFX_VIRTUAL
    69 
    70 // Implementation
    71 public:
    72     virtual ~CTrueColorToolBar();
    73 
    74     // Generated message map functions
    75 protected:
    76     //{{AFX_MSG(CTrueColorToolBar)
    77     afx_msg void OnToolbarDropDown(NMHDR * pnmh, LRESULT* plRes);
    78     //}}AFX_MSG
    79 
    80     DECLARE_MESSAGE_MAP()
    81 };
    82 
    83 /////////////////////////////////////////////////////////////////////////////
    84 
    85 //{{AFX_INSERT_LOCATION}}
    86 // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
    87 
    88 #endif // TRUECOLORTOOLBAR_H_
    View Code
    /***=========================================================================
    ====                                                                     ====
    ====                          D C U t i l i t y                          ====
    ====                                                                     ====
    =============================================================================
    ====                                                                     ====
    ====    File name           :  TrueColorToolBar.cpp                      ====
    ====    Project name        :  Tester                                    ====
    ====    Project number      :  ---                                       ====
    ====    Creation date       :  13/1/2003                                 ====
    ====    Author(s)           :  Dany Cantin                               ====
    ====                                                                     ====
    ====                  Copyright ?DCUtility  2003                        ====
    ====                                                                     ====
    =============================================================================
    ===========================================================================*/
    
    #include "stdafx.h"
    #include "TrueColorToolBar.h"
    
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__; 
    #endif 
    
    /////////////////////////////////////////////////////////////////////////////
    // CTrueColorToolBar
    
    CTrueColorToolBar::CTrueColorToolBar()
    {
    	m_bDropDown = FALSE;
    }
    
    CTrueColorToolBar::~CTrueColorToolBar()
    {
    }
    
    
    BEGIN_MESSAGE_MAP(CTrueColorToolBar, CToolBar)
    	//{{AFX_MSG_MAP(CTrueColorToolBar)
    	ON_NOTIFY_REFLECT(TBN_DROPDOWN, OnToolbarDropDown)
    	//}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    
    /////////////////////////////////////////////////////////////////////////////
    // CTrueColorToolBar message handlers
    BOOL CTrueColorToolBar::LoadTrueColorToolBar(int  nBtnWidth,
    											 UINT uToolBar,
    											 UINT uToolBarHot,
    											 UINT uToolBarDisabled)
    {
    	if (!SetTrueColorToolBar(TB_SETIMAGELIST, uToolBar, nBtnWidth))
    		return FALSE;
    	
    	if (uToolBarHot) {
    		if (!SetTrueColorToolBar(TB_SETHOTIMAGELIST, uToolBarHot, nBtnWidth))
    			return FALSE;
    	}
    
    	if (uToolBarDisabled) {
    		if (!SetTrueColorToolBar(TB_SETDISABLEDIMAGELIST, uToolBarDisabled, nBtnWidth))
    			return FALSE;
    	}
    
    	return TRUE;
    }
    
    
    BOOL CTrueColorToolBar::SetTrueColorToolBar(UINT uToolBarType, 
    							     	        UINT uToolBar,
    										    int  nBtnWidth)
    {
    	CImageList	cImageList;
    	CBitmap		cBitmap;
    	BITMAP		bmBitmap;
    	
    	if (!cBitmap.Attach(LoadImage(AfxGetResourceHandle(), MAKEINTRESOURCE(uToolBar),
    								  IMAGE_BITMAP, 0, 0,
    								  LR_DEFAULTSIZE|LR_CREATEDIBSECTION)) ||
    	    !cBitmap.GetBitmap(&bmBitmap))
    		return FALSE;
    
    	CSize		cSize(bmBitmap.bmWidth, bmBitmap.bmHeight); 
    	int			nNbBtn	= cSize.cx/nBtnWidth;
    	RGBTRIPLE*	rgb		= (RGBTRIPLE*)(bmBitmap.bmBits);
    	COLORREF	rgbMask	= RGB(rgb[0].rgbtRed, rgb[0].rgbtGreen, rgb[0].rgbtBlue);
    	
    	if (!cImageList.Create(nBtnWidth, cSize.cy, ILC_COLOR24|ILC_MASK, nNbBtn, 0))
    		return FALSE;
    	
    	if (cImageList.Add(&cBitmap, rgbMask) == -1)
    		return FALSE;
    
    	SendMessage(uToolBarType, 0, (LPARAM)cImageList.m_hImageList);
    	cImageList.Detach(); 
    	cBitmap.Detach();
    	
    	return TRUE;
    }
    
    void CTrueColorToolBar::AddDropDownButton(CWnd* pParent, UINT uButtonID, UINT uMenuID)
    {
    	if (!m_bDropDown) {
    		GetToolBarCtrl().SendMessage(TB_SETEXTENDEDSTYLE, 0, (LPARAM)TBSTYLE_EX_DRAWDDARROWS);
    		m_bDropDown = TRUE;
    	}
    
    	SetButtonStyle(CommandToIndex(uButtonID), TBSTYLE_DROPDOWN);
    
    	stDropDownInfo DropDownInfo;
    	DropDownInfo.pParent	= pParent;
    	DropDownInfo.uButtonID	= uButtonID;
    	DropDownInfo.uMenuID	= uMenuID;
    	m_lstDropDownButton.Add(DropDownInfo);
    }
    
    void CTrueColorToolBar::OnToolbarDropDown(NMHDR * pnmtb, LRESULT *plr)
    {
          NMTOOLBARA * pnmtbb=(NMTOOLBARA *)pnmtb;
    	for (int i = 0; i < m_lstDropDownButton.GetSize(); i++) {
    		
    		stDropDownInfo DropDownInfo = m_lstDropDownButton.GetAt(i);
    
    		if (DropDownInfo.uButtonID == UINT(pnmtbb->iItem)) {
    
    			CMenu menu;
    			menu.LoadMenu(DropDownInfo.uMenuID);
    			CMenu* pPopup = menu.GetSubMenu(0);
    			
    			CRect rc;
    			SendMessage(TB_GETRECT, (WPARAM)pnmtbb->iItem, (LPARAM)&rc);
    			ClientToScreen(&rc);
    			
    			pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_VERTICAL,
    				                   rc.left, rc.bottom, DropDownInfo.pParent, &rc);
    			break;
    		}
    	}
    }  

    在toorbar中制作 更改属性

    在头文件中加入#include "TrueColorToolBar.h"
    CTrueColorToolBar m_ToolBar;
                                                                                                                                                                                                                                      
    爱程序 不爱bug 爱生活 不爱黑眼圈 我和你们一样 我和你们不一样 我不是凡客 我要做geek
  • 相关阅读:
    第二次站立会议4
    第二次站立会议3
    建议总结
    对搜狗输入法的个人评价
    第二期站立会议10
    典型用户和用户场景描述
    第二期站立会议9
    第二期站立会议8
    第二期站立会议7
    第二期站立会议6
  • 原文地址:https://www.cnblogs.com/yifi/p/4599241.html
Copyright © 2020-2023  润新知