解决CButtonST按钮类在vs2005下报错问题

来源:互联网 发布:php 电子商城 编辑:程序博客网 时间:2024/05/29 04:48

BtnST.h BtnST.cpp BCMenu.h BCMenu.cpp全部添加到工程下面,在vc6.0下编译能通过,但是在vs2005下编译通不过

BOOL BCMenu::ModifyODMenuW(wchar_t *lpstrText,wchar_t *OptionText,                           int nIconNormal){    BCMenuData *mdata;        // Find the old BCMenuData structure:    CString junk=OptionText;    mdata=FindMenuOption(OptionText);

错误在CString junk=OptionText;错误信息为:
1>d:\test\svcplay1.7下午\svcplay\svcplay\bcmenu.cpp(1361) : error C2440: “初始化”: 无法从“wchar_t *”转换为“ATL::CStringT<BaseType,StringTraits>”1>        with1>        [1>            BaseType=char,1>            StringTraits=StrTraitMFC_DLL<char>1>        ]1>        class“ATL::CStringT<BaseType,StringTraits>”的构造函数声明为“explicit”1>        with1>        [1>            BaseType=char,1>            StringTraits=StrTraitMFC_DLL<char>1>        ]
如下修改就可以了:

BOOL BCMenu::ModifyODMenuW(wchar_t *lpstrText,wchar_t *OptionText, int nIconNormal){ BCMenuData *mdata; // Find the old BCMenuData structure: CString junk(OptionText);

原因:

junk是ANSI,但是OptionText是wchar,不能直接赋值,需要转换,
CString junk=(CW2A)OptionText;

或者CString junk(OptionText);这样修改也是可以的

原创粉丝点击