Главная страница
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.024 c
6-1096832406
Wish
2004-10-03 23:40
2004.12.12
Передача файлов через сеть


1-1101401049
Руслана
2004-11-25 19:44
2004.12.12
Почему BlockWrite(SaveFile, D, 4) вызывает предупреждение


3-1100508020
Stanislav
2004-11-15 11:40
2004.12.12
Где взять TDBTREEVIEW ?


1-1101885164
opoloXAI
2004-12-01 10:12
2004.12.12
Как распечатать TStrings в три столбика?


1-1101211447
MegaVolt
2004-11-23 15:04
2004.12.12
Как автоматизировать тестирование программы.