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

Вниз

Восстановление   Найти похожие ветки 

 
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 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.02 c
3-4711
kokil
2003-01-18 10:45
2003.02.03
вопрос по SQL


7-5276
Snap
2002-11-11 21:56
2003.02.03
Буфер клавы


3-4804
D
2003-01-17 14:01
2003.02.03
DBLookupComboBox - как показать нач.зн-е?


1-5017
ser_ker
2003-01-23 14:39
2003.02.03
Как получить код завершения DOS-программы ?


14-5147
Yury
2003-01-17 13:28
2003.02.03
Интересная закономерность