哪位朋友能帮忙解释一下这几句的用法?(100分)

  • 主题发起人 主题发起人 ndust
  • 开始时间 开始时间
N

ndust

Unregistered / Unconfirmed
GUEST, unregistred user!
1.REGION
2.WMWinPosChanging(var Message: TWMWindowPosChanging); message WM_WINDOWPOSCHANGING;
3.WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND;
4.Rect(0, 0, Screen.Width, Screen.Height);


procedure TForm1.FormCreate(Sender: TObject);
var
FullRgn, ClientRgn, ButtonRgn: THandle;
Margin, X, Y: Integer;
begin
Margin := (Width - ClientWidth) div 2;
FullRgn := CreateRectRgn(0, 0, Width, Height);
X := Margin;
Y := Height - ClientHeight - Margin;
ClientRgn := CreateRectRgn(X, Y, X + ClientWidth, Y + ClientHeight);
CombineRgn(FullRgn, FullRgn, ClientRgn, RGN_DIFF);
X := X + Button1.Left;
Y := Y + Button1.Top;
ButtonRgn := CreateRectRgn(X, Y, X + Button1.Width, Y + Button1.Height);
CombineRgn(FullRgn, FullRgn, ButtonRgn, RGN_OR);
SetWindowRgn(Handle, FullRgn, True);
end;

能把这个程序解释一下吗?
 
这篇东西好象在那见过,让我找找。
 
1:region就是指形状。2,3:我也想知道。
4:定义了一个矩形区域,为整个屏幕大小。
procedure TForm1.FormCreate(Sender: TObject);//创建一个只有外框的窗体将其中部去掉
var
FullRgn, ClientRgn, ButtonRgn: THandle;
Margin, X, Y: Integer;
begin
Margin := (Width - ClientWidth) div 2;//获得边框的宽度
FullRgn := CreateRectRgn(0, 0, Width, Height);
X := Margin;
Y := Height - ClientHeight - Margin;
ClientRgn := CreateRectRgn(X, Y, X + ClientWidth, Y + ClientHeight);
//创建一个矩形形状,左上角(x,y),右下角(X + ClientWidth, Y + ClientHeight);
CombineRgn(FullRgn, FullRgn, ClientRgn, RGN_DIFF);
{RGN_DIFF Combines the parts of hrgnSrc1 that are not part of hrgnSrc2.}
X := X + Button1.Left;
Y := Y + Button1.Top;
ButtonRgn := CreateRectRgn(X, Y, X + Button1.Width, Y + Button1.Height);
{算出按钮占的矩形区域}
CombineRgn(FullRgn, FullRgn, ButtonRgn, RGN_OR);{将窗体上的矩形(不包含边框
和按钮的矩形区域)与整个屏幕大小的矩形相与(扣掉),并再与按钮所占的矩形与从而
得到一个窗框形状}
SetWindowRgn(Handle, FullRgn, True);//将当前窗体的形状设置成上面得到的样子
end;
用Region Functions在帮助里找一下!我就知道这么多了:)
 
当我们在进行窗体移动和大小变更时,在此动作的前一时刻,Windows系统首先向窗体
送出WM_WINDOWPOSCHANGING消息。由此消息产生的WM_WindowPosChanging事件句柄传递
来的TWMWindowPosChanging消息记录型的WindowPos,是包含有变更动作内容的TWindowPos
记录的指针。因此,我们可以根据对其内容的变更,来改变动作内容。

 
pyh_jerry:
Region Functions为什么在delphi的帮助里找不到?
 
去Api帮助里找
 
主窗口HELP菜单里windows sdk help!是所有有关API的函数和过程的说明!
 
谢谢大家!
 
接受答案了.
 

Similar threads

I
回复
0
查看
604
import
I
I
回复
0
查看
556
import
I
回复
0
查看
263
小学生_hjz
后退
顶部