VS2010中新控件的编程------颜色按钮类和颜色对话框
(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中新控件的编程------颜色按钮类和颜色对话框的更多相关文章
- VC、MFC中设置控件的背景色、标题、字体颜色、字体要注意的地方[转]
在MFC中设置控件的背景色.字体.字体颜色.标题等属性主要是利用OnCtlColor函数来实现. 如: HBRUSH CAlarm::OnCtlColor(CDC* pDC, CWnd* pWnd, ...
- Android 5.0新控件——FloatingActionButton(悬浮按钮)
Android 5.0新控件--FloatingActionButton(悬浮按钮) FloatingActionButton是5.0以后的新控件,一个悬浮按钮,之所以叫做悬浮按钮,主要是因为自带阴影 ...
- 在VS2010中ActiveX控件注册方法,使用regsvr32命令
上一篇小编展示了如何设置VS2010自带的ActiveX控件的容器测试程序,现在为大家演示一下如何注册ActiveX控件. 首先简单了解一下ActiveX控件的知识,ActiveX控件:简单来说,就是 ...
- C# 中删除控件的事件的方法类
方法一: 代码 /// <summary> /// 删除指定控件的指定事件 /// </summary> /// <param name="control&qu ...
- WPF中查找控件的扩展类
在wpf中查找控件要用到VisualTreeHelper类,但这个类并没有按照名字查找控件的方法,于是搜索网络,整理出下面这个类,感觉用起来很是方便. 贴出来,供大家参考. /// <summa ...
- Windows Phone8.1 SDK中的新控件
前言 WP8.1对开发者的影响要远大于对用户的影响.这篇博客就来一起看看哪些WP8.0中的控件被移除或替换,这些控件的介绍在MSDN上都非常的详细,所以这里只给出一些简单的介绍,来对比8.1 ...
- 如何向VS2010中插入ActiveX控件并且附带相应的类
上两篇文章中我们已经讲述了ActiveX控件的一些相关知识,本文中,简单说明一下如何在我们自己的程序中使用ActiveX控件.(仍以我们上节课的例子为例) 我们打开VS2010编辑器,新建一个基于对话 ...
- C# 向程序新建的窗体中添加控件,控件需要先实例化,然后用controls.add添加到新的窗体中去
C# 向程序新建的窗体中添加控件,控件需要先实例化,然后用controls.add添加到新的窗体中去 Form settingForm = new Form(); setForm deviceSet ...
- Android 中常见控件的介绍和使用
1 TextView文本框 1.1 TextView类的结构 TextView 是用于显示字符串的组件,对于用户来说就是屏幕中一块用于显示文本的区域.TextView类的层次关系如下: java.la ...
随机推荐
- 设计模式--单例模式之Lock
1.为什么用Lock及关键知识 当我们使用线程的时候,效率最高的方式当然是异步,即个个线程同时运行,其间互不依赖和等待.当不同的线程都需要访问某个资源的时候,就需要同步机制了,也就是说当对同一个资源进 ...
- AM335x(TQ335x)学习笔记——Nand&&网卡驱动移植
移植完毕声卡驱动之后本想再接再励,移植网卡驱动,但没想到的是TI维护的内核太健壮,移植网卡驱动跟之前移植按键驱动一样简单,Nand驱动也是如此,于是,本人将Nand和网卡放在同一篇文章中介绍.介绍之前 ...
- Summary Day30
1.内存管理 1.1 进程中的内存区域划分 代码区 仅仅读常理区 全局区 BSS 堆 栈 1.2 字符串存储形式之间的比較 字符指针,字符数组.字符动态内存 1.3 虚拟内 ...
- css3-12 transform:scale(1.2,1.2)实现移入元素变大特效
css3-12 transform:scale(1.2,1.2)实现移入元素变大特效 一.总结 一句话总结:transform:scale(1.2,1.2)鼠标移入的时候变大一点点,超出边框的部分隐藏 ...
- zeros() 函数——MATLAB
zeros函数——生成零矩阵 ones函数——生成全1阵 [zeros的使用方法] B=zeros(n):生成n×n全零阵. B=zeros(m,n):生成m×n全零阵. B=zeros([m n]) ...
- idea+springboot+freemarker热部署(转)
今天在学习springboot集成freemarker模板引擎修改代码时,发现每次修改一次freemarker文件时,都必须重启下应用,浏览器刷新才能显示修改后的内容,这样效率太低,每次启动一次应用都 ...
- [Angular] Show a loading indicator in Angular using *ngIf/else, the as keyword and the async pipe
The network may be unreliable and loading data may take time. Thus it is important to give the user ...
- Vim技巧之四大模式_插入模式
Vim技巧之四大模式_插入模式 在插入模式中及时更正错误 插入-普通模式 在插入模式模式以下直接粘贴指定寄存器的内容 插入模式中做运算 用字符编码插入很常使用字符 替换已有的文本 Vim技巧之四大模式 ...
- node-sass的安装问题
1.认识node-sass 我觉得要解决node-sass的问题,你首先至少要简单的了解node-sass是个什么东西?为什么要安装它? 对于在项目中使用sass的语法的时候,需要通过sass-loa ...
- 神奇校车 = topsage
https://post.smzdm.com/p/6356/ 适合6岁至99岁的小盆友看的<The Magic School Bus> (神奇校车) http://club.topsage ...