如何在Visual c++中同步一个进度控件和一组正在加载的对话框中的数据
How to sync a Progress Control with a set of data which is loading in a Dialog Box in Visual C++
我试图在我的对话框中添加一个进度控制,这将在循环的每次迭代上进行步骤,直到完成。我之前从未尝试过进度控制,所以我完全不知道应该从哪里开始。我在对话框中添加了一个进度控件资源视图,但它只是显示为一个空的进度控件。我想有进度控制动态出现/更新时,按下按钮后,从某个地方星星正在加载图像。我试图在Visual c++环境中添加一个对话框的进度控制。
添加此工具后,将以下代码添加到main.cpp:
void CPanoramicsampleDlg::OnNMCustomdrawProgress1(NMHDR *pNMHDR, LRESULT *pResult){
}
我可以显示加载文本控件的过程,如下所示:
sprintf_s(pack1,"Data%d%%",Event);
::SetWindowText(GetDlgItem(IDC_Static)->m_hWnd,pack1);
所以在这种方式下,我可以看到加载过程作为%d在文本窗口,但我不知道如何显示加载过程的进度控制和如何以及在哪里定义范围,甚至进度条句柄为这个进度控制等等。最后我想知道是否有进度控制功能,例如:
::EnableWindow(GetDlgItem(IDC_Progress1)->m_hWnd);
首先应该为控件添加一个变量,方法是右键单击对话框编辑器中的进度条,然后选择add variable…然后,您的对话框类将有一个CProgressCtrl
类的实例,然后您可以调用IInspectable在他的回答中提到的成员。删除OnNMCustomdrawProgress1处理程序,您不需要它。
。
m_progressCtrl.EnableWindow(TRUE);
m_progressCtrl.SetRange(0, 100);
m_progressCtrl.SetPos(75);
然后,无论你提到的eventParam1
值是什么,将它在你的开始值和停止值之间占比例,并用它调用SetPos。
注释后更新:
执行OnInitDialog()函数中的SetRange()。如果你还没有一个OnInitDialog,你需要覆盖它,按照这个问题的公认答案中的说明来做。VS 2008, MFC:添加OnInitDialog -如何?
至于你把SetPos():你描述,你已经可以跟踪加载进度在一个文本控件使用一些或其他eventParam1
。这听起来像是你正在做的任何加载的处理程序或回调,这就是你将在进度条实例上代替SetPos()的地方。
CProgressCtrl类提供了以下必须使用的成员:
- CProgressCtrl::SetRange:允许设置下限和上限。这些值理想地反映了您的起始状态和结束状态。
- CProgressCtrl::SetPos:用于更新当前位置。您将更新用于在编辑控件中输出进度的当前位置。
作为使用显式位置值调用CProgressCtrl::SetPos
的替代方法,您可以设置一个步长增量,调用CProgressCtrl::SetStep,并通过调用CProgressCtrl::StepIt来更新控件。如果您提前知道步长增量,这是更新当前位置的一种更简单的方法。
更多信息请访问MSDN: Using CProgressCtrl
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- 保存/加载大量短数组到二进制文件
- 在另一台 PC 上执行程序时加载 SDL2 共享库时出错
- 加载有空指针的字符数组的打印值
- 如何将字符串加载到BYTE*数组(C++)的元素中
- 如何将统一缓冲区对象数组加载到着色器中?
- 加载字节数组(从内存)到libpng c
- 一次加载整个缓存行以避免争用其中的多个元素
- 当将多个TypedArrayContents数组加载到V8数组中时(数组数组)时,最后一个元素将覆盖所有元素
- 从字节数组加载 QImage,而无需知道格式
- 在 qml 中从字节数组加载到图像
- 如何使用 for 循环将元素加载到我的每个数组中,然后将每个数组的总和输出到一个 sum 数组中
- 一种在没有 root 的情况下加载共享库的更简单方法
- 如何将OpenCV的Mat结构的部分图像矩阵加载到我自己的3x3数组中?
- C#从文件加载数据并分类为数组
- 尝试将文本文件加载到动态分配的 2D 数组中时出现'Segmentation fault'错误
- OpenCV便宜的立体相机无法一次加载两个流
- 一次加载大块 csv 而不是使用 getline 的方法
- libcurl是否一次加载完整的页面?
- 如何在Visual c++中同步一个进度控件和一组正在加载的对话框中的数据