Предположим, что вы хотите показать CProgressCtrl на весь StatusBar. Для этого необходимо проделать следующее: - Выберите пункт меню View - Resource Symbols. Нажмите кнопку New и добавьте новое имя, в нашем примере это будет ID_PROGRBAR. - В файле MainFrm.cpp найдите объявление массива indicators (он находиться сразу после END_MESSAGE_MAP) и отредактируйте его к следующиему виду static UINT indicators[] = { ID_PROGRBAR }; - В файле _MainFrm.h создайте protected переменную m_bCreated типа BOOL и public переменную m_progress типа CProgressCtl. - В файле MainFrm.cpp отредактируйте конец функции int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) таким образом: к участку кода: if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof (UINT))) { TRACE0("Failed to create status bar\n" ); return -1; // fail to create } добавьте следующую строку: else { m_wndStatusBar.SetPaneInfo(0,ID_PROGRBAR,SBPS_STRETCH,10); } Кроме того, добавьте инициализацию нашей переменной m_bCreated ......... m_bCreated=FALSE; .......... - Теперь мы можем использовать ProgressBar в строке статуса, естественно не забыв создать этот объект. Предположим, у нас есть функция CMainFrame::OnWork(). Она будет выглядеть примерно так: void CMainFrame::OnWork() { RECT rc; m_wndStatusBar.GetItemRect(0,&rc); if (m_bCreated==FALSE) { // создаем m_progress m_progress.Create(WS_VISIBLE|WS_CHILD, rc,&m_wndStatusBar, 1); // Устанавливаем размер от 0 до 100 m_progress.SetRange(0,100); m_progress.SetStep(1); m_bCreated=TRUE; } for (int I = 0; I < 100; I++) { Sleep(20); m_progress.StepIt(); } } -Если откомпилировать проект на этой фазе, то все будет работать, но при изменении размера окна линейка ProgressBar'а размеры менять не будет, поэтому необходимо перекрыть событие OnSize: void CMainFrame::OnSize(UINT nType, int cx, int cy) { CFrameWnd::OnSize(nType, cx, cy); if (m_bCreated) { RECT rc; m_wndStatusBar.GetItemRect(0,&rc); m_progress.SetWindowPos(&wndTop, rc.left, rc.top, rc.right - rc.left,rc.bottom - rc.top, 0); } } - Вот теперь все. Откомпилируйте проект и убедитесь, что все работает. |