一个MFC应用到Unicode / MBCS的分段转换(Piecewise conversion o

2019-07-03 13:59发布

我有我延伸到允许多语言输入一个大的MFC应用程序。 目前,我需要允许用户在编辑框在一个单一的对话框中输入Unicode数据。

有没有办法做到这一点无需转动UNICODE或MBCS在整个应用程序? 我只需要在瞬间转化应用的一小部分。 是否有可能做到这一点分段,如果是这样,怎么样?


澄清:我可以使用:: GetWindowTextW()得到Unicode的信息窗外。 我试图找出如何让用户在窗口中输入Unicode文本。 目前, 字符窗口1252代码页之外的用户类型显示为“?”。 有没有办法来解决这个问题?

Answer 1:

为了让CEdit展现你应该创建Unicode字符CreateWindowW功能。 我刚刚在ANSI MFC程序进行了测试。

// allows Unicode characters
CreateWindowW( L"EDIT", L"", WS_CHILD|WS_VISIBLE, 10, 10, 50, 20, GetSafeHwnd(), 0, 0, 0 );

// shows Unicode characters as ?
CreateWindow( "EDIT", "", WS_CHILD|WS_VISIBLE, 10, 10, 50, 20, GetSafeHwnd(), 0, 0, 0 );

您可以在手动创建的所有编辑框OnInitDialog对话框的功能。 而后来他们继承与Unicode支持自定义CMyEdit类。



Answer 2:

你可以替换丰富的编辑控制这些编辑框? 然后,你可以输入,即使在非Unicode打造国际化特征; 在内部,他们将RTF格式编码的,但是当你从控制流的文字时,你可以使用SF_UNICODE格式得到Unicode表示。



Answer 3:

这PowerPoint演示幻灯片可能是你的兴趣-这是一个有点老(2000年),但它讲述一个程序转换到混合 ANSI / Unicode的。

案例分析:移植MFC应用程序为Unicode



Answer 4:

只是一个想法 - 你可以尝试打开UNICODE为您的构建和使用ANSI要求,你需要(如CStringA)。

据我所知,这可能不是一个选择,但认为它值得指出的是,你可以解决这个问题的另一种方式圆



文章来源: Piecewise conversion of an MFC app to Unicode/MBCS