win32如何調用系統顔色對話框
- 首先要包含commdlg.h頭檔案,這個是通用對話框的頭檔案,包括檔案對話框,顔色對話框,列印對話框等。
- 然後再聲明一個CHOOSECOLOR類型的變量,聲明一個COLORREF類型的變量rgbLineColor,用來存儲使用者選擇的顔色。
(其中CHOOSECOLOR是一個結構體,包括了用ChooseColor函數來初始化顔色對話框的一些資訊,可以從MSDN中查到這個結構體如下:static CHOOSECOLOR stChooseColor; static COLORREF rgbLineColor;
)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;
}
- 最後的效果如下所示: (未選擇顔色) (選擇顔色) (效果)