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

Вниз

Чем отличается ShowModal и Show?   Найти похожие ветки 

 
Piter ©   (2004-11-21 17:08) [0]

Вопрос возник из-за того, что я подумал - а почему при модальной форме нельзя перевести фокус на другое окно приложения?

Было два предположения:

1) где-то с помощью функции WinApi указывается, что данное окно у приложения модальное. И сама windows не дает переключится на другое окно

2) где-то в недрах VCL обрабатывается такая ситуация, и если у приложения есть модальная форма - то обработка WM_ACTIVE и прочих сообщений для других форм не происходит.

Но вот никак не могу найти в VCL реализацию ни того, ни другого поведения.

Вероятно правильный первый вариант, потому что при EnableWindow другое (не модальное окно) может получать фокус...


 
Anatoly Podgoretsky ©   (2004-11-21 17:11) [1]

Вся VCL в исходных кодах, там же можно посмотреть реализацию этих двух методов.


 
Piter ©   (2004-11-21 17:47) [2]

Anatoly Podgoretsky ©   (21.11.04 17:11) [1]
Вся VCL в исходных кодах, там же можно посмотреть реализацию этих двух методов.


хм. А я думаете не знаю?


> Но вот никак не могу найти в VCL реализацию ни того,
> ни другого поведения


Очевидно, по-моему, что VCL я смотрел...


 
Игорь Шевченко ©   (2004-11-21 18:03) [3]

Верно первое предложение.

И при изучении VCL оно находит свое подтверждение.

Функция WinAPI называется EnableWindow


 
Piter ©   (2004-11-21 18:52) [4]

Нашел... как всегда был невнимателен:

function TCustomForm.ShowModal: Integer;
...
 WindowList := DisableTaskWindows(0);
...
end;

function DisableTaskWindows(ActiveWindow: HWnd): Pointer;
...
 EnumThreadWindows(GetCurrentThreadID, @DoDisableWindow, 0);
...
end;


Ну а DoDisableWindow уже делает все окна недоступными, которые ему система передает (все окна процесса)

Эх, я как всегда...


 
Piter ©   (2004-11-21 19:11) [5]

Piter ©   (21.11.04 18:52) [4]
(все окна процесса)


все окна потока


 
Anatoly Podgoretsky ©   (2004-11-21 19:18) [6]

Piter ©   (21.11.04 18:52) [4]
Цените VCL как бездонный источник знаний по АПИ :-)


 
Piter ©   (2004-11-21 20:04) [7]

Anatoly Podgoretsky ©   (21.11.04 19:18) [6]

так я ценю :)



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

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

Наверх




Память: 0.48 MB
Время: 0.036 c
1-1101420575
Vir
2004-11-26 01:09
2004.12.12
Перетаскивание визуальных компонентов


3-1100160717
S@lik
2004-11-11 11:11
2004.12.12
Фильтрация


3-1100636611
SimSim
2004-11-16 23:23
2004.12.12
Как составить запрос на исключение дынных


14-1100903958
123
2004-11-20 01:39
2004.12.12
C#


4-1098970024
TitanDesign
2004-10-28 17:27
2004.12.12
Как запустить приложение и подождать пока она закроется.