代码之家  ›  专栏  ›  技术社区  ›  James Cadd

在C++中构造WinCE上的LPCWSTR(Zune/ZDK)

  •  1
  • James Cadd  · 技术社区  · 14 年前

    在wince 6上构建lpcwstr的好方法是什么?我想在C_中找到类似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);
    

    我的基本目标是查看运行在Zune HD上的Wince的确切版本,以了解哪些功能可用(即它是R2或更早版本?).

    我也没有看到任何标签的zdk,所以请编辑,如果有更适合!

    2 回复  |  直到 14 年前
        1
  •  3
  •   Alex Budovski    14 年前

    sprintf是针对窄弦的。 LPCWSTR 是一个 const WCHAR * ,因此需要宽字符和正确的函数。

    例如。

    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 等)

        2
  •  0
  •   Windows programmer    14 年前
    CString buffer;
    buffer.Format(_T("The OS version is: %d.%d"), vi.dwMajorVersion, vi.dwMinorVersion);