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

求助

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:35

查看了一些资料,问题解决了。

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:14

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

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

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

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

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

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

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

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

bluelightcsy 发表于 2011-1-17 09:10 static/image/common/back.gif
需要在代码中定义Unicode.Windows核心编程中专门一章进行介绍。
_T是经过条件编译的,作用就是使在运用预定 ...

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