求助!!如何提取listbox的所有内容?

kamsdmwg 2011-08-02 05:41:33

我的程序是这样的,在对话框里有listbox控件,在里面添加完数据后,希望通过一个button
来提取所有行的内容,然后在view里显示出来~~~
这具体到底该怎么做啊?我死活都显示不出来~~~
...全文
529 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhu7385606 2011-08-10
  • 打赏
  • 举报
回复
使用:CListCtrl::GetItemText
gz_qmc 2011-08-02
  • 打赏
  • 举报
回复
哦,是的

在对话框.h的前面包含你View类的.h

把CView *pView;改成
你的View类 *pView;

pView=((CMainFrame*)AfxGetMainWnd())->GetActiveView();
改成
pView=(你的View类*)((CMainFrame*)AfxGetMainWnd())->GetActiveView();
gz_qmc 2011-08-02
  • 打赏
  • 举报
回复
哦,是的

在对话框.h的前面包含你View类的.h
把CView *pView;改成

你的View类 *pView;
pView=((CMainFrame*)AfxGetMainWnd())->GetActiveView();
改成
pView=(你的View类*)((CMainFrame*)AfxGetMainWnd())->GetActiveView();
Eleven 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 kamsdmwg 的回复:]

确实能用你的这种方法去除所有数据,但是不知道是哪出问题了,传递到view里的东西是空的~~
[/Quote]
你的对话框类和你的View视图类有什么关联没有?比如你的对话框的创建是在View类的某一个事件响应函数中创建的,同时你指定创建的对话框的父窗口类是view视图类?
kamsdmwg 2011-08-02
  • 打赏
  • 举报
回复
确实能用你的这种方法去除所有数据,但是不知道是哪出问题了,传递到view里的东西是空的~~
Eleven 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 kamsdmwg 的回复:]

引用 3 楼 visualeleven 的回复:

引用楼主 kamsdmwg 的回复:
我的程序是这样的,在对话框里有listbox控件,在里面添加完数据后,希望通过一个button
来提取所有行的内容,然后在view里显示出来~~~
这具体到底该怎么做啊?我死活都显示不出来~~~

C/C++ code

CString str, str2;
for(int i=0; i……
[/Quote]
你都取出来了里面的数据了?还不会显示?
kamsdmwg 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 visualeleven 的回复:]

引用楼主 kamsdmwg 的回复:
我的程序是这样的,在对话框里有listbox控件,在里面添加完数据后,希望通过一个button
来提取所有行的内容,然后在view里显示出来~~~
这具体到底该怎么做啊?我死活都显示不出来~~~

C/C++ code

CString str, str2;
for(int i=0; i<m_listbox.GetCount(); i++)
{
……
[/Quote]



这个方法是用AfxMessageBox显示,不是显示在view类里面啊~~
kamsdmwg 2011-08-02
  • 打赏
  • 举报
回复
试过了,第三部的lb那里出问题了,难道是缺少头文件?
Eleven 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 kamsdmwg 的回复:]
我的程序是这样的,在对话框里有listbox控件,在里面添加完数据后,希望通过一个button
来提取所有行的内容,然后在view里显示出来~~~
这具体到底该怎么做啊?我死活都显示不出来~~~
[/Quote]

CString str, str2;
for(int i=0; i<m_listbox.GetCount(); i++)
{
m_listbox.GetText(i, str2);
str += str2 + _T("\r\n");
}
AfxMessageBox(str);
gz_qmc 2011-08-02
  • 打赏
  • 举报
回复
上面是单文档的
如果是多文档

pView=((CMainFrame*)AfxGetMainWnd())->GetActiveView();
改成
pView=((CMainFrame*)AfxGetMainWnd())->GetActiveFrame()->GetActiveView();
就可以了
gz_qmc 2011-08-02
  • 打赏
  • 举报
回复
你死过吗?怎么说死活都不行呢?
你的listbox是对话框里的,而view是另一个窗口
对吗?

第一步 为View类添加一个列表指针
CListBox *lb;

第二步 在View的初始化的地方
lb=NULL;

第三步 为对话框添加变量
CView *pView;

第三步 在对话框的初始化的最后添加代码
pView=((CMainFrame*)AfxGetMainWnd())->GetActiveView();
pView->lb=(CListBox *)GetDlgItem(listbox的ID);

第四步 在button的响应函数里发送消息
void CXXXDlg::OnButton1()
{
::PostMessage(pView->m_hWnd,WM_PAINT,0,0);
}

第五步 在View类的OnDraw()里输出要显示的内容就可以了
void CXXView::OnDraw(CDC *pDC)
{
if(lb)
{
//lb就是那个列表框,你取数据出来显示就就可以了
}
}

16,472

社区成员

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

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

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