真彩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. #ifndef TRUECOLORTOOLBAR_H_
  19. #define TRUECOLORTOOLBAR_H_
  20.  
  21. #if _MSC_VER > 1000
  22. #pragma once
  23. #endif // _MSC_VER > 1000
  24.  
  25. #include <afxtempl.h>
  26.  
  27. /////////////////////////////////////////////////////////////////////////////
  28. // CTrueColorToolBar
  29.  
  30. class CTrueColorToolBar : public CToolBar
  31. {
  32. // Construction
  33. public:
  34. CTrueColorToolBar();
  35.  
  36. // Attributes
  37. private:
  38. BOOL m_bDropDown;
  39.  
  40. struct stDropDownInfo {
  41. public:
  42. UINT uButtonID;
  43. UINT uMenuID;
  44. CWnd* pParent;
  45. };
  46.  
  47. CArray <stDropDownInfo, stDropDownInfo&> m_lstDropDownButton;
  48.  
  49. // Operations
  50. public:
  51. BOOL LoadTrueColorToolBar(int nBtnWidth,
  52. UINT uToolBar,
  53. UINT uToolBarHot = ,
  54. UINT uToolBarDisabled = );
  55.  
  56. void AddDropDownButton(CWnd* pParent, UINT uButtonID, UINT uMenuID);
  57.  
  58. private:
  59. BOOL SetTrueColorToolBar(UINT uToolBarType,
  60. UINT uToolBar,
  61. int nBtnWidth);
  62.  
  63. // Overrides
  64. // ClassWizard generated virtual function overrides
  65. //{{AFX_VIRTUAL(CTrueColorToolBar)
  66. //}}AFX_VIRTUAL
  67.  
  68. // Implementation
  69. public:
  70. virtual ~CTrueColorToolBar();
  71.  
  72. // Generated message map functions
  73. protected:
  74. //{{AFX_MSG(CTrueColorToolBar)
  75. afx_msg void OnToolbarDropDown(NMHDR * pnmh, LRESULT* plRes);
  76. //}}AFX_MSG
  77.  
  78. DECLARE_MESSAGE_MAP()
  79. };
  80.  
  81. /////////////////////////////////////////////////////////////////////////////
  82.  
  83. //{{AFX_INSERT_LOCATION}}
  84. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  85.  
  86. #endif // TRUECOLORTOOLBAR_H_
  1. /***=========================================================================
  2. ==== ====
  3. ==== D C U t i l i t y ====
  4. ==== ====
  5. =============================================================================
  6. ==== ====
  7. ==== File name : TrueColorToolBar.cpp ====
  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. #include "stdafx.h"
  19. #include "TrueColorToolBar.h"
  20.  
  21. #ifdef _DEBUG
  22. #define new DEBUG_NEW
  23. #undef THIS_FILE
  24. static char THIS_FILE[] = __FILE__;
  25. #endif
  26.  
  27. /////////////////////////////////////////////////////////////////////////////
  28. // CTrueColorToolBar
  29.  
  30. CTrueColorToolBar::CTrueColorToolBar()
  31. {
  32. m_bDropDown = FALSE;
  33. }
  34.  
  35. CTrueColorToolBar::~CTrueColorToolBar()
  36. {
  37. }
  38.  
  39. BEGIN_MESSAGE_MAP(CTrueColorToolBar, CToolBar)
  40. //{{AFX_MSG_MAP(CTrueColorToolBar)
  41. ON_NOTIFY_REFLECT(TBN_DROPDOWN, OnToolbarDropDown)
  42. //}}AFX_MSG_MAP
  43. END_MESSAGE_MAP()
  44.  
  45. /////////////////////////////////////////////////////////////////////////////
  46. // CTrueColorToolBar message handlers
  47. BOOL CTrueColorToolBar::LoadTrueColorToolBar(int nBtnWidth,
  48. UINT uToolBar,
  49. UINT uToolBarHot,
  50. UINT uToolBarDisabled)
  51. {
  52. if (!SetTrueColorToolBar(TB_SETIMAGELIST, uToolBar, nBtnWidth))
  53. return FALSE;
  54.  
  55. if (uToolBarHot) {
  56. if (!SetTrueColorToolBar(TB_SETHOTIMAGELIST, uToolBarHot, nBtnWidth))
  57. return FALSE;
  58. }
  59.  
  60. if (uToolBarDisabled) {
  61. if (!SetTrueColorToolBar(TB_SETDISABLEDIMAGELIST, uToolBarDisabled, nBtnWidth))
  62. return FALSE;
  63. }
  64.  
  65. return TRUE;
  66. }
  67.  
  68. BOOL CTrueColorToolBar::SetTrueColorToolBar(UINT uToolBarType,
  69. UINT uToolBar,
  70. int nBtnWidth)
  71. {
  72. CImageList cImageList;
  73. CBitmap cBitmap;
  74. BITMAP bmBitmap;
  75.  
  76. if (!cBitmap.Attach(LoadImage(AfxGetResourceHandle(), MAKEINTRESOURCE(uToolBar),
  77. IMAGE_BITMAP, 0, 0,
  78. LR_DEFAULTSIZE|LR_CREATEDIBSECTION)) ||
  79. !cBitmap.GetBitmap(&bmBitmap))
  80. return FALSE;
  81.  
  82. CSize cSize(bmBitmap.bmWidth, bmBitmap.bmHeight);
  83. int nNbBtn = cSize.cx/nBtnWidth;
  84. RGBTRIPLE* rgb = (RGBTRIPLE*)(bmBitmap.bmBits);
  85. COLORREF rgbMask = RGB(rgb[0].rgbtRed, rgb[0].rgbtGreen, rgb[0].rgbtBlue);
  86.  
  87. if (!cImageList.Create(nBtnWidth, cSize.cy, ILC_COLOR24|ILC_MASK, nNbBtn, 0))
  88. return FALSE;
  89.  
  90. if (cImageList.Add(&cBitmap, rgbMask) == -1)
  91. return FALSE;
  92.  
  93. SendMessage(uToolBarType, 0, (LPARAM)cImageList.m_hImageList);
  94. cImageList.Detach();
  95. cBitmap.Detach();
  96.  
  97. return TRUE;
  98. }
  99.  
  100. void CTrueColorToolBar::AddDropDownButton(CWnd* pParent, UINT uButtonID, UINT uMenuID)
  101. {
  102. if (!m_bDropDown) {
  103. GetToolBarCtrl().SendMessage(TB_SETEXTENDEDSTYLE, 0, (LPARAM)TBSTYLE_EX_DRAWDDARROWS);
  104. m_bDropDown = TRUE;
  105. }
  106.  
  107. SetButtonStyle(CommandToIndex(uButtonID), TBSTYLE_DROPDOWN);
  108.  
  109. stDropDownInfo DropDownInfo;
  110. DropDownInfo.pParent = pParent;
  111. DropDownInfo.uButtonID = uButtonID;
  112. DropDownInfo.uMenuID = uMenuID;
  113. m_lstDropDownButton.Add(DropDownInfo);
  114. }
  115.  
  116. void CTrueColorToolBar::OnToolbarDropDown(NMHDR * pnmtb, LRESULT *plr)
  117. {
  118. NMTOOLBARA * pnmtbb=(NMTOOLBARA *)pnmtb;
  119. for (int i = 0; i < m_lstDropDownButton.GetSize(); i++) {
  120.  
  121. stDropDownInfo DropDownInfo = m_lstDropDownButton.GetAt(i);
  122.  
  123. if (DropDownInfo.uButtonID == UINT(pnmtbb->iItem)) {
  124.  
  125. CMenu menu;
  126. menu.LoadMenu(DropDownInfo.uMenuID);
  127. CMenu* pPopup = menu.GetSubMenu(0);
  128.  
  129. CRect rc;
  130. SendMessage(TB_GETRECT, (WPARAM)pnmtbb->iItem, (LPARAM)&rc);
  131. ClientToScreen(&rc);
  132.  
  133. pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_VERTICAL,
  134. rc.left, rc.bottom, DropDownInfo.pParent, &rc);
  135. break;
  136. }
  137. }
  138. }
  139.  
  140. toorbar中制作 更改属性
  141.  
  142. 在头文件中加入#include "TrueColorToolBar.h"
    CTrueColorToolBar m_ToolBar;

True bar的更多相关文章

  1. vue自定义指令

    Vue自定义指令: Vue.directive('myDr', function (el, binding) { el.onclick =function(){ binding.value(); } ...

  2. Erlang--proplists结构解析

    proplists 模块适用数据量较少的场景,处理配置文件和函数选项时常用.proplists对内部数据结构是Key-Value键值对形式,第一个元素做key用来查询和删除,如果一个key有多个值就会 ...

  3. 深入理解JSON对象

    × 目录 [1]语法规则 [2]stringify [3]parse[4]eval 前面的话 json(javascript object notation)全称是javascript对象表示法,它是 ...

  4. jacascript中的原型链以原型

    今地铁上看慕课网js课程,又学习到关于原型的一些知识,记录如下.如有偏差欢迎指正: 三张图要连起来看哦~ 图解: 1.创建一个函数foo. 2.运用函数的prototype属性(这个属性就是实例对象的 ...

  5. 关于vue指令(directive)

    1.指令的注册 指令跟组件一样需要注册才能使用,同样有两种方式,一种是全局注册: Vue.directive('dirName',function(){ //定义指令 }); 另外一种是局部注册: n ...

  6. 译\Node.js应用的持续部署

    Node.js应用的持续部署 翻译前 翻译自:https://blog.risingstack.com/continuous-deployment-of-node-js-applications/ 正 ...

  7. es6之set和map

    1.set ES6提供了新的数据结构Set.它类似于数组,但是成员的值都是唯一的,没有重复的值,set本身就是构造函数,所以可以通过new的方式来创建对象 // 例一 可以做数组去重用 var set ...

  8. 详解javascript,ES5标准中新增的几种高效Object操作方法

    1.Object 对象 (JavaScript) 提供对所有 JavaScript 对象通用的功能.参考网站:https://msdn.microsoft.com/zh-cn/library/kb6t ...

  9. R绘图基础

    一,布局 R绘图所占的区域,被分成两大部分,一是外围边距,一是绘图区域. 外围边距可使用par()函数中的oma来进行设置.比如oma=c(4,3,2,1),就是指外围边距分别为下边距:4行,左边距3 ...

随机推荐

  1. java程序设计单一原则

    在我的程序设计中一般一个类就负责一个职责 ex: class Animal{ public void brether(String animal){ System.out.println(animal ...

  2. [转载] linux 速查表

    原文: http://www.nixtutor.com/linux/all-the-best-linux-cheat-sheets/ 1. Linux Command Line Linux Refer ...

  3. 2014 Multi-University Training Contest 1

    A hdu4861 打表找规律 #include <iostream> #include<cstdio> #include<cstring> #include< ...

  4. Oracle一列的多行数据拼成一行显示字符

    Oracle一列的多行数据拼成一行显示字符   oracle 提供了两个函数WMSYS.WM_CONCAT 和 ListAgg函数.    www.2cto.com   先介绍:WMSYS.WM_CO ...

  5. NYOJ 298 点的变换

    题目链接:298 点的变换 这题放在矩阵快速幂里,我一开始想不透它是怎么和矩阵搭上边的,然后写了个暴力的果然超时,上网看了题解后,发现竟然能够构造一些精巧的矩阵来处理,不得不说实在太强大了! http ...

  6. jquery实现全选、反选、不选

    <!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8&quo ...

  7. 使用 Velocity 模板引擎快速生成代码(zhuan)

    http://www.ibm.com/developerworks/cn/java/j-lo-velocity1/ ****************************************** ...

  8. 解决SQL命令行回退的问题

    场景 在linux或者aix上安装后Oracle后,在SQL命令行下无法通过键盘的退格键回退,如下 解决方法 安装软件 # rpm -ivh rlwrap-0.41-1.el6.x86_64.rpm ...

  9. MyBatis学习笔记(三) 关联关系

    首先给大家推荐几个网页: http://blog.csdn.net/isea533/article/category/2092001 没事看看 - MyBatis工具:www.mybatis.tk h ...

  10. Hbase之测试数据

    info ship user name age height phone addr email dept salary create 'user','info','ship'; put 'user', ...