参考网站:http://blog.csdn.net/u013242177/article/details/50437358

  • 首先要包含commdlg.h头文件,这个是通用对话框的头文件,包括文件对话框,颜色对话框,打印对话框等。
  • 然后再声明一个CHOOSECOLOR类型的变量,声明一个COLORREF类型的变量rgbLineColor,用来存储用户选择的颜色。
static CHOOSECOLOR stChooseColor;
static COLORREF rgbLineColor;

其中CHOOSECOLOR是一个结构体,包括了用ChooseColor函数来初始化颜色对话框的一些信息,可以从MSDN中查到这个结构体如下:

typedef struct {

DWORD lStructSize;

HWND hwndOwner;

HWND hInstance;

COLORREF rgbResult;

COLORREF* lpCustColors;

DWORD Flags;

LPARAM lCustData;

LPCCHOOKPROC lpfnHook;

LPCTSTR lpTemplateName;

} CHOOSECOLOR;

  • 然后再对stChooseColor的内容进行赋值
stChooseColor.lStructSize    = sizeof(CHOOSECOLOR) ;
stChooseColor.hwndOwner      = hWnd ;
stChooseColor.rgbResult      = rgbLineColor ;
stChooseColor.lpCustColors   = (LPDWORD) dwCustColors ;
stChooseColor.Flags          = CC_RGBINIT ;
stChooseColor.lCustData      = 0 ;
stChooseColor.lpfnHook       = NULL ;
stChooseColor.lpTemplateName = NULL ;

  • 最后用ChooseColor函数来创建一个颜色对话框供用户选择颜色
if (ChooseColor(&stChooseColor))
{
rgbLineColor = stChooseColor.rgbResult;
}

获取COLORREF中RGB分量值:

COLORREF colorrrefRGB =RGB(120,250,110);BYTE r = GetRValue(colorrrefRGB);BYTE g = GetGValue(colorrrefRGB);BYTE b = GetBValue(colorrrefRGB);

代码示例:

#include "commdlg.h"......................................void CmyDialogt::OnBnClickedButtonPickcolor()
{// TODO: Add your control notification handler code herestatic CHOOSECOLOR stChooseColor; static COLORREF rgbLineColor; static COLORREF dwCustColors[16];stChooseColor.lStructSize    = sizeof(CHOOSECOLOR) ;stChooseColor.hwndOwner      = this->m_hWnd ;stChooseColor.rgbResult      = rgbLineColor ;stChooseColor.lpCustColors   = (LPDWORD) dwCustColors ;stChooseColor.Flags          = CC_RGBINIT ;stChooseColor.lCustData      = 0 ;stChooseColor.lpfnHook       = NULL ;stChooseColor.lpTemplateName = NULL ;if (ChooseColor(&stChooseColor)){rgbLineColor = stChooseColor.rgbResult;BYTE r = GetRValue(rgbLineColor);BYTE g = GetGValue(rgbLineColor);BYTE b = GetBValue(rgbLineColor);}
}

运行结果:

转载于:https://www.cnblogs.com/betterwgo/p/6909903.html

win32调用系统颜色对话框相关推荐

  1. 在DOS环境下添加背景音乐、改变背景颜色、冻结屏幕和调用系统时间

    如下例, 例1: # include <Windows.h> # include <stdio.h> # pragma comment (lib, "Winmm.li ...

  2. C#调用系统的复制、移动、删除文件对话框

    #region 调用系统的文件复制移动删除[DllImport("shell32.dll", SetLastError = true, CharSet = CharSet.Unic ...

  3. 奥利给!!字体/颜色对话框这么豪横的解释,赶紧PICK一下吧!!

    上一篇文章介绍了如何创建基于对话框的模态对话框和非模态对话框.这篇文章为大家介绍一下字体对话框和颜色对话框的创建与实现. 话不多说,我们先来看一下效果图. 字体/颜色对话框 主要功能介绍 字体文本框 ...

  4. VBA调用系统调色板

    在Excel中设置单元格字体格式时,用户可以在调色板中选择颜色,如下图所示. 在VBA代码中如何提供调色板让用户选择颜色呢? 一种方法是调用Excel的系统对话框实现设置颜色,对话框如下图所示. Ap ...

  5. 14.3.1 调用系统的拍照功能

    14.3.1 调用系统的拍照功能 http://book.51cto.com  2010-06-22 14:19  李宁  中国水利水电出版社  我要评论(0) 摘要:<Android/OPho ...

  6. (调用系统电话薄)运行时权限的基本使用

    GitHub项目地址: https://github.com/Skymqq/RuntimePermissionTest.git 运行时权限是Android6.0系统引入的新特性,那么为何要引入这种运行 ...

  7. C#在winform中调用系统控制台输出

    SeayXu 原文C#在winform中调用系统控制台输出 在Winform程序中有时候调试会通过Console.Write()方式输出一些信息,这些信息是在Visual Studio的输出窗口显示. ...

  8. java实用教程——组件及事件处理——对话框(颜色对话框,自定义对话框)

    颜色对话框: 可以用javax.swing包中的JColorChooser类的静态方法 public staticColorshowDialog (Component component, Strin ...

  9. android 默认浏览器 视频播放 二维码,Android调用系统默认浏览器访问的方法

    一.启动android默认浏览器 这样子,android就可以调用起手机默认的浏览器访问. 二.指定相应的浏览器访问 1.指定android自带的浏览器访问 ( "com.android.b ...

最新文章

  1. golang 获取当前执行程序路径
  2. 机器学习算法基础——k-means原理
  3. Nginx如何启动、停止与重启
  4. Microsoft Artificial Intelligence Conference(2018.05.21)
  5. Java 8流:Micro Katas
  6. mAP提升40%!YOLO3改进版—— Poly-YOLO:更快,更精确的检测和实例分割
  7. 基于JAVA+SpringMVC+Mybatis+MYSQL的课堂考勤系统
  8. 引用、取址运算符、解引用运算符——傻傻分不清楚
  9. 场景法测试用例设计详解
  10. 优化高德地图加载出现白色
  11. epicor数据表增加字段
  12. GT传奇3服务器架设全攻略~!(新手篇)(转)
  13. python学习之函数(一)
  14. 华为云 ModelArts 应用轻松实现图片识别
  15. 170713 逆向-填数游戏
  16. Android科大讯飞语音按队列播报
  17. window nginx关闭后,访问代理仍成功
  18. ug提示找不到html文件,[图文教程] 以下文件无法加载,导致打开操作失败: 使用当前搜索选项找不到文件,部件已卸载...
  19. 如何打开计算机浏览器定位功能吗,如何在360浏览器中设置允许所有网站跟踪我的地理位置...
  20. 述职报告不会写?看这篇!

热门文章

  1. java+switch语句+枚举_Java:在子类下使用带有枚举的switch语句
  2. vue element table switch开关组件
  3. python threading.Timer
  4. javascript Node对象
  5. TensorFlow tf.keras.layers.TimeDistributed
  6. echarts scatter
  7. Pandas dtypes(数据类型)
  8. Centos7等保三级检查命令
  9. 6点叫醒全员的腾讯是枕戈待旦,还是如李彦宏说的“新瓶装旧酒”
  10. vSAN其实很简单-vSAN禁得起折腾的吗?