对话框模式下MFC
VC6
界面上有一个BUTTON和一个LISTBOX,想实现点击BUTTON就把一句话插入到LISTBOX里去,于是在void CSortDlg::OnOpen()(button的ID是IDOPEN) 里写了
CListBox* pCtrl = (CListBox*)GetDlgItem(IDC_LIST1);
pCtrl->AddString(cstrTemp) ;
但是没用,listbox里还是空空如也
但是相同的话在VC2005里就可以用,不知道为什么,请达人解释下谢谢。
VC6
界面上有一个BUTTON和一个LISTBOX,想实现点击BUTTON就把一句话插入到LISTBOX里去,于是在void CSortDlg::OnOpen()(button的ID是IDOPEN) 里写了
CListBox* pCtrl = (CListBox*)GetDlgItem(IDC_LIST1);
pCtrl->AddString(cstrTemp) ;
但是没用,listbox里还是空空如也
但是相同的话在VC2005里就可以用,不知道为什么,请达人解释下谢谢。
pCtrl->AddString( _T("123456") );
试试看!
如果还不行,则看看 pCtrl 等于多少!
调试显示这句话没有起作用,不知道为什么?
pCtrl->AddString(cstrTemp) ;
应该是没错的,你看看cstrTemp是不是空的,没有值,调试看看
问题应该出在别的地方。看看cstrTemp是否为空?
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;
}
老大们不要笑我,我菜得很,实在不懂
这句也不行啊,是否我的VC有问题么?
CListBox* pCtrl = (CListBox*)GetDlgItem(IDC_LIST1);
pCtrl->AddString(_T("123456") ) ;
就放这两句,能显示出的
,就这样了,那样的程序我直接就会出错,上面程序后精简的程序 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的环境上