是不是要创建一个线程来获取文件加载的进度啊?恳请大侠帮帮忙啊!

我在对话框中设置了一个菜单,当点击“打开”时出现选择文件对话框,选择文件,打开。这时我想用个进度条来同步显示文件加载时的进度。
这是点击菜单中“打开”时的响应函数:
void CXkvtPlayerDlg::On32771()
{
// TODO: 在此添加命令处理程序代码
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,"virtools文件(*.cmo)|*.cmo");
if (IDOK!=dlg.DoModal())
{
return;
}

filename1=dlg.GetPathName();

OnInitPlayer(); //加载文件的函数,该文件使用Virtools做的一个三维视图文件。
GetMenu()->GetSubMenu(0)->EnableMenuItem(0,MF_BYPOSITION|MF_DISABLED|MF_GRAYED);
}

慕尼黑5688855
浏览 135回答 3
3回答

慕田峪9158850

首先在页面中加入进度条控件,具体叫什么记不清了,自己找一下然后绑定变量如果没猜错的话OnInitPlayer(); 这个函数是整个文件导入的函数吧。应该从这个函数下手,因为只有这个函数里面才知道文件真正的导入进度。在这个函数中,首先获取文件的大小,然后没导入一部分之后,算好比例,更新界面上的进度条就可以了。

动漫人物

首先打开文件不需要进度条,open是立刻返回,只有读入的时候,如果文件很大才需要进度条,对用户提示。方法1 循环读入文件,每读一段数据,就更新下进度条,让它前进一小步。方法2 多线程,在另一个线程里读入,并更新进度条,可以先把进度条做参数传入

拉丁的传说

1.在MainFrm.h中生命对象:CProgressCtrl m_progres;2.在CMainFrame::OnCreate函数中创建状态栏样式:m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIGN_ANY);DockControlBar(&m_wndToolBar);3.添加WM_PAINT消息,在消息的处理函数中:CRect rect;m_wndStatusBar.GetItemRect(0,&rect);if(!m_progres.m_hWnd){m_progres.Create(WS_CHILD | WS_VISIBLE ,//| PBS_SMOOTH,rect,&m_wndStatusBar,123);}else{m_progres.MoveWindow(rect);}4.添加一个菜单,对其进行测试:void CMainFrame::OnRun(){m_progres.StepIt();}
打开App,查看更多内容
随时随地看视频慕课网APP