You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.2 KiB
48 lines
1.2 KiB
// |
|
// mxToolKit (c) 1999 by Mete Ciragan |
|
// |
|
// file: mxChooseColor.cpp |
|
// implementation: Win32 API |
|
// last modified: Mar 14 1999, Mete Ciragan |
|
// copyright: The programs and associated files contained in this |
|
// distribution were developed by Mete Ciragan. The programs |
|
// are not in the public domain, but they are freely |
|
// distributable without licensing fees. These programs are |
|
// provided without guarantee or warrantee expressed or |
|
// implied. |
|
// |
|
#include "mxtk/mxChooseColor.h" |
|
#include "mxtk/mxWindow.h" |
|
#include <windows.h> |
|
#include <commdlg.h> |
|
|
|
|
|
|
|
bool |
|
mxChooseColor (mxWindow *parent, int *r, int *g, int *b) |
|
{ |
|
CHOOSECOLOR cc; |
|
static COLORREF custColors[16]; |
|
|
|
BYTE rr = *r; |
|
BYTE gg = *g; |
|
BYTE bb = *b; |
|
|
|
memset (&cc, 0, sizeof (CHOOSECOLOR)); |
|
cc.lStructSize = sizeof (CHOOSECOLOR); |
|
cc.hwndOwner = parent ? (HWND) parent->getHandle ():NULL; |
|
cc.rgbResult = RGB (rr, gg, bb); |
|
cc.lpCustColors = custColors; |
|
cc.Flags = CC_ANYCOLOR | CC_FULLOPEN | CC_RGBINIT; |
|
|
|
if (ChooseColor (&cc)) |
|
{ |
|
*r = (int) GetRValue (cc.rgbResult); |
|
*g = (int) GetGValue (cc.rgbResult); |
|
*b = (int) GetBValue (cc.rgbResult); |
|
|
|
return true; |
|
} |
|
|
|
return false; |
|
}
|
|
|