MFC颜色控件问题
请问MFC中调线条颜色的控件(那种点开后可以弹出颜色选择的对话框如第一张图)而且选了什么颜色相应的按钮的颜色也会与之对应,请问这该如何实现?(我这个只是个单纯的按钮,点击...
请问MFC中调线条颜色的控件(那种点开后可以弹出颜色选择的对话框如第一张图)而且选了什么颜色相应的按钮的颜色也会与之对应,请问这该如何实现?(我这个只是个单纯的按钮,点击可以弹出颜色选择对话框)
展开
展开全部
class Color
{
private:
COLORREF m_clr ;
public:
Color( int r = 0 , int g = 0, int b = 0 ): m_clr( RGB( r, g, b ) ) { }
Color( COLORREF clr ) : m_clr( clr ) { }
public:
int red() const { return GetRValue( m_clr ) ; }
int green() const { return GetGValue( m_clr ) ; }
int blue() const { return GetBValue( m_clr ) ;}
COLORREF c_data() { return m_clr ;}
} ;
class ColorPanel
{
private:
CHOOSECOLOR m_cc ;
boost::shared_array<DWORD> m_spCustClrs ;
public:
ColorPanel( HWND hwnd = 0 ) : m_cc(), m_spCustClrs( new DWORD[16]() ) {
m_cc.lStructSize = sizeof( m_cc ) ;
m_cc.hwndOwner = hwnd ;
m_cc.Flags = CC_ANYCOLOR | CC_RGBINIT;
m_cc.lpCustColors = m_spCustClrs.get() ;
m_cc.rgbResult = Color().c_data() ;
m_cc.lCustData = 0 ;
m_cc.hInstance = 0 ;
}
public:
Color Open() {
if( ChooseColor( &m_cc ) ) return m_cc.rgbResult ;
else return Color() ;
}
public:
HWND Owner( HWND hNew = 0 ) {
HWND hOld = m_cc.hwndOwner ;
if( hNew )
m_cc.hwndOwner = hNew ;
return hOld ;
}
} ; // end of class
你可以用我的类, 调用只要:
Color c = ColorPanel( hDlg ).Open() ;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询