При хранении строки с помощью типа QString можно выполнить преобразование в тип WCHAR (кодировка UTF-16) с помощью функции QString::utf16(). При этом необходимо использовать API-функции с интерфейсом WCHAR. Например, функцию mapOpenDataUn() для открытия данных (mapapi.h):
| Код |
|---|
// Открыть данные с автоматическим определением их типа
// (векторные,растровые,матричные...)
// name - имя открываемого файла (MAP, SIT, MTW, RSW, MPT) в кодировке UNICODE
// mode - режим чтения/записи (GENERIC_READ, GENERIC_WRITE или 0)
// GENERIC_READ - все данные только на чтение, при этом не открываются
// файлы \Log\name.log и \Log\name.tac - протокол работы и журнал транзакций
// error - после выполнения функции переменная содержит код ошибки
// (когда HMAP равен 0) или 0; коды ошибок приведены в maperr.rh
// password - пароль доступа к данным из которого формируется 256-битный код
// для шифрования данных (при утрате пароля данные не восстанавливаются)
// size - длина пароля в байтах !!!
// Передача пароля необходима, если при создании карты он был указан.
// Если пароль не передан, а он был указан при создании,
// то автоматически вызывается диалог scnGetMapPassword из mapscena.dll (gisdlgs.dll)
// Если выдача сообщений запрещена (mapIsMessageEnable()), то диалог
// не вызывается, а при отсутствии пароля происходит отказ открытия данных
// После завершения использования карты необходимо освободить ресурсы функцией mapCloseData
// При ошибке возвращает ноль
_MAPIMP HMAP _MAPAPI mapOpenAnyData(const WCHAR *name, long int mode = 0, long int *error = 0);
_MAPIMP HMAP _MAPAPI mapOpenDataUn(const WCHAR * name, long int mode = 0); |
Пример вызова:
| Код |
|---|
HMAP hMap = mapOpenDataUn(string.utf16()); |