參考網站:http://blog.csdn.net/u013242177/article/details/50437358 首先要包含commdlg.h頭文件,這個是通用對話框的頭文件,包括文件對話框,顏色對話框,列印對話框等。 然後再聲明一個CHOOSECOLOR類型的變數,聲明一個COLORRE ...
參考網站: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); } }
運行結果: