怎样在mfc列表控件中加入进度条

怎样在mfc列表控件中加入进度条,第1张

1从简单易用角度讲,用Dialog比较好。单文档的话,楼主可能找不到吧控件拖到哪里去。而且单文档有框架类和视图类,要在视图类里改,不要在框架类里面改。

2Dialogue的话,看你的需要了。在controls框里面拖一个列表控件。然后用classwizard添加一个control型成员m_list。对控件的 *** 作,可以通过 *** 作这个成员来实现。

3楼主会发现,有3个类,一个是aboutdlg,这个是显示版本信息的对话框,不用管。

一个是CApp类,是应用程序类,程序就是从这里执行的,对于现在的问题,可以不用管。

还有一个是CDlg类,这个就是我们的dialogue窗口类,就修改这里。

4这个类里面好多函数,如果楼主希望在对话框d出来时就有列表控件出现,并分好格子,那么,要修改它的成员函数OnInitDialog。这个函数看名字就知道是初始化对话框的。

可以在这个里面 *** 作m_list成员,来调整列表控件。

5 *** 作的具体过程呢,我这里不写太详细,说的多了反而影响学习,楼主可以自己看MSDN里面CListCtrl的成员函数,不难,找几个看的懂的试下就知道了,我也写几个:

GetItemText()得到一个条目的文本

SetItemTex:设置一个条目的文本

InsertItem:插入一个新条目

DeleteItem:删除一个新条目

等等,等等,说不尽啊,请自己看一下,不难的。

6说到list控件,脑子里一下子出现好多东西,如在列表里面加个check功能,改个颜色,放个按钮,进度条等等,哎呀,太多了,不知道从何说起。

7很多VC,mfc方面的书,都会在一开始描述控件的使用,楼主可以随便找一本,或者网上下一本,一步一步跟着做一次,这个东西就不会陌生了。楼主这个阶段,可能看MSDN比较困难,因为,毕竟还不是很了解VC里面MFC的各种结构,建议找本书看,入门的话,推荐孙鑫的《VC++深入详解》带视频的。

8有问题可以发消息给我。我一般中午,晚上会在线2个小时解答问题

你用SetRange设置好范围,

再计算好步长和步数就行了

比如SetRange(0,100);

一共100步,你就可以一次加1,

SetPos(nCount++);

m_progressSetRange(0,100);

m_progressSetPos(0);

m_progressSetStep(1);

他是显示程序运行进度的,你确定了时间这样有意义么?

当然你可以用定时器实现:

SetTimer(1,100,NULL);//01s

然后在定时器中:m_progressSetPos(100);

SetTimer(1,10000,NULL);//10s

进度条应该放在主线程里,不需要单独启动线程。

计算过程放到线程里面,应该在对话框中处理好数据(包括UpdateData),然后启动线程,并将对话框指针传递给线程。

线程中,可以回传(回写)对话框变量,在对话框中通过该变量或消息控制进度条。如果不需要准确进度,也可以使用WaitingForSingleObject来控制进度条结束。

★首先,我要确定你是单线程还是多线程。

☆单线程是指,你按下按钮后,是由主线程(没有开新线程)在执行对应的函数。如果那个函数是包含循环的,是一个不断计算的函数,那么,很抱歉,你的窗口会直接没响应,就算你用进度条输出进度也不能显示,所以没意义。

☆多线程是指,你按下按钮后,启动一个新线程来进行那个函数调用,主线程立马返回。这样是正确的做法。那么这种情况就是一个线程间通信的问题。我可以告诉你怎么做。

★最简单的做法是用一个两个线程都能访问的变量(全局变量或者堆上的变量,或者静态变量等),计算线程不断的把进度写入到那个变量中;主线程在开启分线程以后,设置一个定时器,每隔1秒(或者更少时间),将那个变量的值显示到"静态编辑框"和"进度条"。

★如果对精度要求很高,那么就存在线程同步问题,需要使用互斥量、临界区等来做线程同步。对精度要求不高的应用就没必要了。

以上就是关于怎样在mfc列表控件中加入进度条全部的内容,包括:怎样在mfc列表控件中加入进度条、我用MFC做了个程序,想添加一个进度条,程序运行开始,进度开始走,程序执行完,进度也走完。不知道怎么控、mfc 如何实现一个进度条根据输入的时间值进行响应等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9725452.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存