如何在MFC应用程序中创建无限的不确定进度条?
有我的来源,但它不是我想要的无限。
WaitProcessDlg::WaitProcessDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(WaitProcessDlg::IDD, pParent)
{
}
void WaitProcessDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_PROGRESS1, m_Progress);
}
BEGIN_MESSAGE_MAP(WaitProcessDlg, CDialogEx)
ON_WM_TIMER()
END_MESSAGE_MAP()
BOOL WaitProcessDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
str = pApp->GetProfileString(_T("Process"), _T("Process"));
if(tempHWND = ::FindWindow(NULL, str)){
EndDialog( 0 );
}else{
CMFCRibbonProgressBar* pProgressBar = new CMFCRibbonProgressBar(IDC_PROGRESS1, pProgressBar);
pProgressBar->SetInfiniteMode(m_bInfiniteProgressMode);
pProgressBar->SetRange(0, 200);
pProgressBar->SetPos(200, true);
m_Progress.SetInfiniteMode(m_bInfiniteProgressMode);
m_Progress.SetRange(0, 100);
SetTimer(IDC_PROGRESS1, 0, NULL);
}
return TRUE;
}
void WaitProcessDlg::OnTimer(UINT nIDEvent)
{
while (m_Progress.GetPos() != 100){
if (tempHWND = ::FindWindow(NULL, str)){
EndDialog(0);
KillTimer(IDC_PROGRESS1);
}
m_Progress.OffsetPos(1);
}
while (m_Progress.GetPos() != 0){
if (tempHWND = ::FindWindow(NULL, str)){
EndDialog(0);
KillTimer(IDC_PROGRESS1);
}
m_Progress.OffsetPos(-1);
}
CDialog::OnTimer(nIDEvent);
}
我需要一些示例或如何在MFC上创建不确定的进度条,如下所示: Progress bar
答案 0 :(得分:2)
为了创建一个不确定的进度条(称为Marquee),您需要在对话框编辑器中将进度条的Marquee
属性设置为True
。
然后,在您的InitDialog
方法中,您需要在进度条上调用SetMarquee
方法:
BOOL CMFCApplication1Dlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
m_Progress.SetMarquee(TRUE, 1); // Start the marquee
return TRUE; // return TRUE unless you set the focus to a control
}
结果如下: