Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Visual C++/MFC/WTL > Очень непонятный глюк завершения программы в Vista |
Автор: viktorrr 10.3.2010, 10:06 |
Доброго времени суток форумчанам. Просьба сильно не критиковать, но пишу на форум в первый раз. Очень нужна помощь в устранении глюка. Предистория: MFC CDialog программа для Visual Studio 2008 читает данные (х,у) из файла и выводит вначале на экран а затем на печать. Код по образцу как в официальных источниках. При отладке использовалась Win XP и виртуальный принтер DoPDF. Все рисуется, печатается и отлаживается. СУТЬ ГЛЮКА. Проблема обнаружилась случайно при проверке программы на другом компьютере в Win Vista Basic. Если программу запустить, открыть файл данных, сделать предварительный просмотр, НО НЕ ОТПРАВЛЯТЬ даные на печать, ТО программа закрывается и все ОК. НО ЕСЛИ отправить задание на печать, то оно напечатается нормально, И нажав кнопку закрыть программу - программа закрывается. НО процесс программы из отладки не выходит (если запускать в режиме отладки в VisStudio), а в диспетчере задач системы наблюдается отлаживаемый (или просто запущенный) процесс (так будто его никто и не закрывал). Если повисший процесс принудительно не завершить через диспетчер задач, то аналогичными манипуляциями можно получить еще один зависший процесс. В Windows XP все работает и завершается нормально. Глюк наблюдался и после перекомпиляции программы в VS2008 на машине с Vista. Также описанный глюк был и при печати из Vista на настоящий струйный принтер. Кто знает хоть что то об этом??? - HELP - даже примерно не знаю че делать и где искать - HELP - HELP - HELP----????? |
Автор: viktorrr 5.4.2010, 07:50 |
Всем доброго времени суток. К написанному выше можно добавить, что этот косяк разрешился весьма внезапно (точнее после манипуляций с флагами в поле xx.Flags структуры PRINTDLG). Как еще один симптом могу добавить, что в рамках "Решения", в котором есть несколько проектов, был создан еще один проект. С аналогичным кодом вызова функции печати. И почему-то в этом проекте таких глюков не наблюдается. |
Автор: viktorrr 5.4.2010, 08:05 | ||
Привожу код с решением проблемы: Здесь ключевой строкой является вот эта ... pd.Flags = PD_USEDEVMODECOPIESANDCOLLATE | PD_RETURNDC | PD_PRINTSETUP; ... Если точнее, то без (.. | PD_PRINTSETUP .. ) была неполадка.
|
Автор: viktorrr 5.4.2010, 08:33 |
ТАКЖЕ без опции .. | PD_PRINTSETUP .. диалоговое окно настройки печати выглядело вот так: |
Автор: viktorrr 5.4.2010, 08:35 |
с опцией .. | PD_PRINTSETUP .. ----- вот так: (не так красиво как прежде :( но зато заработало) Добавлено через 2 минуты и 44 секунды таким образом (хоть и непонятно как именно, наверное с помощью ![]() проблема была решена и вопрос для меня уже закрыт. |
Автор: Earnest 5.4.2010, 10:47 |
viktorrr, проблема не близка, но за то, что привел решение, спасибо. Возможно, кому-то поможет. |