区域HRGN用过后会失效吗?

kezhu 2005-01-01 10:38:51
HRGN hh=CreateRectRgn(10,10,100,100);
SetWindowRgn(Panel1->Handle,hh,true);
SetWindowRgn(Panel2->Handle,hh,true);
结果Panel1正确,Panel2没有任何变化,但如果
HRGN hh=CreateRectRgn(10,10,100,100);
SetWindowRgn(Panel1->Handle,hh,true);
hh=CreateRectRgn(10,10,100,100);
SetWindowRgn(Panel2->Handle,hh,true);
就两个都正确,这是为什么?
...全文
74 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaolong83 2005-01-03
  • 打赏
  • 举报
回复
let's study
Javpp 2005-01-02
  • 打赏
  • 举报
回复
从运行结果来看,
HRGN hh=CreateRectRgn(10,10,100,100);
SetWindowRgn(Panel1->Handle,hh,true);
SetWindowRgn(Panel2->Handle,hh,true);
中,第一个SetWindowRgn返回1,第二个SetWindowRgn返回0,


HRGN hh=CreateRectRgn(10,10,100,100);
SetWindowRgn(Panel1->Handle,hh,true);
hh=CreateRectRgn(10,10,100,100);
SetWindowRgn(Panel2->Handle,hh,true);
中,两次都返回1,

所以,在调用一次SetWindowRgn后,hh句柄就失效了
Javpp 2005-01-02
  • 打赏
  • 举报
回复
应该是的

只要用过一次后,就没有了,只能这样了
薛定谔之死猫 2005-01-02
  • 打赏
  • 举报
回复
学习
kezhu 2005-01-02
  • 打赏
  • 举报
回复
看来在每次使用SetWindowRgn前,需要把hh备份一下。比如
HRGN hh=CreateRectRgn(10,10,100,100);

HRGN h=CreateRectRgn(0,0,0,0);
CombineRgn(h,hh,hh,RGN_COPY);
SetWindowRgn(Panel1->Handle,h,true);
CombineRgn(h,hh,hh,RGN_COPY);
SetWindowRgn(Panel2->Handle,h,true);
hh永远不做SetWindowRgn来用,这样不是很麻烦吗?

13,873

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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