Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
9-4700
Ziketik
2002-07-20 14:44
2003.02.03
Как сделать быстрый скрин рабочего стола?


1-4972
Zloy
2003-01-27 02:26
2003.02.03
не подскажите как в StringGrid программно задать размер м/у ячейк


1-4987
Ops
2003-01-23 11:10
2003.02.03
Проверить есть ли дискета в дисководе.


14-5168
Uncle Archi
2003-01-05 22:14
2003.02.03
TCP/IP


3-4730
Ops
2003-01-14 16:08
2003.02.03
SQL запрос. Сумма по 2 таблицам. Уже 2 часа думаю





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский