GetDlgItem的问题!

zxstudio1981 2009-01-10 03:45:52
对话框模式下MFC
VC6
界面上有一个BUTTON和一个LISTBOX,想实现点击BUTTON就把一句话插入到LISTBOX里去,于是在void CSortDlg::OnOpen()(button的ID是IDOPEN) 里写了
CListBox* pCtrl = (CListBox*)GetDlgItem(IDC_LIST1);
pCtrl->AddString(cstrTemp) ;
但是没用,listbox里还是空空如也
但是相同的话在VC2005里就可以用,不知道为什么,请达人解释下谢谢。
...全文
649 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
antimatterworld 2009-01-11
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 zxstudio1981 的回复:]
果然是软件的问题,重装后好了,结贴。
[/Quote]
学习了,早就听说VC6.0一堆bug...
zxstudio1981 2009-01-10
  • 打赏
  • 举报
回复
果然是软件的问题,重装后好了,结贴。
sffofn 2009-01-10
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 sffofn 的回复:]
另外mFile是Cfile类型的,怎么能GetLength,至少换成字符串cStr吧 试试
[/Quote]
是我错了,可以用的,错误我也不太清楚在哪
sffofn 2009-01-10
  • 打赏
  • 举报
回复
另外mFile是Cfile类型的,怎么能GetLength,至少换成字符串cStr吧 试试
sffofn 2009-01-10
  • 打赏
  • 举报
回复
我只能说不是GetDlgItem的问题!
,就这样了,那样的程序我直接就会出错,上面程序后精简的程序

CFile mFile;
CFileDialog dlg(TRUE);
if (dlg.DoModal()!=IDOK)
return;
if(!mFile.Open(dlg.GetPathName(),CFile::modeRead))
{
MessageBox("无法打开文件!");
return;
}
CStringArray arCstr;
CString cstrTemp;
char cStr[50];
int j=0;
mFile.Read(cStr,mFile.GetLength()-1);
for(int i=0;i <5;i++)
{

CListBox* pCtrl = (CListBox*)GetDlgItem(IDC_LIST1);

pCtrl->AddString(_T("123456")) ;
if(pCtrl->GetCount()==0)
MessageBox("!");

}

上面的循环我用(long)mFile.GetLength()-1就会最后程序终止出错,换成5就OK,如果把上面的开文件全去掉就可以看见5次123456我只能说程序本身有点问题,至少在vc6的环境上
zxstudio1981 2009-01-10
  • 打赏
  • 举报
回复
还是不行,算了我重装下试试,上次安装有些错误跳过了不知道有没有影响,问题解决了就结贴给分。老大们辛苦了。
sffofn 2009-01-10
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 lucsy 的回复:]
你增加一个UpdateData(FALSE)
[/Quote]
加UpdateData(FALSE)有用,不用这个都可以显示
zxstudio1981 2009-01-10
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 lucsy 的回复:]
你增加一个UpdateData(FALSE)
[/Quote]
怎么改?我是菜鸟。
zxstudio1981 2009-01-10
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 sffofn 的回复:]
引用 14 楼 zxstudio1981 的回复:
确实您说的对,还是不行,那句话好像没有被执行,为什么呢?难道是盗版的原因?

汗 什么空格?你设置的条件就有问题,字符最小从A(65)开始算的,不可能出现比65还小的
[/Quote]
不是吧?IF条件里的其他语句可以执行啊,我在VC05下调试通过啊!
lucsy 2009-01-10
  • 打赏
  • 举报
回复
你增加一个UpdateData(FALSE)
sffofn 2009-01-10
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 zxstudio1981 的回复:]
确实您说的对,还是不行,那句话好像没有被执行,为什么呢?难道是盗版的原因?
[/Quote]
汗 什么空格?你设置的条件就有问题,字符最小从A(65)开始算的,不可能出现比65还小的
zxstudio1981 2009-01-10
  • 打赏
  • 举报
回复
空格
zxstudio1981 2009-01-10
  • 打赏
  • 举报
回复
确实您说的对,还是不行,那句话好像没有被执行,为什么呢?难道是盗版的原因?
sffofn 2009-01-10
  • 打赏
  • 举报
回复
cStr[i]==32这个条件判断什么意思,我想读文件里面的字符串的话应该没有单个字符有32这个值吧,最小的A也是从65开始算的
zxstudio1981 2009-01-10
  • 打赏
  • 举报
回复
好的我试试。
sffofn 2009-01-10
  • 打赏
  • 举报
回复
你做个实验吧,再弄一个button,
CListBox* pCtrl = (CListBox*)GetDlgItem(IDC_LIST1);
pCtrl->AddString(_T("123456") ) ;
就放这两句,能显示出的
sffofn 2009-01-10
  • 打赏
  • 举报
回复
你在pCtrl->AddString( _T("123456") ); 这句设个断点,我想应该进不去,就是说没有执行到你试试
zxstudio1981 2009-01-10
  • 打赏
  • 举报
回复
可是用pCtrl->AddString( _T("123456") );
这句也不行啊,是否我的VC有问题么?
zxstudio1981 2009-01-10
  • 打赏
  • 举报
回复
整个是:
void CSortDlg::OnOpen()
{
// TODO: Add your control notification handler code here
CFile mFile;
CFileDialog dlg(TRUE);
if (dlg.DoModal()!=IDOK)
return;
if(!mFile.Open(dlg.GetPathName(),CFile::modeRead))
{
MessageBox("无法打开文件!");
return;
}
CStringArray arCstr;
CString cstrTemp;
char cStr[50];
int j=0;
mFile.Read(cStr,mFile.GetLength()-1);
for(int i=0;i<(long)mFile.GetLength()-1;i++)
{
if(cStr[i]!=32 && cStr[i]!=13 && cStr[i]!=10)
cstrTemp=cstrTemp+cStr[i];
if(i!=(int)mFile.GetLength()-2 && (cStr[i]==32 || cStr[i]==13 || cStr[i]==10) && (cStr[i+1]!=32 && cStr[i+1]!=13 && cStr[i+1]!=10))
{
arCstr.Add(cstrTemp);


CListBox* pCtrl = (CListBox*)GetDlgItem(IDC_LIST1);

pCtrl->AddString(_T("123456")) ;
if(pCtrl->GetCount()==0)
MessageBox("!");
cstrTemp="";
}
}
return;



}
老大们不要笑我,我菜得很,实在不懂
一名程序员 2009-01-10
  • 打赏
  • 举报
回复
楼主,我在vc2008和vc6下都试了你上面的代码,都是可以添加的,效果是一样的。
问题应该出在别的地方。看看cstrTemp是否为空?
加载更多回复(6)

16,466

社区成员

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

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

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