True bar
真彩bar
- /***=========================================================================
- ==== ====
- ==== D C U t i l i t y ====
- ==== ====
- =============================================================================
- ==== ====
- ==== File name : TrueColorToolBar.h ====
- ==== Project name : Tester ====
- ==== Project number : --- ====
- ==== Creation date : 13/1/2003 ====
- ==== Author(s) : Dany Cantin ====
- ==== ====
- ==== Copyright ?DCUtility 2003 ====
- ==== ====
- =============================================================================
- ===========================================================================*/
- #ifndef TRUECOLORTOOLBAR_H_
- #define TRUECOLORTOOLBAR_H_
- #if _MSC_VER > 1000
- #pragma once
- #endif // _MSC_VER > 1000
- #include <afxtempl.h>
- /////////////////////////////////////////////////////////////////////////////
- // CTrueColorToolBar
- class CTrueColorToolBar : public CToolBar
- {
- // Construction
- public:
- CTrueColorToolBar();
- // Attributes
- private:
- BOOL m_bDropDown;
- struct stDropDownInfo {
- public:
- UINT uButtonID;
- UINT uMenuID;
- CWnd* pParent;
- };
- CArray <stDropDownInfo, stDropDownInfo&> m_lstDropDownButton;
- // Operations
- public:
- BOOL LoadTrueColorToolBar(int nBtnWidth,
- UINT uToolBar,
- UINT uToolBarHot = ,
- UINT uToolBarDisabled = );
- void AddDropDownButton(CWnd* pParent, UINT uButtonID, UINT uMenuID);
- private:
- BOOL SetTrueColorToolBar(UINT uToolBarType,
- UINT uToolBar,
- int nBtnWidth);
- // Overrides
- // ClassWizard generated virtual function overrides
- //{{AFX_VIRTUAL(CTrueColorToolBar)
- //}}AFX_VIRTUAL
- // Implementation
- public:
- virtual ~CTrueColorToolBar();
- // Generated message map functions
- protected:
- //{{AFX_MSG(CTrueColorToolBar)
- afx_msg void OnToolbarDropDown(NMHDR * pnmh, LRESULT* plRes);
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
- };
- /////////////////////////////////////////////////////////////////////////////
- //{{AFX_INSERT_LOCATION}}
- // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
- #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;
True bar的更多相关文章
- vue自定义指令
Vue自定义指令: Vue.directive('myDr', function (el, binding) { el.onclick =function(){ binding.value(); } ...
- Erlang--proplists结构解析
proplists 模块适用数据量较少的场景,处理配置文件和函数选项时常用.proplists对内部数据结构是Key-Value键值对形式,第一个元素做key用来查询和删除,如果一个key有多个值就会 ...
- 深入理解JSON对象
× 目录 [1]语法规则 [2]stringify [3]parse[4]eval 前面的话 json(javascript object notation)全称是javascript对象表示法,它是 ...
- jacascript中的原型链以原型
今地铁上看慕课网js课程,又学习到关于原型的一些知识,记录如下.如有偏差欢迎指正: 三张图要连起来看哦~ 图解: 1.创建一个函数foo. 2.运用函数的prototype属性(这个属性就是实例对象的 ...
- 关于vue指令(directive)
1.指令的注册 指令跟组件一样需要注册才能使用,同样有两种方式,一种是全局注册: Vue.directive('dirName',function(){ //定义指令 }); 另外一种是局部注册: n ...
- 译\Node.js应用的持续部署
Node.js应用的持续部署 翻译前 翻译自:https://blog.risingstack.com/continuous-deployment-of-node-js-applications/ 正 ...
- es6之set和map
1.set ES6提供了新的数据结构Set.它类似于数组,但是成员的值都是唯一的,没有重复的值,set本身就是构造函数,所以可以通过new的方式来创建对象 // 例一 可以做数组去重用 var set ...
- 详解javascript,ES5标准中新增的几种高效Object操作方法
1.Object 对象 (JavaScript) 提供对所有 JavaScript 对象通用的功能.参考网站:https://msdn.microsoft.com/zh-cn/library/kb6t ...
- R绘图基础
一,布局 R绘图所占的区域,被分成两大部分,一是外围边距,一是绘图区域. 外围边距可使用par()函数中的oma来进行设置.比如oma=c(4,3,2,1),就是指外围边距分别为下边距:4行,左边距3 ...
随机推荐
- java程序设计单一原则
在我的程序设计中一般一个类就负责一个职责 ex: class Animal{ public void brether(String animal){ System.out.println(animal ...
- [转载] linux 速查表
原文: http://www.nixtutor.com/linux/all-the-best-linux-cheat-sheets/ 1. Linux Command Line Linux Refer ...
- 2014 Multi-University Training Contest 1
A hdu4861 打表找规律 #include <iostream> #include<cstdio> #include<cstring> #include< ...
- Oracle一列的多行数据拼成一行显示字符
Oracle一列的多行数据拼成一行显示字符 oracle 提供了两个函数WMSYS.WM_CONCAT 和 ListAgg函数. www.2cto.com 先介绍:WMSYS.WM_CO ...
- NYOJ 298 点的变换
题目链接:298 点的变换 这题放在矩阵快速幂里,我一开始想不透它是怎么和矩阵搭上边的,然后写了个暴力的果然超时,上网看了题解后,发现竟然能够构造一些精巧的矩阵来处理,不得不说实在太强大了! http ...
- jquery实现全选、反选、不选
<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8&quo ...
- 使用 Velocity 模板引擎快速生成代码(zhuan)
http://www.ibm.com/developerworks/cn/java/j-lo-velocity1/ ****************************************** ...
- 解决SQL命令行回退的问题
场景 在linux或者aix上安装后Oracle后,在SQL命令行下无法通过键盘的退格键回退,如下 解决方法 安装软件 # rpm -ivh rlwrap-0.41-1.el6.x86_64.rpm ...
- MyBatis学习笔记(三) 关联关系
首先给大家推荐几个网页: http://blog.csdn.net/isea533/article/category/2092001 没事看看 - MyBatis工具:www.mybatis.tk h ...
- Hbase之测试数据
info ship user name age height phone addr email dept salary create 'user','info','ship'; put 'user', ...