http://tikitak.narod.ru ---- Главная страница сайта
Шаг 95 - Добавление своей панели инструментов.
В этом шаге мы создадим свою панель инструментов и поместим туда нашу кнопку. Это полезно, если вы хотите вынести на панель специфические действия Вашей программы, которые на стандартной панели как то не к месту.
Создаем приложение TestMyTools, как SDI и после выбора SDI сразу Finish. Нормально и быстро. Переходим в ResourceView там нам нужен Toolbar. Щелкаем правой кнопкой мыши и выбираем пункт Insert Toolbar.
Дальше как в тот раз рисуем круг и присваиваем идентификатор IDC_CURCLE. Панель есть теперь надо её вывести на экран.
Создаются панели инструментов в функции OnCreate класса CMainFrame. Только перед этим нам необходимо завести класс панели интсрументов. Один у нас есть он был сгенерирован App Wizard, а второй мы добавим.
class CMainFrame : public CFrameWnd
{
.....
CToolBar m_wndToolBar; // было
CToolBar m_wndToolBar1; // добавили
....
};
Теперь нам нужно повторить инииализацию в OnCreate только использовать идентификатор нашей панели и наш класс. Жирным дополнения
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
if (!m_wndToolBar1.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar1.LoadToolBar(IDR_TOOLBAR1))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
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
}
// TODO: Delete these three lines if you don't want the toolbar to
// be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndToolBar1.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
DockControlBar(&m_wndToolBar1);
return 0;
}
И как в прошлом примере реакцию на нажатие на диалоговой панели.
/////////////////////////////////////////////////////////////////////////////
// CTestMyToolsView message handlers
void CTestMyToolsView::OnCurcle()
{
CDC* pDC;
pDC=GetDC();
pDC->Ellipse(CRect(10,10,100,100));
}
Мы с Вами получили настоящую диалоговую панель. Эту панель можно таскать и прислонять к стенкам. Все можно кроме как убирать с экрана. :-))))
Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление By Artem.
Используются технологии uCoz
|