typedef struct {   // cc 
    DWORD        lStructSize; 
    HWND         hwndOwner; 
    HWND         hInstance; 
    COLORREF     rgbResult; 
    COLORREF*    lpCustColors; 
    DWORD        Flags; 
    LPARAM       lCustData; 
    LPCCHOOKPROC lpfnHook; 
    LPCTSTR      lpTemplateName; 
} CHOOSECOLOR;
lStructSize には、この構造体のサイズを指定します| 定数 | 解説 | 
|---|---|
| CC_ENABLEHOOK | lpfnHook メンバで指定されたフック関数を有効にする | 
| CC_ENABLETEMPLATE | nInstance メンバと lpTemplateName メンバで指定された ダイアログボックステンプレートを使ってダイアログを作成します  | 
| CC_ENABLETEMPLATEHANDLE | hInstance メンバがロード済みのダイアログボックステンプレートを含む メモリブロックを指していることを表す このフラグが指定されている場合、lpTemplateName は無視される  | 
| CC_FULLOPEN | カスタムカラー作成部を含む 色の設定ダイアログボックス全体を表示する  | 
| CC_PREVENTFULLOPEN | 「色の作成」ボタンを無効にする | 
| CC_RGBINIT | rgbResult メンバで指定した値を 初期設定カラーとしてダイアログに使用します  | 
| CC_SHOWHELP | ダイアログボックスに「ヘルプ」ボタンを追加する このフラグを指定した場合、hwndOwner を指定しなければなりません  | 
#include <windows.h>
LRESULT CALLBACK WndProc(HWND hWnd , UINT msg , WPARAM wp , LPARAM lp) {
	static CHOOSECOLOR cc = {0};
	static COLORREF color = 0 , CustColors[16];
	switch (msg) {
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	case WM_CREATE:
		cc.lStructSize	= sizeof (CHOOSECOLOR);
		cc.hwndOwner	= hWnd;
		cc.rgbResult	= color;
		cc.lpCustColors	= CustColors;
		cc.Flags	= CC_FULLOPEN | CC_RGBINIT;
		return 0;
	case WM_LBUTTONUP:
		if (!ChooseColor(&cc)) return 0;
		SetClassLong(hWnd , GCL_HBRBACKGROUND ,
			(LONG)CreateSolidBrush(cc.rgbResult));
		InvalidateRect(hWnd , NULL , TRUE);
		return 0;
	}
	return DefWindowProc(hWnd , msg , wp , lp);
}
int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
			PSTR lpCmdLine , int nCmdShow ) {
	HWND hwnd;
	MSG msg;
	WNDCLASS winc;
	winc.style		= CS_HREDRAW | CS_VREDRAW;
	winc.lpfnWndProc	= WndProc;
	winc.cbClsExtra	= winc.cbWndExtra	= 0;
	winc.hInstance		= hInstance;
	winc.hIcon		= LoadIcon(NULL , IDI_APPLICATION);
	winc.hCursor		= LoadCursor(NULL , IDC_ARROW);
	winc.hbrBackground	= (HBRUSH)GetStockObject(BLACK_BRUSH);
	winc.lpszMenuName	= NULL;
	winc.lpszClassName	= TEXT("KITTY");
	if (!RegisterClass(&winc)) return -1;
	hwnd = CreateWindow(
			TEXT("KITTY") , TEXT("Kitty on your lap") ,
			WS_OVERLAPPEDWINDOW | WS_VISIBLE ,
			CW_USEDEFAULT , CW_USEDEFAULT ,
			CW_USEDEFAULT , CW_USEDEFAULT ,
			NULL , NULL ,
			hInstance , NULL
	);
	if (hwnd == NULL) return -1;
	while(GetMessage(&msg , NULL , 0 , 0)) {
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return msg.wParam;
}
