На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Не открывается диалог печати TMapPrintDialog

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: Пред. 1 2 3 След.
RSS
Не открывается диалог печати TMapPrintDialog
 
Разница в 4 байта. Есть подозрение на разрядность приложения (х32 или х64)! Вы точно в одинаковых версиях проверяете?  
 
Цитата
Andrey Gheleznyakov написал:
Вы точно в одинаковых версиях проверяете?
Да, точно, собрал, специально, пустой проект, подключил prnapi.h и проверил размер - 520, win32, закинул на форму mapview в другом проекте TMAPPRINTPARMEX - 516, win32
Изменено: Максим Казаровец - 20.09.2021 11:24:20
 
В prnapi при определении структуры есть строки
typedef struct MAPPRINTPARM
{
 int  Length;          // Длина структуры MAPPRINTPARM
#ifdef _M_X64                                                  
 int  MapPrintParmZero;// Выравнивание                        
#endif
 HWND Handle;          // Идентификатор окна карты
Попробуйте после строки #ifdef _M_X64 набить любые символы, чтобы убедиться, что строка  int  MapPrintParmZero; не попадает в сборку.
 
https://disk.yandex.by/d/S2mK-V4k5Wu_Dg Пример проекта, естественно параметры из макроса #ifdef _M_X64 недоступны.
 
Эффект повторили. Пока не понятно, откуда берутся еще 4 байта.
 
В опциях проекта для х32 у Вас стоит для компилятора опция Data Allignment в значение Quad Word (выравнивание кратно 8 байт). Поставьте значение Double Word.
 
Цитата
Andrey Gheleznyakov написал:
В опциях проекта для х32 у Вас стоит для компилятора опция Data Allignment в значение Quad Word (выравнивание кратно 8 байт). Поставьте значение Double Word.
На размер структуры это никак не повлияло, sizeof возвращает 520
 
Вот результат работы Вашего примера с новой опцией.
Изменено: Andrey Gheleznyakov - 22.09.2021 11:28:36
 
Вот мои настройки и размер структуры, сама структура имеет вид:
Код
typedef struct MAPPRINTPARMEX
{
  int Length;          // Длина структуры MAPPRINTPARM
#ifdef _M_X64                                         
  int MapPrintZero;     // Выравнивание
#endif
  HWND Handle;          // Идентификатор окна карты
                                                           // 0x008 (8)
  int  Scale;           // Масштаб печати (знаменатель)
  int  ScaleSave;       // Масштаб печати (сохраняется при FitToPage = 1)
                                                           // 0x010 (16)
  RECT RectMetr;        // Прямоугольник печати в районе в метрах
                        // (Если обнулен - расчитывается по габаритам района).
                        // При заданных габаритах выбранной области
                        // (PlaneFrame) игнорируется
                                                           // 0x020 (32)
  int  ShiftLTmm;       // Смещение (в миллиметрах)
  int  ShiftUPmm;       //
                                                           // 0x028 (40)
  int  FieldLTmm;       // Поля страницы (в миллиметрах)
  int  FieldUPmm;       //
  int  FieldRTmm;       //
  int  FieldDNmm;       //
                                                           // 0x038 (56)
  int  Intensity;       // Интенсивность заливки площадных (0-100)
  int  Copies;          // Количество копий
                                                           // 0x040 (64)
  char Regime;          // Режим работы задачи (см. MAPPRINT_REGIME)
  char Preview;         // Режим работы окна (см. MAPPRINT_PREVIEW)
  char TypePrint;       // Тип печати (см. MAPPRINT_TYPE)
  char TypeOutput;      // Тип вывода (см. MAPPRINT_OUTPUT)
                                                           // 0x044 (68)
  char Orientation;     // Ориентация (см. MAPPRINT_ORIENT)
  char File;            // Флаг устройства вывода (1 - файл, 0 - принтер)
  char Border;          // Флаг вывода рамки (1 - есть, 0 - нет)
  char FitToPage;       // Согласование с размером страницы
                        //   (см. MAPPRINT_FITTING)
  char Black;           // Флаг черно-белой печати (1 - есть, 0 - нет)
  char Calibration;     // Флаг учета коэффициентов калибровки
                        //   (1 - учитывать, 0 - нет)
  char Mirror;          // Флаг зеркального вывода (1 - есть, 0 - нет)
  char CutLine;         // Флаг вывода линий обрезки (1 - есть, 0 - нет)
                        //   (при OverlapLT, OverlapUP,
                        //    OverlapRT или OverlapDN > 0) // 0x04C (76)
  char FileName[260];   // Имя файла печати
                                                           // 0x150 (336)
  int  OverlapLTmm;     // Поля перекрытия изображения соседних
  int  OverlapUPmm;     //       страниц (в миллиметрах)
  int  OverlapRTmm;     //
  int  OverlapDNmm;     //
                                                           // 0x160 (352)
  double PageWidth;     // Размеры печатаемой области страницы за вычетом
  double PageHeight;    // полей перекрытия (в миллиметрах)
                                                           // 0x170 (368)
  double Angle;         // Угол поворота карты (в радианах)
                                                           // 0x178 (376)
  DFRAME PlaneFrame;    // Габариты выбранной области в метрах
                        // (Если обнулен - расчитывается по габаритам района).
                        //  X1,Y1 - 1 точка прямоугольной области
                        //  X2,Y2 - 3 точка прямоугольной области
                        // При TurnFrame = 1, считать 1 и 3 точки вершинами
                        // наклонного прямоугольника, на неповернутой карте
                                                           // 0x198 (408)
  HSITE SiteDecor;      // Зарамочное оформление (должен быть обнулен)
                                                           // 0x19C (412)
  int  FrameKey;        // Номер объекта карты, по которому устанавливается
                        // габариты области печати PlaneFrame
                        // (Если равен 0 или объект отсутствует,
                        //  то параметр игнорируется)
                                                           // 0x1A0 (416)
  int  ObjectIntensity; // Интенсивность ретуширования карты снаружи объекта, 
                        // определяющего габариты области печати (0-100):
                        //   0 - ретуширование отсутствует;
                        //  50 - объекты снаружи отображаются полупрозрачно;
                        // 100 - объекты снаружи не отображаются (закрашены белым)
  char FrameList[32];   // Имя листа (номенклатура) объекта FrameKey
                                                           // 0x1C0 (448)
  int  PaperWidth;      // Размер листа (в миллиметрах)
  int  PaperHeight;     //
                                                           // 0x1C8 (456)
  char GeoPortalScale;  // Флаг согласования с масштабом геопортала
  char ReserveEx[47];   // Резерв (должен быть обнулен)


  unsigned
  char PageCountHor;    // Число страниц по горизонтали      
                        // (используется при FitToPage = MPF_FITBYHOR)
  unsigned
  char PageCountVer;    // Число страниц по вертикали
                        // (используется при FitToPage = MPF_FITBYVER)


  char FileCount;       // Число формируемых файлов (используется при PostScript = 1)
                        //   (1 - файл содержит все составляющие цвета C,M,Y,K или R,G,B
                        //    4 - каждый из четырех файлов содержит одну из
                        //        составляющих цвета C,M,Y,K)
                                                             // 0x1FB (507)
  char ColorModel;      // Цветовая модель вывода в PostScript
                        //   (0 - RGB, 1 - CMYK)
  char PostScript;      // Флаг PostScript-вывода
  char Restore;         // Флаг необходимости восстановления параметров
                        //   из INI-файла карты (1 - есть, 0 - нет)
  char TurnFrame;       // Флаг поворота области выбора (1 - есть, 0 - нет)
  char Decoration;      // Флаг зарамочного оформления (должен быть обнулен)
}                                                          // 0x200 (512)
  MAPPRINTPARMEX;

 
В ХЕ5 с указанной выше опцией размер четко 516, а в ХЕ10.1 этот же проект 520. Наверное, есть какие то еще опции. Будем искать опции или в структуру вносить изменения.
Страницы: Пред. 1 2 3 След.
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности