¢¨ÀèÆüC++(Win32API)¤ò»È¤Ã¤¿»þ¤Ë³Ð¤¨¤¿ÆâÍÆ¤ò¥á¥â¤·¤Æ¤¤¤Þ¤¹¡£
¡¡¤Þ¤ÀÊÙ¶¯Ãæ¤Ê¤Î¤Ç¡¢´Ö°ã¤¤¤¬¤¢¤ì¤Ð¤´»ØÅ¦¤¯¤À¤µ¤¤¡£
¡¡¡¡

¡Ú¥«¥é¡¼¥À¥¤¥¢¥í¥°É½¼¨´Ø¿ô¡Û
BOOL ChooseColor(LPCHOOSECOLOR cc); ¡¡Â裱°ú¿ô¡§CHOOSECOLOR¹½Â¤ÂÎ ¡¡Ìá¤êÃÍ¡¡¡§À®ÈÝ(True/False)
¡ÚCHOOSECOLOR¹½Â¤ÂΡÛ
Struct CHOOSECOLOR
{
DWORD lStructSize //¹½Â¤ÂΤΥµ¥¤¥º
HWND hwndOwner //¥¦¥£¥ó¥É¥¦¥Ï¥ó¥É¥ë
HWND hInstance //¥¤¥ó¥¹¥¿¥ó¥¹¥Ï¥ó¥É¥ë
COLORREF rgbResult //½é´ü¥«¥é¡¼¡¦ÁªÂò¥«¥é¡¼
COLORREF* lpCustColors //¥«¥¹¥¿¥à¥«¥é¡¼(16¿§¤Þ¤Ç)
DWORD Flags //½é´ü²½¥Õ¥é¥°
LPARAM lCustData //¥Õ¥Ã¥¯¥×¥í¥·¡¼¥¸¥ã¤ËÅϤ¹¥Ç¡¼¥¿
LPCCHOOKPROC lpfnHook //¥Õ¥Ã¥¯¥×¥í¥·¡¼¥¸¥ã(Flags¤ËCC_ENABLEHOOK¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ëưºî)
LPCTSTR lpTemplateName //¥ê¥½¡¼¥¹Ì¾¾Î(Flags¤ËCC_ENABLETEMPLATE¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ëưºî)
}
¡ÚFlags(½é´ü²½¥Õ¥é¥°)¡Û
CC_RGBINIT //rgbResult¤ò½é´ü¥«¥é¡¼¤ËÀßÄꤹ¤ë CC_FULLOPEN //¥ª¡¼¥×¥ó»þ¤Ë¥«¥¹¥¿¥à¥«¥é¡¼ÀßÄêÁë¤ò³«¤¯ CC_PREVENTFULLOPEN //¡Ö¿§¤ÎºîÀ®¡×¥Ü¥¿¥ó¤ò̵¸ú¤Ë¤¹¤ë CC_SHOWHELP //¥Ø¥ë¥×¥Ü¥¿¥ó¡Ö?¡×¤òɽ¼¨ CC_ENABLEHOOK //¥Õ¥Ã¥¯¥×¥í¥·¡¼¥¸¥ã¤ò»È¤¦ CC_ENABLETEMPLATE //¥ê¥½¡¼¥¹¤òÍøÍѤ¹¤ë CC_ENABLETEMPLATEHANDLE //hInstance¤ò͸ú¤Ë¤¹¤ë CC_SOLIDCOLOR //¥½¥ê¥Ã¥É¥«¥é¡¼¤À¤±¤òɽ¼¨¤¹¤ë CC_ANYCOLOR //»ÈÍѲÄǽ¤ÊÁ´¤Æ¤Î¿§¤òɽ¼¨¤¹¤ë
¡Ú¥À¥¤¥¢¥í¥°¤Î°ÌÃÖ¡Û
¡¡¡¡¥«¥é¡¼¥À¥¤¥¢¥í¥°¤Îɽ¼¨°ÌÃÖ¤ò»ØÄꤹ¤ë¤Ë¤Ï¡¢¥Õ¥Ã¥¯¥×¥í¥·¡¼¥¸¥ã¤ò»È¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
¡¡¡¡¥À¥¤¥¢¥í¥°¤¬ºîÀ®¤µ¤ì¤¿¤È¤(WM_INITDIALOG)¤Ë¡¢MoveWindow´Ø¿ô¤Ç°Üư¤µ¤»¤Þ¤¹¡£
¡Ú¥µ¥ó¥×¥ë¥³¡¼¥É¡Û
void Sumple()
{
//¥«¥¹¥¿¥à¥«¥é¡¼¤òÇÛÎó¤Ë³ÊǼ(16¿§¤Þ¤ÇÀßÄê²Äǽ)
COLORREF CustColors2[16];
CustColors2[0]= RGB(255,0,0);
CustColors2[1]= RGB(0,255,0);
CustColors2[2]= RGB(0,0,255);
//CHOOSECOLOR¹½Â¤ÂÎ
CHOOSECOLOR cc;
cc.lStructSize = sizeof(cc);
cc.hwndOwner = NULL;
cc.hInstance = NULL;
cc.rgbResult = RGB(255,0,0);
cc.lpCustColors = CustColors;
cc.Flags = CC_RGBINIT | CC_ENABLEHOOK;
cc.lCustData = NULL;
cc.lpfnHook = CCHookProc;
cc.lpTemplateName = NULL;
//¥«¥é¡¼¥À¥¤¥¢¥í¥°É½¼¨
ChooseColor(&cc);
//cc.rgbResult¤ËÁªÂò¤·¤¿¿§¤¬³ÊǼ¤µ¤ì¤Þ¤¹
}
//¥Õ¥Ã¥¯¥×¥í¥·¡¼¥¸¥ã
UINT CALLBACK CCHookProc(HWND hdlg,UINT msg,WPARAM wp,LPARAM lp)
{
switch(msg)
{
case WM_INITDIALOG:
//¥À¥¤¥ä¥í¥°¥µ¥¤¥º¤ò¼èÆÀ
RECT rect;
GetWindowRect(hdlg,&rect);
SIZE sz;
sz.cx = rect.right - rect.left; //²£Éý
sz.cy = rect.bottom - rect.top; //½ÄÉý
//½ÐÎϰÌÃÖ¤ÎÀßÄê
POINT pnt;
pnt.x = 100;
pnt.y = 100;
//¥À¥¤¥ä¥í¥°°ÌÃÖÀßÃÖ
MoveWindow(hdlg , pnt.x , pnt.y , sz.cx , sz.cy , TRUE);
//¥À¥¤¥¢¥í¥°¤Î¥¿¥¤¥È¥ë¥»¥Ã¥È
SetWindowText(hdlg,TEXT("¥«¥é¡¼¥À¥¤¥¢¥í¥°"));
break;
default:
return FALSE;
}
return TRUE;
}







