我有我延伸到允许多语言输入一个大的MFC应用程序。 目前,我需要允许用户在编辑框在一个单一的对话框中输入Unicode数据。
有没有办法做到这一点无需转动UNICODE或MBCS在整个应用程序? 我只需要在瞬间转化应用的一小部分。 是否有可能做到这一点分段,如果是这样,怎么样?
澄清:我可以使用:: GetWindowTextW()得到Unicode的信息窗外。 我试图找出如何让用户在窗口中输入Unicode文本。 目前, 字符窗口1252代码页之外的用户类型显示为“?”。 有没有办法来解决这个问题?
为了让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类。
你可以替换丰富的编辑控制这些编辑框? 然后,你可以输入,即使在非Unicode打造国际化特征; 在内部,他们将RTF格式编码的,但是当你从控制流的文字时,你可以使用SF_UNICODE格式得到Unicode表示。
这PowerPoint演示幻灯片可能是你的兴趣-这是一个有点老(2000年),但它讲述一个程序转换到混合 ANSI / Unicode的。
案例分析:移植MFC应用程序为Unicode
只是一个想法 - 你可以尝试打开UNICODE为您的构建和使用ANSI要求,你需要(如CStringA)。
( 据我所知,这可能不是一个选择,但认为它值得指出的是,你可以解决这个问题的另一种方式圆 )