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

sproll 2005-09-16 05:21:08
我做了一个控件,在OnSize事件中设置控件的显示区域(SetWindowRgn),把它四角挖去几个象素,然后我把这个控件放在VB或者VC的测试窗口上时,发生这样的情况:
1、在设计模式时,把控件放上去后,虽然激发了OnSize事件(调试发现SetWindowRgn函数调用成功),但是控件的Ragion并没有变化,但是此时如果拖着控件的边框把它的大小变一变,则控件的ragion变为需要的样子了。(奇怪的是还必需拖着控件右下角的调整点拖,如果拖的是右上角的,则Ragion仍然是长方形。)
2、控件放在测试窗口里,并运行测试工程后发现,控件显示的形状仍然是长方形。
请问要怎样才能让控件始终显示我给它设置的Ragion?
...全文
136 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧