我正在尝试在对话框中添加进度控件,该控件将在循环的每次迭代中逐步执行,直到完成。我以前从未玩过进度控制,所以对于应该从哪里开始我一无所知。我已经在对话框中添加了进度控件资源视图,但是它只是显示为空的进度控件。我希望在按下按钮后从某处加载星星的图像时动态显示/更新进度控件。我试图在Visual c ++环境中的对话框上添加进度控件。
添加此工具后,以下代码添加到main.cpp中:
void CPanoramicsampleDlg::OnNMCustomdrawProgress1(NMHDR *pNMHDR, LRESULT *pResult){
}
我可以显示在Text控件中的加载过程,如下所示:
sprintf_s(pack1,"Data%d%%",Event);
::SetWindowText(GetDlgItem(IDC_Static)->m_hWnd,pack1);
因此,通过这种方式,我可以在文本窗口中将加载过程视为%d,但是我不知道如何通过进度控制显示加载过程,也不知道如何以及在何处为该进度控制定义范围甚至进度条句柄等等。最后我想知道是否有用于进度控制的功能,例如:
::EnableWindow(GetDlgItem(IDC_Progress1)->m_hWnd);
您应该首先为控件添加一个变量,方法是右键单击对话框编辑器中的进度条,然后选择“添加变量...”。然后,对话框类将具有该类的实例,然后可以在该实例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()的位置:描述您已经可以使用some或other跟踪文本控件中的加载进度eventParam1
。这听起来像是您正在执行的加载操作中的处理程序或回调,而您将在进度条实例上使用SetPos()代替。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句