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

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);这样修改也是可以的

你可能感兴趣的:(c,Class,structure)