Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];




Вниз

Вопросик мона? 


mindguru   (2002-02-02 08:50) [0]

Как нарисовать и таскать по экрану прозрачное окошко в 98/95? Заранее всем спасибо.



Pat   (2002-02-02 10:02) [1]

http://delphi.vitpc.com/treasury/samples.htm
Это нарисовать...а таскать там есть небольшие проблемы с перерисовкой окна...Может оптимизируешь..



AlexRush   (2002-02-02 18:47) [2]

В объявление класса формы нужно добавить следующую функцию:

protected
procedure CreateParams(var Params : TCreateParams); override;

Нажимаем Ctrl+C (сгенерить реализацию метода)
... и реазуем:

procedure TForm1.CreateParams(var Params : TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle:=Params.ExStyle or WS_EX_TRANSPARENT;
//форма становится прозрачной
end;
Работает во всех версиях Windы.
TODO: Посмотри описание апишных CreateWindow и CreateWindowEx

Для создания нестандартных форм окна смотри/используй
CreateEllipticRgn, CreatePolygonRgn и еже с ними.
Понадобятся примеры - пиши.



copyr25   (2002-02-04 18:45) [3]

...
private
{ Private declarations }
protected
procedure RebuildWindowRgn;
procedure Resize; override;
public
constructor Create(AOwner: TComponent); override;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}


constructor TForm1.Create(AOwner: TComponent);
begin
inherited;

RebuildWindowRgn;
end;
procedure TForm1.Resize;
begin
inherited;
RebuildWindowRgn;
end;
procedure TForm1.RebuildWindowRgn;
var
FullRgn, Rgn: THandle;
ClientX, ClientY, I: Integer;
begin
ClientX:= (Width - ClientWidth) div 2;
ClientY:= Height - ClientHeight - ClientX;
FullRgn:= CreateRectRgn(0, 0, Width, Height);
Rgn:= CreateRectRgn(ClientX, ClientY, ClientX + ClientWidth, ClientY +
ClientHeight);
CombineRgn(FullRgn, FullRgn, Rgn, rgn_Diff);
for I:= 0 to ControlCount -1 do
with Controls[I] do begin
Rgn:= CreateRectRgn(ClientX + Left, ClientY + Top, ClientX + Left +
Width, ClientY + Top + Height);
CombineRgn(FullRgn, FullRgn, Rgn, rgn_Or);
end;
SetWindowRgn(Handle, FullRgn, True);
end;



copyr25   (2002-02-04 18:47) [4]

unit Unit1;
// another method to create transparent form
interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
frmRegion, tempRegion: HRGN;
i: Integer;
Arect: TRect;

begin
frmRegion := 0;
for I := 0 to ControlCount - 1
do begin
{ create a region for the control }
aRect := Controls[i].BoundsRect;
{ coordinates have to be window-relative, not client area relative }
OffsetRect( aRect, clientorigin.x - left, clientorigin.y - top );
tempRegion := CreateRectRgnIndirect( aRect );
{ merge the region with the "summary" region we are building }
if frmRegion = 0 then frmRegion := tempRegion
else begin
CombineRgn( frmRegion, frmRegion, tempRegion, RGN_OR );
DeleteObject( tempRegion );
end;
end;
{ create a region for the caption and menu bar and add it to the summary }
tempregion := CreateRectRgn( 0, 0, Width, GetSystemMetrics( SM_CYCAPTION )+
GetSystemMetrics( SM_CYSIZEFRAME ) +
GetSystemMetrics( SM_CYMENU ) * Ord(Menu <> Nil));
CombineRgn( frmRegion, frmRegion, tempRegion, RGN_OR );
DeleteObject( tempRegion );
SetWindowRgn( handle, frmRegion, true );
end;

end.




Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.021 c
1-9508            Crazy Angel           2002-03-17 22:01  2002.04.04  
FileListBox


1-9505            KaPaT                 2002-03-22 23:49  2002.04.04  
Дочерние окна


1-9531            snoup                 2002-03-23 20:13  2002.04.04  
Как в TMemo или TEdit или TListBox показать графику например картинку?


4-9670            Yonic                 2002-02-04 01:22  2002.04.04  
Сообщения ListBox у


3-9401            Sewix                 2002-03-12 16:39  2002.04.04  
Работа с TDBGrid