天天看点

win32如何调用系统颜色对话框win32如何调用系统颜色对话框

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      =  ;
            stChooseColor.lpfnHook       = NULL ;
            stChooseColor.lpTemplateName = NULL ;`  
           
  • 最后用ChooseColor函数来创建一个颜色对话框供用户选择颜色
if (ChooseColor(&stChooseColor))
{
    rgbLineColor = stChooseColor.rgbResult;
}
           
  • 最后的效果如下所示:
    win32如何调用系统颜色对话框win32如何调用系统颜色对话框
    (未选择颜色)
    win32如何调用系统颜色对话框win32如何调用系统颜色对话框
    (选择颜色)
    win32如何调用系统颜色对话框win32如何调用系统颜色对话框
    (效果)