Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

HWND_TOPMOST не работает [D7, WinXP]


Torvald ©   (2005-05-30 22:27:00) 

Добрый вечер.
Столкнулся с проблемой - надо вывести окно поверх всех окон системы. Первым делом попробовал следующий код

 if not SetWindowPos(Handle, HWND_TOPMOST,0,0,0,0,
   SWP_NOSIZE or SWP_NOMOVE) then
   showmessage('Fail');


функция возвращает true, но окно поверх всех окон только в моей программе!
Попробовал другой вариант:

var
 dwStyle: integer;
begin
 dwStyle := GetWindowLong(self.Handle, GWL_EXSTYLE);
 SetWindowLong(self.Handle, GWL_EXSTYLE, dwStyle or WS_EX_TOPMOST);


тот же эффект - окно активно только внутри моей программы.

Вставлял эти вызовы повсюду: OnCreate, OnShow, OnActivate, просто по нажатию кнопки.

Небольшая оговорка, если я применяю эти функции к главной форме - всё отлично работает, а не в главной, как мне и надо - не работает.

Помогите please!


GrayFace   (2005-06-02 21:43:00) [1]

Игорь Шевченко ©   (31.05.05 16:35) [9]
Сатурн наверное из созвездия Весов выходит, верно ?

Почему же?


Игорь Шевченко   (2005-05-31 16:35:00) [2]

GrayFace ©   (31.05.05 16:31) [8]


> А почему так происходит?


Сатурн наверное из созвездия Весов выходит, верно ?


GrayFace   (2005-05-31 16:31:00) [3]

Игорь Шевченко ©   (31.05.05 10:09) [6]
А почему так происходит?


Torvald   (2005-05-31 13:32:00) [4]

Игорь Шевченко ©   (31.05.05 10:09) [6]

Спасибо, гляну.


Игорь Шевченко   (2005-05-31 10:09:00) [5]

И альтернативный вариант:

procedure TForm1.CreateParams (var Params : TCreateParams);
begin
 inherited;
 with Params do begin
   Style := (Style or WS_POPUP) and (not WS_CHILD);
   WndParent := HWND_DESKTOP;
 end;
end;

Потом тот же самый вызов функции SetWindowPos в удобном месте, например в TForm1.OnActivate


Torvald   (2005-05-30 22:49:00) [6]

alex-drob

ОГРОМНЕЙШЕЕ СПАСИБО!
Действительно всё работает!


alex-drob   (2005-05-30 22:45:00) [7]

Посмотри, может поможет
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1117211366&n=0


Torvald   (2005-05-30 22:43:00) [8]

Это что-то не то...

Вот и я ж про то! Уже 2 часа инет рою по этому вопросу.
У формы стиль без рамки - BorderStyle = bsNone, но ставил с рамкой - одно и тоже.


Marser   (2005-05-30 22:40:00) [9]


> тот же эффект - окно активно только внутри моей
> программы.

Это что-то не то...


Torvald   (2005-05-30 22:33:00) [10]

а не в главной, как мне и надо - не работает.

вернее как мне НЕ надо )


Наверх

Титульная страница Поиск, карта сайта Написать письмо