win32如何调用系统颜色对话框
- 首先要包含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;
}
- 最后的效果如下所示:
(未选择颜色)
(选择颜色)
(效果)