Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.09.29;
Скачать: [xml.tar.bz2];

Вниз

Win2k + дочернее окно + Stay On top = false ???   Найти похожие ветки 

 
Maks Realov   (2003-07-25 17:43) [0]

Почему в Win2k НИКАКИМИ способами, которые работали в Win9x нельзя сделать ДОЧЕРНЕЕ окно приложения Aleways Stay On Top?
Ни SetWindowPos(Handle, HWND_TOPVOST, ...), ни FormStyle:= fsStayOnTop;

Как добится того, что бы НЕглавная форма стала StayOnTop не только относительно окон своего приложения, но и относительно ВСЕХ окон???


 
Aleksey Pavlov   (2003-07-25 17:52) [1]

Как сделать неглавное окно StayOnTop относительно всех окон системы я не знаю.
Но можно сделать нужное окно - главным. Вообще говоря - главным окном приложения назначается окно, которое создаётся первым с помощью Application.CreateForm.
Так что ставьте Application.CreateForm(TForm2, Form2); первой:

begin
Application.Initialize;
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm1, Form1);
Application.ShowMainForm:= False;
Form1.Visible:= True;
Application.Run;
end.

А когда понадобится показать Form2: Form2.FormStyle:= fsStayOnTop; и Show;
Оно будет StayOnTop относительно всех окон системы.

Другого способа я не знаю.
(все "старые" способы, как Вы верно заметили - не работают под Win200).


 
Aleksey Pavlov   (2003-07-25 17:54) [2]

...Win 2000



 
Игорь Шевченко   (2003-07-25 18:20) [3]


{
Модуль: PopupForm

Описание: Демонстрация возможности неглавной формы приложения быть поверх
всех окон в системе.
Используется простой способ: Управление стилем окна и назначение
родительским окном HWND_DESKTOP.

Автор: Игорь Шевченко

Дата создания: 13.06.2002

История изменений:
}
unit PopupForm;

interface

uses
Windows, Messages, SysUtils,
{$IFDEF VER140}
Variants,
{$ENDIF}
Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TfPopup = class(TForm)
AlwaysOnTopCheckBox: TCheckBox;
procedure FormDestroy(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure AlwaysOnTopCheckBoxClick(Sender: TObject);
protected
procedure CreateParams (var Params : TCreateParams); override;
end;

var
fPopup: TfPopup;

implementation

{$R *.dfm}

procedure TfPopup.CreateParams (var Params : TCreateParams);
begin
inherited;
if AlwaysOnTopCheckBox.Checked then
with Params do begin
Style := (Style OR WS_POPUP) AND (NOT WS_CHILD);
WndParent := HWND_DESKTOP;
end;
end;

procedure TfPopup.FormDestroy(Sender: TObject);
begin
fPopup := nil;
end;

procedure TfPopup.FormActivate(Sender: TObject);
begin
if AlwaysOnTopCheckBox.Checked then
( Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE OR SWP_NOSIZE)

{
Модуль: PopupForm

Описание: Демонстрация возможности неглавной формы приложения быть поверх
всех окон в системе.
Используется простой способ: Управление стилем окна и назначение
родительским окном HWND_DESKTOP.

Автор: Игорь Шевченко

Дата создания: 13.06.2002

История изменений:
}
unit PopupForm;

interface

uses
Windows, Messages, SysUtils,
{$IFDEF VER140}
Variants,
{$ENDIF}
Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TfPopup = class(TForm)
AlwaysOnTopCheckBox: TCheckBox;
procedure FormDestroy(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure AlwaysOnTopCheckBoxClick(Sender: TObject);
protected
procedure CreateParams (var Params : TCreateParams); override;
end;

var
fPopup: TfPopup;

implementation

{$R *.dfm}

procedure TfPopup.CreateParams (var Params : TCreateParams);
begin
inherited;
if AlwaysOnTopCheckBox.Checked then
with Params do begin
Style := (Style OR WS_POPUP) AND (NOT WS_CHILD);
WndParent := HWND_DESKTOP;
end;
end;

procedure TfPopup.FormDestroy(Sender: TObject);
begin
fPopup := nil;
end;

procedure TfPopup.FormActivate(Sender: TObject);
begin
if AlwaysOnTopCheckBox.Checked then
SetWindowPos (Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE OR SWP_NOSIZE);
end;

procedure TfPopup.AlwaysOnTopCheckBoxClick(Sender: TObject);
begin
RecreateWnd();
end;

end.



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

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

Наверх





Память: 0.46 MB
Время: 0.008 c
1-96249
Dysan
2003-09-17 15:50
2003.09.29
Project1.dpr


3-96125
il_
2003-09-09 08:52
2003.09.29
Вопросы по базам данных


1-96175
Yuraz
2003-09-16 11:55
2003.09.29
мастера, посмотрите плз, компонент, компилирует, но не добавляет


14-96447
Igor__
2003-09-08 21:05
2003.09.29
Проблемы с ХР


14-96362
Rif
2003-09-10 08:22
2003.09.29
MS SQL Server 2000





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский