(1)      颜色按钮类和颜色对话框

1) 颜色对话框

MFC提供了颜色对话框类CMFCColorDialog进行颜色的选择,系统可以利用DoModal()调用,然后选择相应的颜色。

CMFCColorDialog dlg(m_Color,0, this);

if(dlg.DoModal()==IDOK)

{

m_Color = dlg.GetColor();

m_ColorDlgMsg.Format(_T("%d,%d,%d"),GetRValue(m_Color),GetGValue(m_Color),GetBValue(m_Color));

UpdateData(FALSE);

}

2) 颜色按钮

可以利用颜色按钮选择相应的颜色,具有直观,在资源中增加按钮控件,并定义为CMFCColorButton,利用该类的函数初始化。

初始化:

m_PickerBut.EnableAutomaticButton(_T("颜?色¦?选?择?"),RGB(255, 0, 255));

m_PickerBut.EnableOtherButton(_T("其?它¨¹"));

m_PickerBut.SetColor((COLORREF)-1);

m_PickerBut.SetColumnsNumber(10);

颜色选择,当按下按钮时,可以获得颜色值:

COLORREFcolor = m_ColorPicker.GetColor();

if (color == -1)

{

color= m_ColorPicker.GetAutomaticColor();

}

m_strRGB.Format(_T("%d,%d,%d"), GetRValue(color), GetGValue(color),GetBValue(color));

3) 颜色条控件

在资源中加入Picture控件,建立颜色条控件的边界,然后利用此范围建立CMFCColorBar,利用CMFCColorBar的操作函数建立并设置属性。

m_ColorBarFrame.GetClientRect(&rectColorBar);    //获取区域

m_ColorBarFrame.MapWindowPoints(this,&rectColorBar);   //将区域映射到窗体坐标

m_wndColorBar.SetHorzMargin(0);

m_wndColorBar.SetVertMargin(0);

m_wndColorBar.EnableOtherButton(_T("其?它¨¹"));

m_wndColorBar.CreateControl(this,&rectColorBar,IDC_COLOR_BAR,5);

m_wndColorBar.SetColor(RGB(0,0,0));

建立鼠标单击消息并获取颜色信息

COLORREFcolor = m_wndColorBar.GetColor();

m_ColorBarMsg.Format(_T("%d,%d,%d"), GetRValue(color),GetGValue(color), GetBValue(color));

UpdateData(FALSE);

为了建立以调色板为基础的颜色条,首先需要建立调色板,在颜色条创建时利用调色板

//调色板的建立

#define NUM_COLOURS 64

struct

{

LOGPALETTE    LogPalette;

PALETTEENTRY  PalEntry[NUM_COLOURS];

}pal;

LOGPALETTE*pLogPalette = (LOGPALETTE*) &pal;

pLogPalette->palVersion    = 0x300;

pLogPalette->palNumEntries= (WORD) NUM_COLOURS;

COLORREFcolorStart = RGB(0, 255, 255);

COLORREFcolorFinish = RGB(255, 255, 255);

int nShift = 6;

for (int i = 0; i< NUM_COLOURS; i++)

{

BYTEbR = (BYTE)((GetRValue(colorStart) *(NUM_COLOURS - i) + GetRValue(colorFinish)* i) >> nShift);

BYTEbG = (BYTE)((GetGValue(colorStart) *(NUM_COLOURS - i) + GetGValue(colorFinish)* i) >> nShift);

BYTEbB = (BYTE)((GetBValue(colorStart) *(NUM_COLOURS - i) + GetBValue(colorFinish)* i) >> nShift);

pLogPalette->palPalEntry[i].peRed   = bR;

pLogPalette->palPalEntry[i].peGreen= bG;

pLogPalette->palPalEntry[i].peBlue  = bB;

pLogPalette->palPalEntry[i].peFlags= 0;

}

//颜色条的创建

m_palColorPicker.CreatePalette(pLogPalette);

m_wndColorBar2.SetHorzMargin(0);

m_wndColorBar2.SetVertMargin(0);

m_ColorBarFramw2.GetClientRect(&rectColorBar);

m_ColorBarFramw2.MapWindowPoints(this, &rectColorBar);

m_wndColorBar2.CreateControl(this, rectColorBar, IDC_COLOR_BAR2, 8 /* columns */, &m_palColorPicker);

m_wndColorBar2.SetColor(colorStart);

颜色按钮的界面

VS2010中新控件的编程------颜色按钮类和颜色对话框的更多相关文章

  1. VC、MFC中设置控件的背景色、标题、字体颜色、字体要注意的地方[转]

    在MFC中设置控件的背景色.字体.字体颜色.标题等属性主要是利用OnCtlColor函数来实现. 如: HBRUSH CAlarm::OnCtlColor(CDC* pDC, CWnd* pWnd, ...

  2. Android 5.0新控件——FloatingActionButton(悬浮按钮)

    Android 5.0新控件--FloatingActionButton(悬浮按钮) FloatingActionButton是5.0以后的新控件,一个悬浮按钮,之所以叫做悬浮按钮,主要是因为自带阴影 ...

  3. 在VS2010中ActiveX控件注册方法,使用regsvr32命令

    上一篇小编展示了如何设置VS2010自带的ActiveX控件的容器测试程序,现在为大家演示一下如何注册ActiveX控件. 首先简单了解一下ActiveX控件的知识,ActiveX控件:简单来说,就是 ...

  4. C# 中删除控件的事件的方法类

    方法一: 代码 /// <summary> /// 删除指定控件的指定事件 /// </summary> /// <param name="control&qu ...

  5. WPF中查找控件的扩展类

    在wpf中查找控件要用到VisualTreeHelper类,但这个类并没有按照名字查找控件的方法,于是搜索网络,整理出下面这个类,感觉用起来很是方便. 贴出来,供大家参考. /// <summa ...

  6. Windows Phone8.1 SDK中的新控件

    前言      WP8.1对开发者的影响要远大于对用户的影响.这篇博客就来一起看看哪些WP8.0中的控件被移除或替换,这些控件的介绍在MSDN上都非常的详细,所以这里只给出一些简单的介绍,来对比8.1 ...

  7. 如何向VS2010中插入ActiveX控件并且附带相应的类

    上两篇文章中我们已经讲述了ActiveX控件的一些相关知识,本文中,简单说明一下如何在我们自己的程序中使用ActiveX控件.(仍以我们上节课的例子为例) 我们打开VS2010编辑器,新建一个基于对话 ...

  8. C# 向程序新建的窗体中添加控件,控件需要先实例化,然后用controls.add添加到新的窗体中去

    C# 向程序新建的窗体中添加控件,控件需要先实例化,然后用controls.add添加到新的窗体中去 Form settingForm = new Form(); setForm deviceSet ...

  9. Android 中常见控件的介绍和使用

    1 TextView文本框 1.1 TextView类的结构 TextView 是用于显示字符串的组件,对于用户来说就是屏幕中一块用于显示文本的区域.TextView类的层次关系如下: java.la ...

随机推荐

  1. 前端项目课程7 banner设计注意事项

    前端项目课程7 banner设计注意事项 一.总结 一句话总结: 1.每个部分的里面的部分可以用相同的名字么,如何修改样式呢? 可以, 用模块名 + 比如上中下(top middle bottom) ...

  2. windows版 nginx配置反向代理实例教程 跳转tomcat和php网站

    抄自 https://www.cnblogs.com/j-star/p/8785334.html 个人理解 nginx端口设置为80,简称n tomcat端口设置为其他,例如8080,简称t php网 ...

  3. 使用wepy开发微信小程序商城第三篇:购物车(布局篇)

    使用wepy开发微信小程序商城 第三篇:购物车(布局篇) 前两篇如下: 使用wepy开发微信小程序商城第一篇:项目初始化 使用wepy开发微信小程序商城第二篇:路由配置和页面结构 基于上两篇内容,开始 ...

  4. (转)在server 2008R2组策略设置所有域计算机防火墙都处于更关闭状态

    组策略在域控中相当重要,我们可以下放一个组策略去统一管理下面客户端的配置,具体配置如下: 首先点击开始____管理工具____组策略管理 防火墙关闭完之后我们该如何到客户端验证呢? 首先我们需要现在客 ...

  5. hdu 1506 Largest Rectangle in a Histogram ((dp求最大子矩阵))

    # include <stdio.h> # include <algorithm> # include <iostream> # include <math. ...

  6. 【u249】新斯诺克

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 斯诺克又称英式台球,是一种流行的台球运动.在球桌上,台面四角以及两长边中心位置各有一个球洞,使用的球分 ...

  7. Android App优化之延长电池续航时间

    禁用广播接收器 确保广播接收器在真正须要时才运行指令,在onResume中当中广播接收器,在onPause中禁用. 在manifest文件里声明广播接收器时,事先默认配置成禁用的 <receiv ...

  8. mysql zip文件安装

    bin目录下执行mysqld -install再执行mysqld --initialize-insecure 启动服务:net start mysql

  9. 手把手教你完成App支付JAVA后台-支付宝支付JAVA

    接着上一篇博客,我们暂时完成了手机端的部分支付代码,接下来,我们继续写后台的代码. 后台基本需要到以下几个参数,我都将他们写在了properties文件中: 支付宝参数 AliPay.payURL = ...

  10. ArcEngine开发之Command控件使用篇

    转自原文 ArcEngine开发之Command控件使用篇 在ArcEngine类库中有大量的Command控件用来与地图控件进行操作和交互.比如有一系列的地图浏览控件.地图查询控件.图斑选取控件.编 ...