Дополнительные возможности панели состояния

Если во время работы приложения выполняется какой-либо длительный процесс, то в панели состояния можно вывести линейный индикатор progress bar, чтобы показать ход данного процесса.

Методика размещения полосы progress bar достаточно проста. В тот момент, когда понадобится вывести полосу progress bar, просто нужно создать ее, указав в качестве родительского окна панель состояния. Координаты линейного индикатора желательно выбрать так, чтобы он отображался на месте одного из индикаторов (например, на месте индикатора с идентификатором ID_INDICATOR_PRBAR). Предварительно можно убрать рамку с этого индикатора и заблокировать его так, чтобы в нем не отображался текст.

Предположим, что при выборе пользователем пункта меню необходимо выполнить какой-либо длительный процесс. Тогда метод-обработчик сообщения от пункта меню может выглядеть следующим образом:

void CMainFrame::OnItemMenu() { // получаем индекс индикатора ID_INDICATOR_PRBAR int index=m_wndStatusBar.CommandToIndex(ID_INDICATOR_PRBAR); // устанавливаем характеристики индикатора ID_INDICATOR_PRBAR m_wndStatusBar.SetPaneInfo(index,ID_INDICATOR_PRBAR, SBPS_DISABLED|SBPS_NOBORDERS,150); // определяем координаты индикатора ID_INDICATOR_PRBAR RECT r; m_wndStatusBar.GetItemRect(index,&r); // создаем линейный индикатор CProgressCtrl progress; if(!progress.Create(WS_CHILD|WS_VISIBLE,r,&m_wndStatusBar,1)) return; // устанавливаем границы для линейного индикатора progress.SetRange(0,100); // устанавливаем шаг приращения для линейного индикатора progress.SetStep(1); // плавно увеличиваем положение линейного индикатора for(int i=0; i<100; i++) { Sleep(10); // здесь можно выполнять действия // выполняем шаг приращения линейного индикатора progress.StepIt(); } // отображаем текст в самом первом индикаторе m_wndStatusBar.SetWindowText("Progress completed"); }

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: