| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > неправильный размер PRINTDLG |
| Автор: 040375 24.4.2008, 15:16 | ||
Простейший код - примерно такой:
Проблема в том - что вызов PrintDlg(&pd) не показывает диалог принтера, а возвращает CDERR_STRUCTSIZE. sizeof(pd) = 68. Подсчитал "руками" размер - 66. Подставил pd.lStructSize = 66 - всё заработало. Где грабли? Дело точно не в выравнивании на мой взгляд |
| Автор: dumb 24.4.2008, 18:45 |
| sizeof(PRINTDLG)? хотя у меня, как ни крути - 66. |
| Автор: 040375 24.4.2008, 20:11 |
| sizeof(PRINTDLG)=68 - тоже самое. Я вспоминаю, что подобное бывало у меня на Intel P4 - то работает правильно - то нет - не успел тогда посмотреть в чём причина, а сейчас двхуголовый AMD - почему то неправильно считает всегда. И ещё - линковщик "ругается", что не может слинковать статично объявленные STL объекты типа map, vector e.t.c. в глобальной области видимости (файл), а на P4 такого не было. Неужели это аппаратная проблемка? |
| Автор: dumb 25.4.2008, 00:42 |
| от процессора такие вещи зависеть не могут. проверь на чистом проекте - в FormCreate сделай ShowMessage(sizeof(PRINTDLG)); |
| Автор: 040375 25.4.2008, 04:21 |
| Так я сразу так и сделал - тот код сверху - это и есть тестовый проект - на котором проверял. Что в реальном, что в этом проекте - одинаково неправильно работает. Вообще это странно очень - я уж не знаю - на что грешить. Я сталкивался раньше с разными глюками от борланда - но с такими .... |