现在的位置: 首页 > 综合 > 正文

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

2013年10月02日 ⁄ 综合 ⁄ 共 875字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.