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_

/***=========================================================================
====                                                                     ====
====                          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;
                                                                                                                                                                                                                                  
时间: 2024-10-13 20:22:29

True bar的相关文章

第二节:指令的使用(6)——自定义指令

1.指令定义的钩子函数:(这些钩子函数都是可选的) bind: 只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个在绑定时执行一次的初始化动作. inserted: 被绑定元素插入父节点时调用(父节点存在即可调用,不必存在于 document 中). update: 被绑定元素所在的模板更新时调用,而不论绑定值是否变化.通过比较更新前后的绑定值,可以忽略不必要的模板更新. componentUpdated: 被绑定元素所在模板完成一次更新周期时调用,即模版更新完成的调用. unb

关于json 的那些知识点

深入理解JSON对象 前面的话 json(javascript object notation)全称是javascript对象表示法,它是一种数据交换的文本格式,而不是一种编程语言,用于读取结构化数据.2001年由Douglas Crockford提出,目的是取代繁琐笨重的XML格式.本文将详细介绍关于json的内容 语法规则 JSON的语法可以表示以下三种类型的值 [1]简单值 简单值使用与JavaScript相同的语法,可以在JSON中表示字符串.数值.布尔值和null 字符串必须使用双引号

Android ActionBar详解

关于ActionBar,相信大家并不陌生,但是真正能够熟练使用的也不是很多,这篇文章主要为大家详细介绍ActionBar的相关知识,ActionBar是在Android3.0中引入的概念,所以在2.x系统中使用ActionBar我们需要依赖ActionBarSherklock或者androi-support-v7库,ActionBarSherklock是anroid中非常有名的一个开源项目,android-support-v7是Google后来推出的一个库,有了v7库后AndroidBarShe

Android导航栏ActionBar的详细分析 一

尊重原创:http://blog.csdn.net/yuanzeyao/article/details/39378825 关于ActionBar,相信大家并不陌生,但是真正能够熟练使用的也不是很多,这篇文章主要为大家详细介绍ActionBar的相关知识,ActionBar是在Android3.0中引入的概念,所以在2.x系统中使用ActionBar我们需要依赖ActionBarSherklock或者androi-support-v7库,ActionBarSherklock是anroid中非常有名

理解Vue中的Render渲染函数

VUE一般使用template来创建HTML,然后在有的时候,我们需要使用javascript来创建html,这时候我们需要使用render函数.比如如下我想要实现如下html: <div id="container"> <h1> <a href="#"> Hello world! </a> </h1> </div> 我们会如下使用: <!DOCTYPE html> <html

JS中简单的this学习

我在学习JS初期,在使用this的时候经常出现问题,当然就是在现在,也有一些场景不能很好的明白this到底指代的是什么?看下面一个例子: ? 1 2 3 4 5 6 7 8 9 10 var x = 10;    var foo = {        x: 20,        bar: function() {            alert(this.x);        }    }    var bar = foo.bar;    foo.bar();    //20    bar()

vue学习(二):自定义过滤器和自定义指令

#自定义指令 自定义指令的参数有: el: 指令所绑定的元素,可以用来直接操作 DOM . binding: 一个对象,包含以下属性: name: 指令名,不包括 v- 前缀. value: 指令的绑定值, 例如: v-my-directive="1 + 1", value 的值是 2. oldValue: 指令绑定的前一个值,仅在 update 和 componentUpdated 钩子中可用.无论值是否改变都可用. expression: 绑定值的字符串形式. 例如 v-my-di

iOS - Swift UISearchController仿微信搜索框

0x01.创建一个UISearchController 如果传入的searchController为nil,则表示搜索的结果在当前控制器中显示,现在我让它在searchVC中显示. // 创建searchResultVC let searchVC = UIViewController() // 设置背景颜色为红色 searchVC.view.backgroundColor = UIColor.red let searchController = UISearchController(search

深入理解JSON对象

深入理解JSON对象 前面的话 json(javascript object notation)全称是javascript对象表示法,它是一种数据交换的文本格式,而不是一种编程语言,用于读取结构化数据.2001年由Douglas Crockford提出,目的是取代繁琐笨重的XML格式.本文将详细介绍关于json的内容 语法规则 JSON的语法可以表示以下三种类型的值 [1]简单值 简单值使用与JavaScript相同的语法,可以在JSON中表示字符串.数值.布尔值和null 字符串必须使用双引号