如何用api函数设置窗体颜色和菜单条的颜色?

解决方案 »

  1.   

    好像是没有这样的API函数。窗体和菜单都是窗口,都是画出来的,要改变颜色只是改变其使用的画刷的颜色!!
      

  2.   

    窗体可以响应消息:WM_CTLCOLOR,菜单条则可以下载一个CMenuBar的代码看看
      

  3.   

    没有这样的API,只有自己DIY在一个MFC应用程序中,要改变控件的背景色可通过重载OnCtlColor()函数来实现。方法是在该函数中设置所需颜色后再返回一个画刷句柄便可重绘控件背景色。OnCtlColor()函数对于控件背景色的处理是通过捕捉相应的控件消息来实现的。常用的此类消息有: CTLCOLOR_DLG 对话框 CTLCOLOR_EDIT 编辑框CTLCOLOR_LISTBOX 列表框 CTLCOLOR_MSGBOX 消息框CTLCOLOR_SCROLLBAR 滑动条CTLCOLOR_STATIC 静态文本框、矩形等。
      

  4.   

    响应WM_CTLCOLOR消息,然后SetbkColor设置颜色
      

  5.   

    我现在用的不是mfc程序,也不能建立回调函数来响应消息,只能用api来控制,这样实现不了吗?
      

  6.   

    不用mfc,用sdk,一样可以响应消息啊.
      

  7.   

    不用MFC,只不过不是重载OnCtlColor,而是截获WM_ONCTLCOLOR消息,做法还是类似的。
      

  8.   

    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                        PSTR szCmdLine, int iCmdShow)
    {  
       ....
       WNDCLASS     wndclass ;
       ...
       //创建蓝色背景(主窗体为蓝色)
       wndclass.hbrBackground = (HBRUSH) CreateSolidBrush(RGB(0,0,255));
       ....
    }
      

  9.   

    LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
      static HBRUSH  hBrush;
      hBrush = CreateSolidBrush(RGB值); 
      ...
      switch (message)
      {
        ...
        case WM_CTLCOLOR:
        //获得需要改变背景色的控键的句柄;
        return (LRESULT) hBrush;
     
       }
    }
      

  10.   

    1、如果是一个对话框,则改变窗口的背景色很简单,处理 WM_ERASEBKGND 消息即可,在其中生成一个画刷,把整个客户区刷一下就行了;如果是一个其他窗口,也可以采用这个办法,但要注意在 WM_PAINT 消息的处理里,不要在此用其他颜色把背景色破坏掉;或者干脆在 WM_ERASEBKGND 中什么也不做,完全在 WM_PAINT 中处理
    2、参见此帖:http://community.csdn.net/Expert/topic/3626/3626684.xml?temp=.39526