如题,多谢!

解决方案 »

  1.   

    WM_CTLCOLOR:
    WM_CTLCOLOR, SetBkColor , return bk color brush
      

  2.   

    多谢了。SetTextColor是设置字体色,SetBkColor是设置字体背景色。其实我最需要的是设置控件窗口的背景色。
    WM_CTLCOLOR我知道,以前用过。但是在使用DOC/VIEW的时候没法像对话框一样传递此消息。
      

  3.   

    WM_CTLCOLOR在DOC/VIEW中用法是一样的, 在控件的父窗口中处理就行了, 控件窗口的背景色是通过在OnCtlColor中返回背景刷子设置的
      

  4.   

    to cheng_young: 
    sorry 我对于做GUI一直所知不多。我用的是CTreeView和继承自CCtrlView的另一个自定义控件视图,他们的父窗口应该是CMainFrame吧?我在ClassWizard中并没有发现CMainframe的消息列表中有wm_ctlcolor消息。是不是要自己用ON_MESSAGE手工添加?
      

  5.   

    LISTBOX、EDIT等控件的父窗口应该是View吧, 在View里处理,
    将Message Filter由Child Window该为Window即可看到wm_ctlcolor
      

  6.   

    我用了SplitterWnd,所以控件的父窗口应该是自定义的CMySplitterWnd(只重载OnCtlColor函数)。然后在OnCtlColor中返回一个特定的HBRUSH值,应该是这样做吧?我添加了,调试的时候发现也确实调用了这个地方,并返回了定义的HBRUSH值,但是LISTBOX的颜色并没变!不知道怎么搞的。DOC/VIEW真的挺麻烦。
      

  7.   

    CMySplitterWnd是View的父窗口, 你在View里试试
      

  8.   

    切分窗口是这样建立的:
    在CmainFrame里声明一个CMySplitterWnd 的变量,然后在CMainFrame::Create中调用 CMySplitterWnd::Create建立切分窗口,并使用CMySplitterWnd::CreateView分别加入两个视图:CtreeView和CListBoxView(自定义)。对于控件视类,控件的窗口就是视的窗口,这个可以从CTreeView::GetTreeCtrl()函数的实现看出来:CTreeCtrl& CTreeView::GetTreeCtrl()
    {
    return (CTreeCtrl &)(*this);
    }所以控件窗口的父窗口只能是SplitterWnd了,View 和Control是同一个窗口。
      

  9.   

    不怕麻烦的话自己处理一下各个控件的WM_ERASEBKGND消息吧
      

  10.   

    SetTextColor起不起作用?
    HBRUSH 设为成员便量