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> with 1> [ 1> BaseType=char, 1> StringTraits=StrTraitMFC_DLL<char> 1> ] 1> class“ATL::CStringT<BaseType,StringTraits>”的构造函数声明为“explicit” 1> with 1> [ 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);这样修改也是可以的