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

LoadMapToPictureFileUn

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1
RSS
LoadMapToPictureFileUn, LoadMapToPictureFileUn вопрос по WCHAR
 
Здравствуйте.
Проводил эксперименты с функцией LoadMapToPicture. Разобрался.
После всего решил попробовать функции
_PICIMP long int _PICAPI LoadMapToPictureUn(HMAP map,HMESSAGE handle, DFRAME * dframe, long bitcount, long scale, long resolution, const WCHAR* filename, HMESSAGE handleMainWin);
и
_PICIMP long int _PICAPI LoadMapToPictureFileUn(HMAP map, HMESSAGE handle, DFRAME * dframe, int bitCount, int scale, int resolution, const WCHAR* filename, int flagIntergraphTIFF, int flagCompress, HMESSAGE handleMainWin, int flafAdjustMode).
Помогите с примером (кусок кода)... Как передать параметр "const WCHAR* filename" в функции??? А именно как правильно объявить эту переменную в теле функции и присвоить ей значение, например "home/vxuser/maps/russia/maps1.bmp". Не могу разобраться с WCHAR.
Спасибо.
Astra Linux Special Edition 1.6 релиз «Смоленск»/ГИС Конструктор МО РФ
 
Я себе сделал 2 такие функции для удобства, если используете Qt, то может будет полезно:
Код
Q_CONSTEXPR WCHAR *ushortToWChar(const ushort *ushortChar)
{
    static_assert(sizeof(WCHAR) == sizeof(ushort), "sizeof(WCHAR) != sizeof(ushort)");
#ifdef Q_OS_WIN
    return reinterpret_cast<WCHAR *>(const_cast<ushort *>(ushortChar));
#else
    return const_cast<ushort *>(ushortChar);
#endif
}

Q_CONSTEXPR ushort *wCharToUshort(const WCHAR *wcharSrc)
{
    static_assert(sizeof(WCHAR) == sizeof(ushort), "sizeof(WCHAR) != sizeof(ushort)");
#ifdef Q_OS_WIN
    return reinterpret_cast<ushort *>(const_cast<WCHAR *>(wcharSrc));
#else
    return const_cast<WCHAR *>(wcharSrc);
#endif
}

И потом использую так:
Код
QString path; // какой-то путь
const auto srcWChar = ushortToWChar(path.utf16());

auto rscHandler = mapOpenRscUn(srcWChar);
 
Сергей, Спасибо за отклик. Да под QT. А что подключить для чтобы ошибка пропала "ошибка: 'static_assert' was not declared in this scope"?
Astra Linux Special Edition 1.6 релиз «Смоленск»/ГИС Конструктор МО РФ
 
Цитата
Алексей Рылякин написал:
Сергей, Спасибо за отклик. Да под QT. А что подключить для чтобы ошибка пропала "ошибка: 'static_assert' was not declared in this scope"?
Код
#include <type_traits>
 
Сергей, Я сразу инклудил этот файл, но ошибка не пропадает. Может ваш код надо как-то по-особенному подключать на этапе компиляции? Нет ни каких хитростей?
Astra Linux Special Edition 1.6 релиз «Смоленск»/ГИС Конструктор МО РФ
 
Если вы собираете проект компилятором, поддерживающим 11 стандарт, то в .pro файле надо добавить следующую строку и тогда должно все получиться:
Код
CONFIG += c++11
 
Сергей, Спасибо.
Astra Linux Special Edition 1.6 релиз «Смоленск»/ГИС Конструктор МО РФ
 
Здравствуйте!

Тип WCHAR введен нами в качестве кроссплатформенной реализации широкого символа:
- занимает два байта;
- содержит в себе код символа в кодировке UTF16.

Для поддержки работы с ним используются объявленные в mapsyst.h функции:
- с большой "W" (WcsCopy, Wtof);
- конвертирования из однобайтовых строк (семейство функций StringToUnicode).

Небольшой пример использования (для взаимодействия с типами wchar_t и QString):
Код
#include <QDebug>
#include <QString>

#include "mapapi.h"

int main(int argc, char *argv[])
{
  WCHAR wideString[MAX_PATH_LONG];  wideString[0] = 0;

  // Из однобайтовой строки
  StringToUnicode("one-byte string", wideString, sizeof(wideString));
  qDebug() << QString::fromUtf16(wideString);

  // Из широкой константы
  WcsCopy(wideString, L"wide string", sizeof(wideString));
  WcsCat(wideString, L" (added)", sizeof(wideString));
  qDebug() << QString::fromUtf16(wideString);

  return 0;
}
 
Александр Савелов, Спасибо.
Astra Linux Special Edition 1.6 релиз «Смоленск»/ГИС Конструктор МО РФ
Страницы: 1
Читают тему (гостей: 2)



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

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