Форум: "WinAPI";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];
ВнизВопрос по окнам Найти похожие ветки
← →
G A M E R (2003-08-24 15:01) [0]Как сделать окно прозрачным? Вот исходник(С++) в нем окно прозрачно при создании. А как сделать при перемещении?
#include <windows.h>
#define WINDOW_CLASS_NAME "WINCLASS1"
HWND main_window_handle = NULL;
HINSTANCE hinstance_app = NULL;
LRESULT CALLBACK WindowProc(HWND hwnd,
UINT msg,
WPARAM wparam,
LPARAM lparam)
{
switch(msg)
{
case WM_CREATE:
{
return(0);
} break;
case WM_DESTROY:
{
PostQuitMessage(0);
return(0);
} break;
default:break;
}
return (DefWindowProc(hwnd, msg, wparam, lparam));
}
int WINAPI WinMain( HINSTANCE hinstance,
HINSTANCE hprevinstance,
LPSTR lpcmdline,
int ncmdshow)
{
WNDCLASSEX winclass;
HWND hwnd;
MSG msg;
winclass.cbSize = sizeof(WNDCLASSEX);
winclass.style = CS_OWNDC |
CS_HREDRAW | CS_VREDRAW;
winclass.lpfnWndProc = WindowProc;
winclass.cbClsExtra = 0;
winclass.cbWndExtra = 0;
winclass.hInstance = hinstance;
winclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
winclass.hCursor = LoadCursor(NULL, IDC_ARROW);
winclass.hbrBackground = (HBRUSH)GetStockObject(NULL_BRUSH);
winclass.lpszMenuName = NULL;
winclass.lpszClassName = WINDOW_CLASS_NAME;
winclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
hinstance_app = hinstance;
if (!RegisterClassEx(&winclass))
return(0);
if (!(hwnd = CreateWindowEx(NULL,
WINDOW_CLASS_NAME,
"",
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
0,0,
400,300,
NULL,
NULL,
hinstance,
NULL)))
return(0);
main_window_handle = hwnd;
while(TRUE)
{
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if (msg.message == WM_QUIT)
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return(msg.wParam);
}
← →
BillyJeans (2003-08-25 11:18) [1]unit unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
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;
HorzScrollBar.Visible:= False;
VertScrollBar.Visible:= False;
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;
end.
← →
Shopot (2003-08-25 21:20) [2]Если на Delphi 6, то легко. TransparentColor = FormColor. Это делаешь в инспекторе объектов. Transparent := True; Тоже в инспекторе. И все!
← →
KosilkA (2003-08-27 11:53) [3]
> Shopot © (25.08.03 21:20) [2]
> Если на Delphi 6, то легко. TransparentColor = FormColor.
> Это делаешь в инспекторе объектов. Transparent := True;
> Тоже в инспекторе. И все!
эта фича проканает только в NT-ях
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c