LPTSTR只是宏,
#ifdef _UNICODE
#define LPTSTR LPWSTR
#else
#define LPTSTR LPSTR
#endif也是说,LPTSTR的真实类型依赖于你使用的是UNICODE还是ANSI,它的目的是增强程序的平台可移植性。
从上例结果中,可以看出你用的是UNICODE 但参数用却是ASNI,ANSI 不能代换UNICODE ,必须进行转换才行。
#ifdef _UNICODE
#define LPTSTR LPWSTR
#else
#define LPTSTR LPSTR
#endif也是说,LPTSTR的真实类型依赖于你使用的是UNICODE还是ANSI,它的目的是增强程序的平台可移植性。
从上例结果中,可以看出你用的是UNICODE 但参数用却是ASNI,ANSI 不能代换UNICODE ,必须进行转换才行。
解决方案 »
- VFW 捕获窗口一直显示黑色,没有视频图像。是怎么回事啊?
- 再说透明按钮,高手请进!
- 做视频处理的程序应该看哪几本书
- [[[[[有难度的问题!高手快来!送分1000!]]]]]
- 请问ACSII,UCS2,GBK编码之间如何转换?急!
- 谈谈我自己,也许很多工作不是太久的人和我一样的苦恼
- 新建一个win32 dll,只看见ClassView,和FileView,没有ResourceView,我怎样加一个对话框进去呢?
- 关于VC调用OWC中spreadsheet控件的问题
- 这是什么错误?大家快救救小妹吧
- 老侯镜像站点上的书为啥不能读
- 软件产品如何包装?
- 为什么我的ComboBox的下拉菜单怎么老是只有一行,是哪一项属性没设?
怎么进行转换?我刚开始学。
实际上,必须要解决宽字符的是在COM中,如果你用到来,则必须要转换。char* strKey;
strKey=(char*)malloc(pLs->m_editkey.LineLength()); //分配空间
pLs->m_editkey.GetLine(0,strKey);你的代码改成这样如何:
CString strText, strLine;
m_editkey.GetLine(0, strText.GetBuffer(m_editkey.LineLength(0)));
//strText.ReleaseBuffer();//在使用其他 CString 之前一定要调用这个成员
//strLine.Format(TEXT("line %d: '%s'\r\n"), i, strText.GetBuffer(0));
#ifdef _UNICODE
typedef LPWSTR LPTSTR
#else
#define LPSTR LPTSTR
#endif