首页
社区
课程
招聘
[求助]MFC中这样的数据跟界面之间的关系该如何处理?
发表于: 2012-8-12 02:11 7689

[求助]MFC中这样的数据跟界面之间的关系该如何处理?

2012-8-12 02:11
7689
以常规的软件管家来描述我的问题吧:
问题如下:
    现在的问题就是点击左边软件分类(比如聊天软件分类)的时候,首先读取网络上的数据,然后创建控件显示数据,这样会很慢,影响速度的肯定是读取网络数据这块,数据没读取完毕的时候界面都没办法移动,这个效果不是我想要的,所以问问大家看如何解决此种类型的问题?

问题模拟:
左边---分类                                                                       右边 ---软件信息
聊天工具                                                     腾讯QQ 2012           34.5M      下载(按钮)
下载工具                                                     阿里旺旺卖家版        12.3M      下载(按钮)   
图形图像                                                     新浪UC                111M       下载(按钮)
。。。。                                                     。。。。                    。。。       。。。

目的:软件信息的内容保存在网址上,当左边分类按钮被按下的时候,读取www.xxx...上面的20条数据,然后在右边动态创建20个控件来显示读取到的信息。

MFC中普通的UI THREAD中最好是不要存放读取网络数据等类似比较耗时的操作,应该开个worker thread来处理这些耗时操作,但同时数据读取完毕之后又需要根据读取到的数据条数(假如20条软件信息)来动态创建20个控件来显示读取到的软件信息,然而MFC的worker thread中不能创建窗口。。。。。。。,所以这里迷茫了不知道该如何操作,向各位求教。。。三克油

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 1
支持
分享
最新回复 (8)
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
把主窗口的句柄传给worker thread,当worker thread完成时,PostMessage给主窗口
2012-8-12 14:12
0
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
最好是把整个主窗口的this指针作为worker thread的参数,在worker thread里填充接收到的信息[比如存放到主窗口的一个Public变量里],下载完毕后,发消息回去,通知主窗口创建控件,显示信息......
2012-8-12 14:16
0
雪    币: 132
活跃值: (214)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
4
[QUOTE=xiejienet;1094231]最好是把整个主窗口的this指针作为worker thread的参数,在worker thread里填充接收到的信息[比如存放到主窗口的一个Public变量里],下载完毕后,发消息回去,通知主窗口创建控件,显示信息......[/QUOTE]

三克油,目前就是用的这个方式,开个线程来读取数据,读取完毕后通知对话框(PostMessage)然后在消息中创建对话框来完成数据显示操作,这里仍然不能够让人满意,假如数据有100条甚至更多的情况,此时创建100来个控件来显示数据,包括控制控件的位置等繁琐的操作都会有些耗时,会显的稍微有点点卡(当控件显示数据的那个时刻),请问这里有没有什么解决办法?
我想过另开一个线程来处理创建控件,显示读取到的数据。。。。然而在MFC中用AfxBeginThread创建线程,在线程中创建控件总是发生断言失败,也查询了一些资料,没有找到更加好的方法。。。
2012-8-12 18:12
0
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不知道你界面是什么样的,每个软件都要动态生成控件?
我觉得ListCtrl更合适,而且一个就够了.
2012-8-12 18:51
0
雪    币: 132
活跃值: (214)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
6

类似这样的界面,前面是个图片(www.xxx.xx网络上的图片),还包括了超链接,按钮等几类控件。
2012-8-12 19:47
0
雪    币: 48
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
继承 CListCtrl,然后在 DrawItem() 中自己画界面。这样做效果要好过你创建许多控件。
示例代码可以参考 http://blog.sina.com.cn/s/blog_48f93b530100cwih.html 以及 eMule 代码中的 MuleListCtrl.cpp。
2012-8-24 11:26
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
一般这样的程序最好用纯SDK,最好不要用MFC。
2012-8-24 14:18
0
雪    币: 132
活跃值: (214)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
9
为何?理由是?
2012-8-25 16:52
0
游客
登录 | 注册 方可回帖
返回
//