Форум: "WinAPI";
Текущий архив: 2003.02.03;
Скачать: [xml.tar.bz2];
ВнизВосстановление Найти похожие ветки
← →
EsKor (2002-12-20 08:50) [0]По "воле" судьбы пришлось оторваться от Delphi и начать осваивать Visual FoxPro. Решается задача предотвращения повторного запуска приложения, т.е. если повторный запуск, то второе активизирует первое, а само не появляясь закрывается.
Для этого используется API-функция ShowWindow(Hwnd, SW_RESTORE). Выявился следующий глюк: если первое окно (форма) минимизировано и перед этим на нем было открытие списка ComboBox, связанного с таблицей БД, то при восстановлении его из повторно запущенного, клиентская часть окна не отображается: есть заголовок окна, меню (в VFP меню не объект формы) и далее границы окна. Все остальное как бы прозрачно - остальным становится то изображение экрана которое было до восстановления и перемещается вместе с этим окном.
Далее, если щелкая мышкой попась на какой-то элемент управления (видимо оконный), например на тот же ComboBox, он в окне появляется. При раскрытии и свертывании окна какой-нибудь другой программы, перекрывающее это, изображение восстанавливается. То же происходит и при протаскивании другого окна через это - ущербное.
Такой эффект наблюдается всегда при минимизации окна его же кнопкой "Свернуть" и иногда (редко) при сворачивании через панель задач. При разворачивании окна через панель задач окно всегда отображается нормально.
Предполагая, что в этом VFP виновата, сделал програмку управления фоксовским окном на Delphi, но все тоже самое.
Применение дополнительных API-функций SetForegroundWindow(HWnd)и UpdateWindow(HWnd)не помогает. Вычитал в SDK о RedrawWindow, но не могу понять смысла англ. текста, упоминающего об InalidateRect и соответственно о третьем параметре этой функции.
Если кто сталкивался с подобной проблемой, подскажите, что можно предпринять в этом случае или где прочитать?
Извините за возможное многословие.
PS. На форуме VFP было высказано предположение, что в фоксе, на самом деле окно это не совсем форма, а создается некий фрейм (границы его и видны) а уже в нем, как дочерний объект, отображается собственно форма. Вот тут возможно "собака и зарыта". Но, как бы там на самом деле ни было, решение проблемы никому предложить не удалось.
← →
Игорь Шевченко (2002-12-20 11:18) [1]А PostMessage(Hwnd, WM_SYSCOMMAND, SC_RESTORE, 0) не поможет ?
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.02.03;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c