Главная страница
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.025 c
9-1092296171
Юра
2004-08-12 11:36
2004.12.12
Помогите!


1-1101794573
_sulent
2004-11-30 09:02
2004.12.12
Вопрос по DLL


3-1099486752
MakNik
2004-11-03 15:59
2004.12.12
dxDBGrid и Hint


3-1100082487
Pertovsky
2004-11-10 13:28
2004.12.12
Десятичные разряды.


3-1099924459
Denisiy
2004-11-08 17:34
2004.12.12
Передать запрос на сервер в строковой переменной.. или как лучше?