Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.23;
Скачать: CL | DM;

Вниз

Прозрачная форма   Найти похожие ветки 

 
Движняк   (2003-10-12 01:10) [0]

Нужно сделать прозрачную форму, но не с помощью AlphaBlend так как программа должна работать под win 98, и не с помощью CreateRectRgn так как на форме будут анимированные гифы с прозрачным фоном. Пожалуйста, подскажите, как можно сделать реально прозрачную форму может, есть какой-нибудь компонент?


 
Zergling   (2003-10-12 06:25) [1]

1. Фень Юань кажися в своей книге описывал некую функцию экспортируемую из DLL для win98. Но он ее нерекамендует использовать т.к. имеется утечка памяти. Шас подсказать немогу т.к. умной книги под рукой нет.
2. Начать изучать DirectDraw :)
3. Если найдеш быстрый доступ к пикселям окна, то сюда :)
http://delphimaster.net/view/4-1060073468/


 
Yrtimd   (2003-10-12 07:08) [2]

Изображение рабочего стола копировать умеешь?
Снимок экрана, тобишь?
Ну, так и байай его на форму без бордеров, а сверху рисуй свой скин. Правда обрабатывать драг энд дроп и ресайз надо будет самостоятельно!.. ;)


 
Zergling   (2003-10-12 07:13) [3]

http://delphigfx.mastak.ru/libs.htm


 
Delphi5.01   (2003-10-12 09:20) [4]

Nado FormAsRGN ili tipa chtoto takoe, no esli ti v Win2k ili XP to tam avtomatom rabotaet prozracnost, u formi est svoistvo. Delphi6 imeu vvidu
Jelau udachi


 
DeMoN-777   (2003-10-12 13:26) [5]

unit Unit1;

interface

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

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

var
Form1: TForm1;

implementation

{$R *.DFM}

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);
// создаем регион для клиентской части формы
// и вычитаем его из FullRgn
Rgn:= CreateRectRgn(ClientX, ClientY, ClientX + ClientWidth, ClientY +ClientHeight);
CombineRgn(FullRgn, FullRgn, Rgn, rgn_Diff);
// теперь добавляем к FullRgn регионы каждого контрольного элемента
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;

procedure TForm1.FormCreate(Sender: TObject);
begin
HorzScrollBar.Visible:= False;
VertScrollBar.Visible:= False;
// строим новый регион
RebuildWindowRgn;
end;

end.


 
Zergling   (2003-10-13 08:02) [6]

Движняк (12.10.03 01:10)

Всетаки не совсем понятно, какая прозрачность имеется ввиду: окно не стандартной формы (регион) или Alpa-прозрачность?
Отвечаю по первому своему посту, пункт 1.
Из книги:
Win98/2000 для расширеннного стиля окна есть флаг WS_EX_LAYERED

WM_CREATE:
begin
SetWindowLong(WC_HWND, GWL_EXSTYLE, GetWindowLong(WC_HWND, GWL_EXSTYLE) or WS_EX_LAYERED);
SetLayeredWindowAttributes(WC_HWND, RGB(0, 0, 1), $C0, LWA_ALPHA or LWA_COLORKEY);
end;

У меня не работает. Говорит, что в USER32.DLL нет SetLayeredWindowAttributes, посмсотрел с помощью IDA и впрямь нет :) (видать ошибся Фень Юань), хотя по MSDN:

The SetLayeredWindowAttributes function sets the opacity and transparency color key of a layered window.

Header Declared in Winuser.h, include Windows.h
Import library User32.lib
Minimum operating systems Included in Windows 95, Windows NT 3.1



Страницы: 1 вся ветка

Текущий архив: 2003.10.23;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.009 c
1-74166
senya
2003-10-10 12:46
2003.10.23
Развернуть/свернуть TreeView


4-74522
xmapa
2003-08-18 12:16
2003.10.23
Как программно послать комбинацию ALT+1?


1-74224
Andriy Tysh
2003-10-09 14:51
2003.10.23
TToolButton, tbsDropDown


14-74401
Murad
2003-10-03 10:48
2003.10.23
Женские


3-74081
AndrewK
2003-09-28 23:42
2003.10.23
Сохранение картинки в БД.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский