色選択ダイアログを表示する

test61.gif
色選択ダイアログを表示するための関数としてChooseColorが用意されている。
この関数では引数にパラメータを指定することである程度自由がきくため使いやすい。しかし今回は図のようなダイアログを表示するだけとした。

#include "commdlg.h"


//
//	色選択ダイアログの表示
//
//pDefaultAndResultにはデフォルトで選択されている色を代入すること
//結果はpDefaultAndResultに返る
//
bool	ShowChooseColorDialog(HWND hParentWnd,COLORREF* pDefaultAndResult)
{
	BOOL		ret;
	CHOOSECOLOR	sChooseColor;
	static	COLORREF	pRGB[16];	//必ずstatic!

	if(pDefaultAndResult == NULL)
		return	false;

	::ZeroMemory(pRGB,sizeof(COLORREF) * 16);	//16個ともRGB(0,0,0)
	::ZeroMemory(&sChooseColor,sizeof(CHOOSECOLOR));
	sChooseColor.lStructSize= sizeof(CHOOSECOLOR);
	sChooseColor.Flags		= CC_ANYCOLOR | CC_RGBINIT | CC_FULLOPEN;
	sChooseColor.rgbResult	= *pDefaultAndResult;
	sChooseColor.lpCustColors = pRGB;
	sChooseColor.hwndOwner	= hParentWnd;
	ret = ::ChooseColor(&sChooseColor);
	if(ret == FALSE)
		return	false;

	*pDefaultAndResult = *sChooseColor.lpCustColors;

	return	true;
}





void	Test(void)
{
	bool		ret;
	COLORREF	sColor;

	//デフォルトで赤を選択
	sColor = RGB(0xff,0,0);
	ret = ShowChooseColorDialog(NULL,&sColor);
	if(ret)
		::MessageBox(NULL,_T("色を選択しました"),_T(""),MB_OK);
	else
		::MessageBox(NULL,_T("色に変更はありません"),_T(""),MB_OK);
}

プロジェクトファイルをダウンロード


カテゴリー「コモンダイアログ」 のエントリー