Показ и скрытие дочерних MDI-окон
Автор: Neil
...да, я понял: необходим гарантированный показ или скрытие MDI-окна.
Гарантированно скрыть можно вызовом ShowWindow(theHandle, SW_HIDE), но в этом
случае при показе *НЕ* используется ShowWindow. Вместо это сделайте так:
SetWindowPos(theHandle, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE OR
SWP_NOSIZE OR SWP_SHOWWINDOW);
|
Далее я обнаружил, что дочерние окна не скрывались/показывались, *ЕСЛИ* для
осуществления этих функций использовались оконные компоненты (например, кнопки).
Для решения проблемы добавьте следующую строку после вызова SetWindowPos:
WinProcs.SetFocus(TheHandle);
|
*НЕ* используйте метод SetFocus; SetFocus здесь - Windows API функция.
Дополнение
По моему,все-таки, вызов ShowWindow(theHandle, SW_HIDE)проще, короче и, по
крайней мере, в Delphi5 нормально работает с оконными компонентами.
procedure TMainForm.Button1Click(Sender: TObject);
begin
//кнопка для показа/скрытия дочернего MDI-окна
If ShowWindow(form1MDI.Handle, SW_HIDE)=False then
ShowWindow(form1MDI.Handle, SW_SHOW);
end;
|
С уважением Михаил Шпанер
|