23 个解决方案
#1
编译工程为UNICODE工程
#2
工程控件是你不是在属性里面改的??
你试试 动态的 设置控件 SetWindowText
你试试 动态的 设置控件 SetWindowText
#3
用W版本的API输出
#4
USES_CONVERSION;
control.SetWindowText(A2CT(ansiStr));
control.SetWindowText(A2CT(ansiStr));
#5
项目使用Unicode字符集,对话框资源语言设置为中型。
#6
不要用强制转换,字符串是用_T()宏,函数使用中性函数
#7
我的项目本来就是unicode的,对话框资源语言也设置为中型了,用用W版本的API输出等方法都试过了,还是不行
#8
USES_CONVERSION;
SetWindowTextW(GetDlgItem(hWndDlg,IDC_ST1),A2CT(strValue));这种方法我也试过了,但是strValue是wchar_t*类型的,A2CT(strValue),这一步编译根本不能通过
SetWindowTextW(GetDlgItem(hWndDlg,IDC_ST1),A2CT(strValue));这种方法我也试过了,但是strValue是wchar_t*类型的,A2CT(strValue),这一步编译根本不能通过
#9
USES_CONVERSION; //头文件要添加#include "atlbase.h"
wchar_t* data=A2W(str_datatemp);//CString 转 wchar_t
wchar_t* data=A2W(str_datatemp);//CString 转 wchar_t
#10
如果是ANSI的字符串我试过了,用上面的方法还是失败比如Πλήκτρο κύλισης这个字符,我用SetWindowText将他显示在主窗口上就可以,显示在EDIT,COMBOX空间中就是乱码了
#11
USES_CONVERSION; //头文件要添加#include "atlbase.h"
wchar_t* data=A2W(str_datatemp);//CString 转 wchar_t ?我的字符串本来就是wchar_t*类型的,用MessageBoxW打印出来就是正确的,我还需要用A2W转化?我需要是的如何让工程中的空间也能显示Unicode的字符,而不是转化字符串的问题啊,字符串是没有问题的,否则我打印出来的肯定是错误的
wchar_t* data=A2W(str_datatemp);//CString 转 wchar_t ?我的字符串本来就是wchar_t*类型的,用MessageBoxW打印出来就是正确的,我还需要用A2W转化?我需要是的如何让工程中的空间也能显示Unicode的字符,而不是转化字符串的问题啊,字符串是没有问题的,否则我打印出来的肯定是错误的
#12
你的VC是哪个版本,什么类型的项目,什么控件,用什么方式显示字符串?
#13
VS2005 VC6.0都试过控件就是MS自带的,比如EDIT ComboBox等
#14
W2CT
#15
试过拉,效果还是一样的,还是有乱码
#16
真不明白在窗口的标题栏显示字符串和MessageBox显示的时候为什么没有乱码
#17
你的系统里有相应语言字体包吗
看看修改对话框的相应字体试试
看看修改对话框的相应字体试试
#18
估计我系统里面没有相关的语言字体包,修改对话框相应的字体是无效果的,不知道大家用过skype那个聊天软件没有,他的界面就支持各种语言,就算你是中文的OS一样可以显示其它国家的语言文字,不知道它是怎么实现的
#19
看来这个问题还蛮难的
#20
我用2005在EDIT上试了一下,没有发现乱码。
#21
楼上的兄台?你要是不相信的话我可以把DEMO程序发给你,不相信你试一下,我QQ224790156
#22
那你运行你的程序,把Πλήκτρο κύλισης直接粘贴到edit里面看看什么情况
#23
如果你用文本方式打开RC文件,在里面看到的字符串没有乱码的,界面就能正常显示。combobox里面添加的内容在RC文件里是不能显式看见的,是在RC文件下用一段特殊的字符表示添加的内容。combobox要是有乱码,没法在资源里改。所以combobox里的内容最好在代码中动态添加,但要把代码文件存成Unicode的。
还有字体也是有可能的,把字体设成Microsoft scan seff,一般都可以。如果某个字体里没有对你要求的字符,它肯定也是写不出来
还有字体也是有可能的,把字体设成Microsoft scan seff,一般都可以。如果某个字体里没有对你要求的字符,它肯定也是写不出来
#1
编译工程为UNICODE工程
#2
工程控件是你不是在属性里面改的??
你试试 动态的 设置控件 SetWindowText
你试试 动态的 设置控件 SetWindowText
#3
用W版本的API输出
#4
USES_CONVERSION;
control.SetWindowText(A2CT(ansiStr));
control.SetWindowText(A2CT(ansiStr));
#5
项目使用Unicode字符集,对话框资源语言设置为中型。
#6
不要用强制转换,字符串是用_T()宏,函数使用中性函数
#7
我的项目本来就是unicode的,对话框资源语言也设置为中型了,用用W版本的API输出等方法都试过了,还是不行
#8
USES_CONVERSION;
SetWindowTextW(GetDlgItem(hWndDlg,IDC_ST1),A2CT(strValue));这种方法我也试过了,但是strValue是wchar_t*类型的,A2CT(strValue),这一步编译根本不能通过
SetWindowTextW(GetDlgItem(hWndDlg,IDC_ST1),A2CT(strValue));这种方法我也试过了,但是strValue是wchar_t*类型的,A2CT(strValue),这一步编译根本不能通过
#9
USES_CONVERSION; //头文件要添加#include "atlbase.h"
wchar_t* data=A2W(str_datatemp);//CString 转 wchar_t
wchar_t* data=A2W(str_datatemp);//CString 转 wchar_t
#10
如果是ANSI的字符串我试过了,用上面的方法还是失败比如Πλήκτρο κύλισης这个字符,我用SetWindowText将他显示在主窗口上就可以,显示在EDIT,COMBOX空间中就是乱码了
#11
USES_CONVERSION; //头文件要添加#include "atlbase.h"
wchar_t* data=A2W(str_datatemp);//CString 转 wchar_t ?我的字符串本来就是wchar_t*类型的,用MessageBoxW打印出来就是正确的,我还需要用A2W转化?我需要是的如何让工程中的空间也能显示Unicode的字符,而不是转化字符串的问题啊,字符串是没有问题的,否则我打印出来的肯定是错误的
wchar_t* data=A2W(str_datatemp);//CString 转 wchar_t ?我的字符串本来就是wchar_t*类型的,用MessageBoxW打印出来就是正确的,我还需要用A2W转化?我需要是的如何让工程中的空间也能显示Unicode的字符,而不是转化字符串的问题啊,字符串是没有问题的,否则我打印出来的肯定是错误的
#12
你的VC是哪个版本,什么类型的项目,什么控件,用什么方式显示字符串?
#13
VS2005 VC6.0都试过控件就是MS自带的,比如EDIT ComboBox等
#14
W2CT
#15
试过拉,效果还是一样的,还是有乱码
#16
真不明白在窗口的标题栏显示字符串和MessageBox显示的时候为什么没有乱码
#17
你的系统里有相应语言字体包吗
看看修改对话框的相应字体试试
看看修改对话框的相应字体试试
#18
估计我系统里面没有相关的语言字体包,修改对话框相应的字体是无效果的,不知道大家用过skype那个聊天软件没有,他的界面就支持各种语言,就算你是中文的OS一样可以显示其它国家的语言文字,不知道它是怎么实现的
#19
看来这个问题还蛮难的
#20
我用2005在EDIT上试了一下,没有发现乱码。
#21
楼上的兄台?你要是不相信的话我可以把DEMO程序发给你,不相信你试一下,我QQ224790156
#22
那你运行你的程序,把Πλήκτρο κύλισης直接粘贴到edit里面看看什么情况
#23
如果你用文本方式打开RC文件,在里面看到的字符串没有乱码的,界面就能正常显示。combobox里面添加的内容在RC文件里是不能显式看见的,是在RC文件下用一段特殊的字符表示添加的内容。combobox要是有乱码,没法在资源里改。所以combobox里的内容最好在代码中动态添加,但要把代码文件存成Unicode的。
还有字体也是有可能的,把字体设成Microsoft scan seff,一般都可以。如果某个字体里没有对你要求的字符,它肯定也是写不出来
还有字体也是有可能的,把字体设成Microsoft scan seff,一般都可以。如果某个字体里没有对你要求的字符,它肯定也是写不出来