CListCtrl控件

csu_liying013 2010-04-21 10:01:50
我在做CListCtrl控件时,引用了别人做的类,在vc6.0运行是正确的,我自己导入到vc.net2003就出现了问题:

“类型转换” : 无法从“int”转换为“ATL::CStringT<BaseType,StringTraits>”
with [
BaseType=char,
StringTraits=StrTraitMFC_DLL<char>
]
无构造函数可以接受源类型,或构造函数重载决策不明确。

错误指向amsEdit.cpp中的函数:

void CAMSEdit::MaskedBehavior::_OnChar(UINT uChar, UINT nRepCnt, UINT nFlags)
{
TCHAR c = (TCHAR)uChar;
// If the mask is empty, allow anything
int nMaskLen = m_strMask.GetLength();
if (!nMaskLen) //如果MASK是空则全通
{
if (_ShouldEnter(c))
Behavior::_OnChar(uChar, nRepCnt, nFlags);
return;
}
// Check that we haven't gone past the mask's length
int nStart, nEnd;
int iRet;
TCHAR cMask;
m_pEdit->GetSel(nStart, nEnd);
CString strText = m_pEdit->GetText();
int nLen = strText.GetLength();

if (!_istprint(c)) //控制符
{
if (c == VK_BACK && !IsEnd(nStart, strText))
{//不是末尾,则只移动
m_pEdit->SendMessage(WM_KEYDOWN, VK_LEFT); // move the cursor left
return;
}
if(c == VK_BACK)
{//移到下一个有效位
if (nStart==0) return ; //首位
iRet = MovePrevious(0, nStart);
if(iRet < 0)
{//移到首位
m_pEdit->SetSel(0, 0);
return ;
}
else if(iRet != nStart-1)
{//前位是掩码
m_pEdit->SendMessage(WM_KEYDOWN, VK_LEFT);
return;
}
m_pEdit->SetSel(iRet, iRet+1); //有效位后面
m_pEdit->ReplaceSel(CString(VK_SPACE), TRUE); ********错误指向这里**********
m_pEdit->SetSel(iRet, iRet); //有效位后面
return;
}
// Allow backspace only if the cursor is all the way to the right
if (_ShouldEnter(c)) //执行
Behavior::_OnChar(uChar, nRepCnt, nFlags);
return;
}
...全文
203 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
尹成 2010-04-22
  • 打赏
  • 举报
回复
CString(VK_SPACE), CString类没有这个构造函数,也没有将int转成CString对象的类型转换函数
m_pEdit->ReplaceSel(CString(TCHAR(VK_SPACE)), TRUE);
csu_liying013 2010-04-22
  • 打赏
  • 举报
回复
up ................
jesterjy 2010-04-21
  • 打赏
  • 举报
回复
字符编码的问题吧。
csu_liying013 2010-04-21
  • 打赏
  • 举报
回复
为什么在vc6.0能运行,在vc.net出错
csu_liying013 2010-04-21
  • 打赏
  • 举报
回复
具体怎么修改,能说明一下吗
songtao_01 2010-04-21
  • 打赏
  • 举报
回复
CString(VK_SPACE)?
VK_SPACE是整数吧,CString没有参数是整数的构造函数,所以报错
Eleven 2010-04-21
  • 打赏
  • 举报
回复
CString(VK_SPACE), CString类没有这个构造函数,也没有将int转成CString对象的类型转换函数
csu_liying013 2010-04-21
  • 打赏
  • 举报
回复
m_pEdit->ReplaceSel(CString(TCHAR(VK_SPACE)), TRUE);
是不是这样改就可以了

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧