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);
} 展开
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);
} 展开
1个回答
展开全部
主线程来做会阻塞界面的刷新,一般采用的是子线程来接受信息,然后通过界面窗体的句柄,实现主线程和子线程间同步,进行进度的显示的。
也可以不用同步,就定义一个进度标示变量,绑定到你的进度条控件上,在子线程中进行累加,主窗口中增加一个timer,来间隔刷新。
也可以不用同步,就定义一个进度标示变量,绑定到你的进度条控件上,在子线程中进行累加,主窗口中增加一个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);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询