帅哥,我不仅截获了任何一标准控件获得焦点时的绘制状态甚至截获了它的消息响应函数,不过我是用API函数截获的,是在win32下编程实现的,不是在VB中调试的,不过如果你学习过API编程的话,你可以看懂.如果你感兴趣,我给你写出来,呵呵,这样一修改,整个控件就任你控制了,不过如果你没有**的编程经验,那就算了.我没有时间把它翻译成VB. 

解决方案 »

  1.   

    To zbde00:把你的C源码写出来吧!一定给分!!!
      

  2.   

    自己去响应WM_PAINT消息就行了。
      

  3.   

    有时可以响应ON_DRAWITEM,像combo box下拉的时候。
      

  4.   

    那Treeview控件呢!如何去掉蓝底呢?一个很具体很直接的问题?
      

  5.   

    帅哥,不用急,我明天给你贴出来,哎呀,使用控件的方法有很多种,可以在一个HWND中显示,还可以 在hDlg中显示,你要那一种?
      

  6.   

    对于常用的控件来说,有标准的颜色消息,WM_CTLCOLOREDIT, WM_CTLCOLORLISTBOX, WM_CTLCOLORMSGBOX, WM_CTLCOLORSCROLLBAR, WM_CTLCOLORSTATIC,截取这些消息,就可以设置底色,
    另外,对于非标准的控件,没有相应的消息处理函数,对于标准窗口中的控件,你可以采用subclass技术,自己编程替代Windows为控件提供的预定义处理procedure,对于对话框中的控件,你可以捕获对话框的WM_PAINT消息,不过需要注意,在WM_INITDIALOG后控件就已经显示出来了,然后再发布WM_PAINT消息,所以,需要先获取控件(非hDlg)的hWnd,然后Invalidate(hWnd,NULL,FALSE),然后必须UpdateWindow(hWnd),然后你就可以重绘控件了,如果你只需要处理背景的话,可以获得这个控件的DC,hdc=GetDC(),然后GetClientRect(...),FillRect(...)
    上述两个过程,如果你感兴趣的话,我把代码贴出来
      

  7.   

    我试了一下,上述方法改变背景色可以,对于按钮,我没有成功,虽然可以改变显示的颜色,可是一Click之后,又恢复了.
      

  8.   

    当你单击Treeview控件中一个节点时,
    鼠标一按下就有一个蓝色的背景(蓝底)
    具体说就是在你一按下时,使其次不出现这个蓝底,怎么做?
    to zbde00解决的话把代码贴出来吧!