Создание LPCWSTR на WinCE в C++ (Zune/ZDK)

Какой хороший способ создать LPCWSTR на WinCE 6? Я хотел бы найти что-то похожее на String.Format() в С#. Моя попытка:

OSVERSIONINFO   vi;

memset (&vi, 0, sizeof vi);
vi.dwOSVersionInfoSize = sizeof vi;
GetVersionEx (&vi);

char buffer[50];
int n = sprintf(buffer, "The OS version is: %d.%d", vi.dwMajorVersion, vi.dwMinorVersion);

ZDKSystem_ShowMessageBox(buffer, MESSAGEBOX_TYPE_OK);

Этот ZDKSystem_ShowMessageBox ссылается на ZDK для взломанных Zune, доступных по адресу: http://zunedevwiki.org.

Эта строка кода хорошо работает с вызовом окна сообщения:

ZDKSystem_ShowMessageBox(L"Hello Zune", MESSAGEBOX_TYPE_OK);

Моя основная цель — просмотреть точную версию WinCE, работающую на Zune HD, чтобы узнать, какие функции доступны (т. е. это R2 или более ранняя версия?).

Также я не видел никаких тегов для ZDK, поэтому, пожалуйста, отредактируйте, если что-то более подходящее!


person James Cadd    schedule 19.04.2010    source источник


Ответы (1)


sprintf для узких строк. LPCWSTR — это const WCHAR *, поэтому вам нужны широкие символы и правильная функция.

E.g.

WCHAR buf[100];
StringCchPrintfW(buf, _countof(buf), L"Hello, world!");

или используя общие текстовые функции и компилируя с помощью UNICODE,

TCHAR buf[100];
StringCchPrintf(buf, _countof(buf), _T("Hello, world!"));

(Есть и другие функции, которые вы могли бы использовать, такие как _stprintf_s, swprintf_s и т. д.)

person Alex Budovski    schedule 19.04.2010