Cum sa faci o forma pe partea de sus a tuturor aplicațiilor

Cum sa faci o forma pe partea de sus a tuturor cererilor?

Bine ai venit Wizards se confruntă cu această problemă, trebuie să faceți este să nu forma principală pe partea de sus a celuilalt asa. Am citit acea fereastră copil nu poate fi deasupra capului înseamnă că trebuie să se separe 1 forma și acest lucru. În general, sarcina de a scrie o fereastră plutitoare ca în ReGet, și eu pot face acest lucru doar pe partea de sus a celeilalte.
Am cerut ajutorul

# XA0; Descriere: Demonstrarea posibilității de forma cea mai mică a cererii să fie de peste
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; toate ferestrele din sistem.
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; Utilizare mod simplu: stil fereastră de control și scop
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; părinte fereastră HWND_DEKSTOP.

# XA0; Istoric:
>
PopupForm unitate;

utilizări
# XA0, Ferestre, Mesaje, SysUtils,

# XA0; Variante,

# XA0; Clase, grafică, controale, Formulare,
# XA0; Dialoguri, StdCtrls;

tip
# XA0; TfPopup = clasă (TForm)
# XA0; # XA0; AlwaysOnTopCheckBox: TCheckBox;
# XA0; # XA0; edit1: tEditează;
# XA0; # XA0; Procedura FormDestroy (Expeditor: TObject);
# XA0; # XA0; Procedura FormActivate (Expeditor: TObject);
# XA0; # XA0; Procedura AlwaysOnTopCheckBoxClick (Expeditor: TObject);
# XA0; protejat
# XA0; # XA0; Procedura CreateParams (var Params: TCreateParams); suprascrie;
# XA0; end;

var
# XA0; fPopup: TfPopup;

Procedura TfPopup.CreateParams (Params var: TCreateParams);
începe
# XA0; moștenit;
# XA0; dacă AlwaysOnTopCheckBox.Checked atunci
# XA0; # XA0, cu Params nu începe
# XA0; # XA0; # XA0; Style: = (Style sau WS_POPUP) și (nu WS_CHILD);
# XA0; # XA0; # XA0; WndParent: = HWND_DESKTOP;
# XA0; # XA0; end;
se încheie;

Procedura TfPopup.FormDestroy (Expeditor: TObject);
începe
# XA0; fPopup: = zero;
se încheie;

Procedura TfPopup.FormActivate (Expeditor: TObject);
începe
# XA0; dacă AlwaysOnTopCheckBox.Checked atunci
# XA0; # XA0; SetWindowPos (mâner, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE SAU SWP_NOSIZE);
se încheie;

Procedura TfPopup.AlwaysOnTopCheckBoxClick (Expeditor: TObject);
începe
# XA0; RecreateWnd;
se încheie;

Multe mulțumiri pentru toate lucrările.

Doar nu am observat că, pentru un motiv oarecare, în bara mea de activități a fost prog meu și numele ferestrei cum să-l lupta?

prog de program;
.
.
..
var
# XA0; ExtendedStyle. întreg;

începe
ExtendedStyle: = GetWindowLong (Application.Handle, GWL_EXSTYLE);
SetWindowLong (Application.Handle, GWL_EXSTYLE, ExtendedStyle sau WS_EX_TOOLWINDOW);

ce sens cu WinAPI pe formele care sunt în proprietățile de formă, și așa mai departe

Scordion # XA0; (24.08.05 22:25) [3]
Doar nu am observat că, pentru un motiv oarecare, în bara mea de activități a fost prog meu și numele ferestrei cum să-l lupta?

ca efect secundar:

Desi eu nu ponmayu au forme VCL (în cazul în care apar în exemple, deși WinAPI Conference) au proprietăți FormStyle - de ce nu profita de ea.

Desi eu nu ponmayu au forme VCL (în cazul în care apar în exemple, deși WinAPI Conference) au proprietăți FormStyle - de ce nu profita de ea.

Da formstayl numai când I la fereastra ei (form5) fsStayOnTop face acest lucru, atunci nu devine în partea de sus a tuturor ferestrelor ca am nevoie să și doar puțin peste fereastra principală

începe
ExtendedStyle: = GetWindowLong (Application.Handle, GWL_EXSTYLE);
SetWindowLong (Application.Handle, GWL_EXSTYLE, ExtendedStyle sau WS_EX_TOOLWINDOW);

atunci când încearcă să facă un program se blochează cu o eroare


Procedura TForm1.CreateParams (Params var: TCreateParams);
începe
# XA0; moștenit;
# XA0; dacă previewontop atunci
# XA0; începe
# XA0; # XA0; Params.Style: = Params.Style sau WS_EX_TOPMOST;
# XA0; # XA0; Params.ExStyle: = Params.ExStyle sau WS_EX_TOOLWINDOW;
# XA0; # XA0; Params.WndParent: = 0;
# XA0; end;
se încheie;


> Acest exemplu nu împiedică ferestrele de proprietate fsStayOnTop

Economizoare de ecran și fereastra Task Manager este sacrificat.
Rulați forma SteyOnTor - gratuit.

ce? Asta este corect.

Și vrei doar să fie a ta a fost top-top-top al tuturor? De ce ați decis că ar trebui să fie?

Atunci să mergem chiar mai departe, vom pune cârlige și prinde acele ferestre care „a ieșit“ :)
De asemenea, funcția de captură WinAPI și stiluri corecte ale altor ferestre.


> Și, de asemenea intercepteze caracteristici WinAPI și să stabilească stiluri
> În alte ferestre

pentru

> Scordion

Apropo, este de asemenea o opțiune bună
:)


> Fix stiluri de alte ferestre

În opinia mea, TM pe toba, a schimbat stilul ferestrei sau nu.

Iar cele de pe un plan ar trebui să fie pe partea de sus, pe partea de sus a unul pe altul, în scopul de a crea ferestre.


> 2) timer primi HWND fereastra superioară, a minimiza
> Acesta și a pus lui

Toate programele care se prezintă ca timer-ul pe partea de sus a tuturor ar trebui să fie în coș.

desigur. Ați creat un program cu o fereastră care este pe partea de sus de tot. Un alt creat un program de fereastră în partea de sus a tot ceea ce. Mai bine fereastra ta. )

În acest moment, utilizatorul trebuie să decidă - ce fereastra de mai bine și ce program pentru a rula, sau chiar dacă un astfel încât să nu se suprapun.

Și într-adevăr - pentru un concurs - care va scrie, astfel încât fereastra lui a fost cea mai de sus.

Mi se pare o abordare greșită.


> Ei bine, de ce atât de crud

Acest lucru nu este cruzime. Aceasta este dreptatea.

Din soluții inovatoare nimic pentru a fi surprins efecte neobișnuite