SetWindowRgn,可用于创建不规则窗口

函数功能描述:设置窗口区域

.函数原型
int SetWindowRgn(
  HWND hWnd,     // 要设置其区域的窗口句柄
  HRGN hRgn,     // 区域句柄
  BOOL bRedraw   // 重画标志
);

参数
hWnd
要设置其区域的窗口的句柄.
hRgn
区域的句柄.该函数把窗口的区域设置成由此参数指定的区域.系统将仅绘制窗口区域内的部分.如果此参数为NULL,该函数将把窗口区域也设置成NULL,这意味着该窗口将不会被绘制.
bRedraw
重画标志,如果为TRUE,系统将在设置了窗口区域后重画窗口;如果为FALSE,则在设置窗口后将不重画此窗口.通常,如果窗口可见,此参数为TRUE.

返回值
如果函数成功,返回非零值;否则返回零值.在Windows NT下,可以调用GetLastError()函数获得错误扩展信息.

备注
如果重画标志bRedraw为TRUE,系统会发送WM_WINDOWPOSCHANGING和WM_WINDOWPOSCHANGED消息给窗口.在成功调用SetWindowRgn后,窗口的区域将被设置成由参数hRgn指定的区域;为了获得窗口区域,可以调用GetWindowRgn.另外,窗口区域的坐标是相对于窗口(注意:不是窗口客户区)左上角而言的.
为了获得区域句柄,可以调用一些区域相关的API函数来创建各种形状的区域(比如,CreateRoundRectRgn创建圆角矩形区域;CreateEllipticRgn创建椭圆区域;等等),然后就可以把窗口设置成各种形状了.另外一种很流行的窗口是位图区域窗口;在很多网站上都可以找得到具体的例子.

示例代码
RECT rc={40,40,200,200};         
HRGN hRgn=::CreateRoundRectRgn(rc.left,rc.top,rc.right,rc.bottom,10,20);
if(hRgn!=NULL)
    ::SetWindowRgn(hWnd,hRgn,TRUE);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值