如何能够截获任何一标准控件获得焦点时的绘制状态?

jackjack 2001-12-27 10:56:13
譬如:当按下Commandbutton按钮时的虚线框能不能把它去掉?
或者自绘以代替此虚线框。
如何把Treeview控件获得焦点时的蓝底去掉?

用什么Api函数和消息请高手不吝赐教?
...全文
102 点赞 收藏 13
写回复
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zbde00 2002-01-08
你这个问题太难了,我现在解决不了,我会留心的,以后水平高了再说
回复
jackjack 2002-01-04
大虾们都下线了!!!
回复
jackjack 2002-01-04
当你单击Treeview控件中一个节点时,
鼠标一按下就有一个蓝色的背景(蓝底)
具体说就是在你一按下时,使其次不出现这个蓝底,怎么做?
to zbde00解决的话把代码贴出来吧!
回复
zbde00 2002-01-01
我试了一下,上述方法改变背景色可以,对于按钮,我没有成功,虽然可以改变显示的颜色,可是一Click之后,又恢复了.
回复
jackjack 2001-12-31
那Treeview控件呢!如何去掉蓝底呢?一个很具体很直接的问题?
回复
zbde00 2001-12-31
对于常用的控件来说,有标准的颜色消息,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(...)
上述两个过程,如果你感兴趣的话,我把代码贴出来
回复
cxiaobao 2001-12-31
有时可以响应ON_DRAWITEM,像combo box下拉的时候。
回复
cxiaobao 2001-12-31
自己去响应WM_PAINT消息就行了。
回复
jackjack 2001-12-31
To zbde00:把你的C源码写出来吧!一定给分!!!
回复
zbde00 2001-12-31
帅哥,不用急,我明天给你贴出来,哎呀,使用控件的方法有很多种,可以在一个HWND中显示,还可以 在hDlg中显示,你要那一种?
回复
zbde00 2001-12-29
帅哥,我不仅截获了任何一标准控件获得焦点时的绘制状态甚至截获了它的消息响应函数,不过我是用API函数截获的,是在win32下编程实现的,不是在VB中调试的,不过如果你学习过API编程的话,你可以看懂.如果你感兴趣,我给你写出来,呵呵,这样一修改,整个控件就任你控制了,不过如果你没有**的编程经验,那就算了.我没有时间把它翻译成VB.
回复
jackjack 2001-12-28
各位大虾帮帮忙吧!
回复
jackjack 2001-12-27
没人会吗???
回复
发动态
发帖子
控件
创建于2007-09-28

1422

社区成员

VB 控件
申请成为版主
社区公告
暂无公告