首页 > 代码库 > win32调用系统颜色对话框
win32调用系统颜色对话框
参考网站: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 here static 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); }}
运行结果:
win32调用系统颜色对话框
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。