小学生1234 发表于 2011-1-10 21:25:00

求助

VS 2002中通过的下列函数到VS2005应该怎么写:
rb = acutBuildList(RTNIL,0);            acedPutSym("app", rb);
acutRelRb(rb);改写成下列式样后,还是不行:
rb = acutBuildList(RTNIL,0);      
acedPutSym(_T("app"), rb);
acutRelRb(rb);

小学生1234 发表于 2011-1-14 13:30:00

查看了一些资料,问题解决了。
1.问题:      
                         rb = acutBuildList(RTNIL,0);
                        acedPutSym("app", rb);
                        acutRelRb(rb);
2.改写成
                         rb = acutBuildList(RTNIL,0);
                        acedPutSym(_T("app"), rb);
                        acutRelRb(rb);
还是不行
3. 改写成
                        rb = acutBuildList(RTNIL,0);
                        acedPutSym(L"app", rb);
                        acutRelRb(rb);
就OK了

bluelightcsy 发表于 2011-1-14 17:21:00

你的代码没有定义Unicode吧。
_T是个宏,在没有定义Unicode情况下,它等于没有。而L则是代表强制Unicode。
希望你经过问题找到原因:)共同进步。有答案记得分享哈,呵呵
等待你Double Confirm

小学生1234 发表于 2011-1-14 20:53:00

Character Set, 属性是“Use Multi-Byte Character Set”。
#include "tchar.h"也加了·

th_gsb 发表于 2011-1-16 23:43:00

你把字符集设置成Unicode时,_T()才起作用吧?
其实这个宏最终也是转化成L

bluelightcsy 发表于 2011-1-17 09:10:00

需要在代码中定义Unicode.Windows核心编程中专门一章进行介绍。
_T是经过条件编译的,作用就是使在运用预定义Unicode和没有运用预定义Unicode的平台上能编译出不同结果。
大概如下结构
#ifdef _Unicode
_T("abc") = L("abc")
else
_T("abc") = ("abc")
#endif

sanqima88 发表于 2014-12-3 16:13:00


确实是条件编译,
页: [1]
查看完整版本: 求助