Собственный код Windows Mobile - строка в LPCTSTR - PullRequest
2 голосов
/ 26 июля 2010

У меня есть приложение Java, которое должно взаимодействовать с камерой на устройстве Windows Mobile. Я написал Java-код и нативный код, и все это прекрасно работает. Проблема, с которой я столкнулся сейчас, заключается в том, что я хочу начать передачу переменных из Java в нативный код, например, каталог и имя файла для использования в фотографии.

Собственный код использует объект SHCAMERACAPTURE для взаимодействия с камерой и ожидает, что каталог и имя файла будут указаны с помощью LPCTSTR s. Переданная строка является jstring, которую я могу получить до const char *, вызвав:

const char *strDir=(jEnv)->GetStringUTFChars(dirName, 0);

Но я не уверен, как передать это объекту SHCAMERACAPTURE, потому что он не может преобразовать const char * в LPCTSTR. Я пробовал приведение (LPCTSTR)strDir, и оно скомпилировано, но я получаю сообщение об ошибке при запуске (не удается создать файл).

Я - разработчик Java и довольно плохо знаком с C ++ и т. Д., Поэтому я действительно не слишком уверен, что мне нужно сделать, чтобы передать мою строку в нативный вызов. Есть идеи?

1 Ответ

2 голосов
/ 26 июля 2010

Я думаю, что вы должны попробовать GetStringChars () вместо GetStringUTFChars (). Согласно эта страница возвращает строку Unicode.

WindowsCE и Windows Mobile используют исключительно UNICODE, поэтому LPCTSTR на самом деле является LPCWSTR (Long Pointer to Const WideChar String)

SHCAMERACAPTURE shcc;
ZeroMemory(&shcc, sizeof(shcc));
shcc.cbSize = sizeof(shcc);
shcc.pszInitialDir = (TCHAR*)(jEnv)->GetStringChars(dirName, 0 ); 
shcc.pszDefaultFileName = (TCHAR*)(jEnv)->GetStringChars(defFileName, 0 );

Я предполагаю, что вы хотите указать путь и имя файла.Это адаптировано из этой страницы MS

...