1

我有为 Win32(XP 和更高版本)设计的代码,我要移植到 Windows Mobile 6。它包含以下行:

int count = ::WideCharToMultiByte( CP_ACP, WC_NO_BEST_FIT_CHARS, ..., 0, 0 );

在 Windows XP 上,这可以正常工作,但在 Windows Mobile 上,它返回 0 并且 GetLastError() 返回错误 1004“无效标志”。WC_NO_BEST_FIT_CHARS在 Windows Mobile 6 SDK 的 winnls.h 中定义。

::wcstombs如果我将调用替换为 0或替换为 0 ,则此代码将在我的有限测试中工作WC_NO_BEST_FIT_CHARS

我想知道进行这些更改的后果是什么。如果我在中文版或俄文版 Windows Mobile 上运行我的程序,这仍然有效吗?

4

1 回答 1

3

Windows Mobile 基于 Windows CE,根据文档,WideCharToMultiByte 不支持 Windows CE 中的标志 WC_NO_BEST_FIT_CHARS

根据该页面,支持的标志是:

WC_COMPOSITECHECK 将复合字符转换为预组合字符。
WC_DISCARDNS 在转换过程中丢弃非空格字符。
WC_SEPCHARS 在转换期间生成单独的字符。
                    (这是默认的转换行为)。
WC_DEFAULTCHAR 在转换期间用默认字符替换异常。
于 2012-09-24T17:27:55.700 回答