C+++ MFC 基本对话框的,在这个界面中需要设计一个进度条,用来显示数据传输的进度,请问如何实现?? 20

当点击数据传输按钮时,进度条要能显示数据传输的进度。数据传输按钮在MFC中的代码如下,其中get_usb_data()函数在前面已经定义过了。请用定时器+progress... 当点击数据传输按钮时,进度条要能显示数据传输的进度。数据传输按钮在MFC中的代码如下,其中get_usb_data()函数在前面已经定义过了。请用定时器+progress控件的方法实现,然后把工程文件发到邮箱:ky0611@yahoo.cn
void CFDTDComputingConsoleDlg::OnReceive()
{
// TODO: Add your control notification handler code here
PUCHAR inBuffer= NULL;
inBuffer=(PUCHAR) malloc(2048);
LONG inlength = 2048;
int return_value =get_usb_data(inBuffer, inlength);

展开
 我来答
江半仙3e6e
2013-03-09 · TA获得超过4890个赞
知道大有可为答主
回答量:2251
采纳率:0%
帮助的人:1540万
展开全部
主线程来做会阻塞界面的刷新,一般采用的是子线程来接受信息,然后通过界面窗体的句柄,实现主线程和子线程间同步,进行进度的显示的。
也可以不用同步,就定义一个进度标示变量,绑定到你的进度条控件上,在子线程中进行累加,主窗口中增加一个timer,来间隔刷新。
追问
线程的编程我不会,有没有关于这个进度条MFC编程的资料
追答
那timer总会用吧?如果不好理解线程,你可以认为线程就是个timer, timer也是个线程。这样好写代码了吧?
定义个进度条变量DWORD dwCurrentLength,dwPrevLength;用于指示当前和前一次的进度条显示长度。然后在你的接收数据函数当中不断地累加它,
然后在你的主窗口当中添加一个定时器timer响应函数OnTimer() ,在当中判断一下当前是否需要刷新显示进度条。
if(dwPrevLength < dwCurrentLength)
{
//这里发送WM_PAINT消息到进度条控件的句柄,来强制刷新进度条
dwPrevLength = dwCurrentLength;
}
然后你再在点击传输数据开始的函数中添加一段代码来生成一个timer,每次开始传输数据就启动timer;
m_nTimer = SetTimer(...);
数据全部传输完毕就把这个timer终结掉。
Killtimer(m_nTimer);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式