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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.05 c
2-1189263131
Надуев Алексей
2007-09-08 18:52
2007.10.07
Поиск файлов


15-1189250138
Denis_
2007-09-08 15:15
2007.10.07
ПДД


15-1188973346
de.
2007-09-05 10:22
2007.10.07
Город мастеров (Полу сабж, полу вопрос... :)


2-1189439590
новичёк
2007-09-10 19:53
2007.10.07
Добавление форматированного куска в TRichEdit


2-1189284962
Антон Шестаков
2007-09-09 00:56
2007.10.07
Очистка Dbimage





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