在Character Set这里通常有两种选择:一是Use Unicode Character Set ,另一种是Use Multi-Byte Character Set,一般情况下,比较偏向Use Multi-Byte Character Set ,但是当使用中文对话框的时候,Use Multi-Byte Character Set往往会出现“???”的情况,这时候该怎么处理呢?
我的第一想法就是Use Unicode Character Set ,但是因为Unicode和ANSI的原因,在Use Multi-Byte Character Set时正确的代码,在Use Unicode Character Set时会出现一些错误,这里,经过和论坛里一些朋友的讨论,我整理出了以下内容,希望能够帮助到有需要的朋友!!
遇到的问题及相应的解决方法大致可以分为两类:
1、将代码中原来用"……"的地方,改为用_T("……")
如:"*.bmp" 改为 _T("*.bmp")
这里注意不要有遗漏!!!
2、Error:no suitable conversion function from "CString" to "const char *" exists
如:CString filePath;
src=cvLoadImage(filePath);
改为
src = cvLoadImage(CW2A((LPCTSTR)filePath));
我的代码错误及改正:
1、cannot convert parameter XX from 'const char [1]' to 'LPCTSTR'
解决方法:parameter XX 将代码中原来用"……"的地方,改为用_T("……")
2、cannot convert from 'char [11]' to 'LPCWS
解决方法:数据类型改为CString,去掉[ ] , 原来用"……"的地方,改为用_T("……")
如:char title[]= {"Open Image"};改为CString title= _T("Open Image");
3、cannot convert parameter 1 from 'CString' to 'const char *'
解决方法:src = cvLoadImage(filePath); 改为 src = cvLoadImage(CW2A((LPCTSTR)filePath));