MFC,想要在对话框中用进度条显示按下按钮后按钮对应函数执行的进度,并用静态编辑框输出,具体怎么做?
展开全部
★首先,我要确定你是单线程还是多线程。
☆单线程是指,你按下按钮后,是由主线程(没有开新线程)在执行对应的函数。如果那个羡咐函数是包含循环的,是一个不断计算的函数,那么,很抱歉,你的窗口会直接没响应,就算你用进度条输出进度也不能显示,所以没意义。
☆多线程是指,你按下按钮后,启动一个新线程来进行那个函数调用,主线程立马返回。这样是正确的做法。那么这种情况就是一个线程间通信的问题。我可以告诉你怎么做。
★最简单的做法是用一个两个线程都能访问的变量(全局变量或者堆上的变量,或者静态变量等),计算线程不断的把进度写入到那个变量中;主线程在开启分线程以后,设置一个定时器,每携哗隔1秒(或者更少时间),将那个变量的值显示到"静态编辑框"和"辩派行进度条"。
★如果对精度要求很高,那么就存在线程同步问题,需要使用互斥量、临界区等来做线程同步。对精度要求不高的应用就没必要了。
☆单线程是指,你按下按钮后,是由主线程(没有开新线程)在执行对应的函数。如果那个羡咐函数是包含循环的,是一个不断计算的函数,那么,很抱歉,你的窗口会直接没响应,就算你用进度条输出进度也不能显示,所以没意义。
☆多线程是指,你按下按钮后,启动一个新线程来进行那个函数调用,主线程立马返回。这样是正确的做法。那么这种情况就是一个线程间通信的问题。我可以告诉你怎么做。
★最简单的做法是用一个两个线程都能访问的变量(全局变量或者堆上的变量,或者静态变量等),计算线程不断的把进度写入到那个变量中;主线程在开启分线程以后,设置一个定时器,每携哗隔1秒(或者更少时间),将那个变量的值显示到"静态编辑框"和"辩派行进度条"。
★如果对精度要求很高,那么就存在线程同步问题,需要使用互斥量、临界区等来做线程同步。对精度要求不高的应用就没必要了。
展开全部
按钮事件里启动线程,在线程里做相应的处理
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询