窗体拖动(100分)

  • 主题发起人 主题发起人 zwest
  • 开始时间 开始时间
Z

zwest

Unregistered / Unconfirmed
GUEST, unregistred user!
如何创建任意形状的窗口,并在拖动窗体时显示其内容?
 
来自:huizhang 时间:99-5-16 22:41:09 ID:108689
//Set your form to Ellipse region
procedure TForm1.Button1Click(Sender: TObject);
var
hRGN: THandle;
begin
hRGN := CreateEllipticRgn(0,0,width,height);
SetWindowRgn(Handle, hRgn, true);
end;
//Set your form to RoundRect region
procedure TForm1.Button2Click(Sender: TObject);
var
hRGN: THandle;
begin
hRGN := CreateRoundRectRgn(0,0,width,height,Width div 4, Height div 4);
SetWindowRgn(Handle, hRgn, true);
end;

>>并在拖动窗体时显示其内容?
??

 
是想像winamp那样拖动时也显示窗体而不像标准窗体拖动时只显示一个虚框吧?在哪
看过,忘了,再找找看。
 
//建立椭圆窗体。
procedure TAboutBox.FormCreate(Sender: TObject);
var
hr :thandle;
begin
canmove := false;
hr:=CreateEllipticRgn(3,25,width-30,height-2);
setwindowrgn(handle,hr,true);
end;

//拖动窗体时显示其内容。
procedure TAboutBox.Button1Click(Sender: TObject);
begin
mainform.enabled := true;
aboutbox.Close;
end;

procedure TAboutBox.FormMouseDown(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState;
X, Y: Integer);
begin
if button = mbLeft then
begin
canmove := true;
fx := aboutbox.left;
fy := aboutbox.top;
mx := x;
my := y;
end;
end;

procedure TAboutBox.FormMouseMove(Sender: TObject;
Shift: TShiftState;
X,
Y: Integer);
begin
if canmove = true then
begin
aboutbox.Left := fx + x - mx;
aboutbox.Top := fy + y - my;
fx := aboutbox.left;
fy := aboutbox.top;
end;
end;

procedure TAboutBox.FormMouseUp(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState;
X, Y: Integer);
begin
if button = mbLeft then
canmove := false;
end;
 
拖动窗体时显示窗体,而不是只显示虚框。
 
>>拖动窗体时显示窗体,而不是只显示虚框。
没错呀,上面的程序就是用鼠标点窗体任何位置拖动时显示整个椭圆窗体嘛。
 
SystemParametersInfo(SPI_SETDRAGFULLWINDOWS,1,nil,0);
 
要创建任意形状的窗体,当然可用用SetWindowRgn,这个函数用来创建
圆形或圆角矩形的窗体还比较方便,但如果要创建任意形状的窗口就比较麻烦了
因此,推荐你使用Lmd控件组的LmdFormShape控件,它一般在Lmd Sys这一页上.
它不但可以创建各种形状的窗口,甚至还可用使用BMP文件来做各做不规则的形状的
窗口.DELPHI程序员应该善于使用各种现有的控件,这正是De的魄力所在.
 
小弟,非常想知道,各位大虾可以。。。
帮帮忙忙。。。
 
移动FORM,用WM_NCHITTEST 消息,把客户区的拖动转换为CAPTION的拖动。
做奇怪的FORM,重载PAINT,CREATEPARAMS,WNDPROC,PAITHANDLER,这些方法
无法一下说清,如果你是一位已经入门的同志,相信你对这些方法已轻车熟路。
参考资料:
MACRO CANTU的 DELPHI4高级程序指南
计算机世界 1999。8。30 编程技巧 B19 在DELHI中实现不规则控件。
我主要现在工作特忙,要不是我就给你做个例子,真是对不起。只能帮忙至此。
 
多人接受答案了。
 
后退
顶部