MFC颜色控件问题

请问MFC中调线条颜色的控件(那种点开后可以弹出颜色选择的对话框如第一张图)而且选了什么颜色相应的按钮的颜色也会与之对应,请问这该如何实现?(我这个只是个单纯的按钮,点击... 请问MFC中调线条颜色的控件(那种点开后可以弹出颜色选择的对话框如第一张图)而且选了什么颜色相应的按钮的颜色也会与之对应,请问这该如何实现?(我这个只是个单纯的按钮,点击可以弹出颜色选择对话框) 展开
 我来答
reverse_walker
2013-12-16 · TA获得超过590个赞
知道小有建树答主
回答量:377
采纳率:0%
帮助的人:466万
展开全部
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() ;

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式