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

Вниз

Zorder форм   Найти похожие ветки 

 
Kns   (2007-07-25 14:21) [0]

Добрый день есть такая задача - сделать делать чтобы формы приложения всегда были в одном продяке (имею в виду zOrder) в независимоти от того получают они фокус или нет.
Как можно это реализовать?


 
DVM ©   (2007-07-25 14:31) [1]


> Как можно это реализовать?

WM_WINDOWPOSCHANGING + SetWindowPos() + hWndInsertAfter


 
Kns   (2007-07-25 16:17) [2]

Что-то не совсем выходит.
Сделал так : создал проект из трех форм, предположим что Form2 должна всегда лежать за Form1.
тогда в Form2 обявляю

 public
   { Public declarations }
   procedure ChangeOrder(var msg:TMsg); message WM_WINDOWPOSCHANGING;
 end;

procedure TForm2.ChangeOrder(var msg:TMsg);
var ps:^WINDOWPOS;
begin
ps:=Pointer(msg.wParam);
SetWindowPos(ps.hwnd,GetNextWindow(Form1.Handle,GW_HWNDPREV),ps.x,ps.y,ps.cx,ps. cy ,ps.flags);
end;

При таскании form2 начинает все плыть на всех остальных формах и она всерано оказыватся поверх.


 
Kns   (2007-07-25 16:48) [3]

Ну кое в чем ошибся WM_WINDOWPOSCHANGING передается какрас перед вызовом SetWindowPos, т.е. в этом случае нельзя вызвать SetWindowPos нужно менять данные в структуре WINDOWPOS.
в идеале вроде так
procedure TForm2.ChangeOrder(var msg:TMsg);
var ps:^WINDOWPOS;
begin
ps:=Pointer(msg.wParam);
ps.hwndInsertAfter:=GetNextWindow(Form1.Handle,GW_HWNDPREV);
end;


Но это почему то тоже не помогает.


 
DVM ©   (2007-07-25 17:34) [4]


> SetWindowPos, т.е. в этом случае нельзя вызвать SetWindowPos

можно вызывать, но поставить флаг соответствующий.

Обработку WM_WINDOWPOSCHANGING надо производить ВО ВСЕХ формах


 
Kns   (2007-07-25 17:51) [5]

Ага SWP_NOSENDCHANGING!
Спасиб теперь уже получилось почти то что нужно.



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

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

Наверх




Память: 0.47 MB
Время: 0.024 c
1-1183471965
Kolan
2007-07-03 18:12
2007.10.07
Придумал архетиктуру с пакетами и медиатором, помогите реализоват


15-1189158558
Сергей2006
2007-09-07 13:49
2007.10.07
unable to locate hyperlink в Help Insight


2-1189192349
Tack
2007-09-07 23:12
2007.10.07
Выйти из программы после создания главной формы перед ее показом


15-1189256604
Галинка
2007-09-08 17:03
2007.10.07
Переполнение буфера/кучи


2-1189148703
PIG
2007-09-07 11:05
2007.10.07
Глюк с массивом PCHAR