进度条问题 我读入较大的文件或数据,可能需要花10多秒的时间,中间希望能显示进度条,但我无法估计具体时间?请问怎么实现呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 (一)进度条的主要功能 进度条控制(Progress Control)主要用来进行数据读写、文件拷贝和磁盘格式等操作时的工作进度提示情况,如安装程序等,伴随工作进度的进展,进度条的矩形区域从左到右利用当前活动窗口标题条的颜色来不断填充。 进度条控制在MFC类库中的封装类为CProgressCtrl,通常仅作为输出类控制,所以其操作主要是设置进度条的范围和当前位置,并不断地更新当前位置。进度条的范围用来表示整个操作过程的时间长度,当前位置表示完成情况的当前时刻。SetRange()函数用来设置范围,初始范围为0-100,SetPos()函数用来设置当前位置,初始值为0,SetStep()函数用来设置步长,初始步长为10,StepIt()函数用来按照当前步长更新位置,OffsetPos()函数用来直接将当前位置移动一段距离。如果范围或位置发生变化,那么进度条将自动重绘进度区域来及时反映当前工作的进展情况。 进度条的对象结构 进度条控制的建立方法 CProgressCtrl &ProgressCtrl 建立进度条控制对象结构 Create 建立进度条控制对象并绑定对象 进度条控制类CprogressCtrl::Create的调用格式如下: BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID ); 其中参数dwStyle用来确定进度条控制的控制风格;参数rect用来确定进度条控制的大小和位置;参数pParentWnd用来确定进度条父窗口指针;参数nID用来确定进度条控制的控制符ID值。 2、进度条控制的类属性 进度条控制的类属性包括设置进度条最大最小控制范围SetRange、设置进度条当前位置 SetPos、设置进度条当前位置偏移值OffsetPos和设置进度条控制增量值SetStep。 3、进度条控制的操作方法 进度条控制的操作方法主要是使进度条控制并重绘进度条的StepIt函数。 进度条控制的应用技巧示例 1、利用应用程序向导AppWizard生成基于对象框的应用程序CProgDlg; 2、在对话框中设置进度条和静态文本控制,其ID分别为IDC_PROG和IDCPERCENT; 在对话框初始代码中增加控制的范围和位置: 在ProgDlg.h中设置两个数据成员,用来表示进度条的最大值和步长: //ProgDlg.h class CProgDlg:public Cdialog { ......//其它代码 public: int m_nMax,m_nStep; ...... //其它代码 } (2)在ProgDlg.cpp中设置初始状态 BOOL CProgDlg::OnInitDialog() { Cdialog::OnInitDialog(); ......//其它代码 //TODO:Add extra initialization here CProgressCtrl *pProgCtrl=(CProgressCtrl*)GetDlgItem(IDC_PROG); pProgCtrl->SetRange(0,200);//设置进度条范围 ......//其它代码 m_nMax=200; m_nStep=10; SetTimer(1,1000,NULL);//设置进度条更新时钟 return TRUE; } (3)完善WM_TIMER消息处理,使进度条按照当前步长进行更新,同时完成进度条的百分比显示: void CProgDlg::OnTimer(UINT nIDEvent) { //TODO:Add your message handler? CProgressCtrl *pProgCtrl=(CProgressCtrl*)GetDlgItem(IDC_PROG); int nPrePos=pProgCtrl->StepIt();//取得更新前位置 char test[10]; int nPercent=(int)(((nPrePos+m_nStep)/m_nMax*100+0.5); wsprintf(test,?%d%%?,nPercent); GetDlgItem(IDC_PERCENT)->SetWindowText(text); Cdialog::OnTimer(nIDEvent); } http://www.vckbase.com/document/viewdoc/?id=1212 http://www.vckbase.com/document/viewdoc/?id=506 用CWGraph控件出错“error LNK2019: 无法解析的外部符号” 我用网上下载的CCaptureVideo类(用的directshow)已经实现的视频预览和抓图,请问我怎么得到一帧一帧数据啊? 在VC2005中菜单的消息响应函数怎么去掉? 我想在一个长条形的矩形区域内(像进度条的形状) 动态显示一张矩形图片,如何防止屏幕闪烁! 如何学c++ OpenGL中如何使每个象素的坐标转化为绘图区的实数坐标? 请问如何将一个新的cpp文件加入MFC工程 CDatabase与ADO访问速度上的比较? 请问各位,有谁知道 ERP 中的 现场绩效系统 浮动面板是怎么实现的,有没有代码? 网络截包问题,请高手指教!!!! 用vc++编写的程序,经编译后成为可执行文件,但是他在另一台机器上运行时,出现如下错误信息:没有找到MFC42D.DLL
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货