我有一个大型MFC应用程序,我正在扩展,以允许多语言输入.目前,我需要允许用户在单个对话框的编辑框中输入Unicode数据。
对于整个应用程序,是否有一种不打开UNICODE或MBCS的方法来做到这一点?我只需要一小部分的应用程序转换在目前。是否有可能做到这一点,如果有,怎么做?
澄清:我可以使用::GetWindowTextW()将Unicode信息从窗口中提取出来。我试图弄清楚如何允许用户在窗口中输入Unicode文本。当前,字符用户在windows之外键入-1252代码页显示为'?‘。有办法解决这个问题吗?
发布于 2009-08-24 15:52:14
要允许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类。
发布于 2009-08-24 15:58:50
可以用丰富的编辑控件替换这些编辑框吗?然后,您甚至可以在非Unicode构建中输入国际字符;在内部,它们将被rtf编码,但是当您从控件中流出文本时,您可以使用SF_UNICODE格式获取Unicode表示形式。
发布于 2009-08-24 15:13:14
这张PowerPoint幻灯片可能会让你感兴趣--它有点旧(2000年),但它谈到了如何将程序转换成混合的ANSI/Unicode。
案例研究:将MFC应用程序移植到Unicode
https://stackoverflow.com/questions/1322801
复制相似问题