请问制作控件时,OnSize事件中设置控件区域为何出问题。

sproll 2005-09-16 05:21:08
我做了一个控件,在OnSize事件中设置控件的显示区域(SetWindowRgn),把它四角挖去几个象素,然后我把这个控件放在VB或者VC的测试窗口上时,发生这样的情况:
1、在设计模式时,把控件放上去后,虽然激发了OnSize事件(调试发现SetWindowRgn函数调用成功),但是控件的Ragion并没有变化,但是此时如果拖着控件的边框把它的大小变一变,则控件的ragion变为需要的样子了。(奇怪的是还必需拖着控件右下角的调整点拖,如果拖的是右上角的,则Ragion仍然是长方形。)
2、控件放在测试窗口里,并运行测试工程后发现,控件显示的形状仍然是长方形。
请问要怎样才能让控件始终显示我给它设置的Ragion?
...全文
94 点赞 收藏 4
写回复
4 条回复
pomelowu 2005年09月17日
SetWindowRgn最后一个参数BOOL bRedraw 设为TRUE
回复 点赞
zxyjyzxyjy 2005年09月17日
第一个问题,曾经在一个对话框程序中遇到过,好象OnSize调用时,对话框上的控件都还没有建立起来,也就是对话框上的控件调用GetSafeHwnd反回空,这里的问题是不是一样的。
回复 点赞
sproll 2005年09月17日
TO pomelowu(羽战士) :
那个参数已经设为TRUE了。
TO zxyjyzxyjy(星星) :
CComControl类没有GetSafeHwnd这个成员函数。控件已经建立起来了,m_hWnd和IsWindow都返回正确的结果。
没办法,我现在只好在重绘函数中SetWindowRgn了。开始的时候觉得这样很浪费资源,结果最后还是要这样解决,昏……
回复 点赞
mousubin 2005年09月16日
GZ
回复 点赞
发动态
发帖子
ATL
创建于2007-09-28

3025

社区成员

4.8w+

社区内容

ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区公告
暂无公告