在VIEW类里面的PreCreateWindow里面想改变客户区的背景颜色为蓝色,所以想自定义一个蓝色的系统刷子:
CBrush brush(RGB(255,0,0));
HBRUSH hbrush=brush.operator HBRUSH;
cs.lpszClass =AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW,LoadCursor   (NULL,IDC_CROSS),brush,0);
        但是HBRUSH hbrush=brush.operator HBRUSH;编译出错。
我知道GetStockObject可以返回刷子,但是好像只可以有白色,黑色,和透明的,请问怎样定义一个HBRUSH呢???
各位前辈多多指教!

解决方案 »

  1.   

     自己已经解决,用这个就可以了HBRUSH brush=(HBRUSH)CreateSolidBrush(RGB(0,0,50)); 
    还是谢谢各位,麻烦进了领分,哈哈哈哈,全部给沙发
      

  2.   

    你还不知道operator HBRUSH的意思啊CBrush类重载了operator HBRUSH,因此可以直接对HBRUSH赋值CBrush brush(RGB(255,0,0));
    HBRUSH hbrush = brush;
      

  3.   

      请教vocanicy,那是一个类似与operator int 的转换函数是吧,呵呵,把它当成了一个类似+,-等的操作符了,以为要调用,羞!但是我用上面的
    CBrush brush(RGB(255,0,0)); 
    HBRUSH hbrush = brush; 
    代替,好像不行啊,可以编译,但是不能起作用,背景颜色没有改变???WHY?????
      

  4.   


    试试看这样呢?
    CBrush brush(RGB(255,0,0));  
    HBRUSH hbrush ;
    brush.FromHandle( hBrush );
      

  5.   

    CBrush是个局部变量, 注册窗口类后, 该类对应的hbrBackGround已自动销毁,因此设置无效.
    方法应直接用API的CreateSolidBrush或将CBrush定义为类成员变量或全局变量
      

  6.   

    但是我用这个为什么可以呢,定义的这个HBRUSH brush也是局部变量啊。
    HBRUSH brush=(HBRUSH)CreateSolidBrush(RGB(0,0,50));  
      

  7.   

      请问chehw,但是我用这个为什么可以呢,定义的这个HBRUSH brush也是局部变量啊。 
    HBRUSH brush=(HBRUSH)CreateSolidBrush(RGB(0,0,50));