http://tikitak.narod.ru ---- Главная страница сайта
Шаг 18 - Панель инструментов
Создание проекта
Дополняем Step1. В файле ресурсов необходимо создать панель инструментов. Для этого перейти на вкладку Resource и Меню Insert, далее New Resource, из списка выберите панель инструментов, и добавьте 2 кнопки.
Создаем код
Добавляем в класс рамки окна класс панели инструментов
class CMainWnd : public CFrameWnd
{
..............
CToolBar my_ToolBar; // Моя панель
................
};
И в процедуру OnCreat для CMainWnd код для создания
int CMainWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
................
my_ToolBar.Create(this);
my_ToolBar.LoadToolBar(IDR_TOOLBAR1);
my_ToolBar.SetBarStyle(my_ToolBar.GetBarStyle() | CBRS_SIZE_DYNAMIC);
my_ToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&my_ToolBar);
..............
return TRUE;
}
Перенесем элементы управления ниже
CMainWnd::CMainWnd()
{
Create(NULL,"Step1",WS_OVERLAPPEDWINDOW,rectDefault,NULL,NULL);
MyStatic = new CStatic();
MyStatic->Create("MyStatic",WS_CHILD|WS_VISIBLE|SS_CENTER,
CRect(10,100,100,150),this);
MyButton = new CMyButton();
MyButton->Create("MyButton",WS_CHILD|WS_VISIBLE|SS_CENTER,
CRect(120,100,220,150),this,IDC_MYBUTTON);
MyEdit = new CEdit();
MyEdit->Create(WS_CHILD|WS_VISIBLE|WS_BORDER,
CRect(240,100,340,150),this,IDC_MYEDIT);
}
Описание
Создаем класс панели инструментов в классе рамки окна. Как и все элементы панель инструментов необходимо создать. Для её создания мы выбрали место OnCreate, на мой взгляд это не самое плохое место.
При создании требуется указать окно владельца. Естественно в нашем случае рамка окна, this сам за себя говорит.
Далее мы читаем панель из ресурсов. Это так знакомо !
//для меню
m_wndMenu.LoadMenu(IDR_MENU1);
SetMenu(&m_wndMenu);
// для диалоговой панели
CDialog about(IDD_DIALOG1);
about.DoModal();
.............
SetBarStyle Мы унаследовали от папы CControlBar, мы к текущим стилям добавляем динамический размер.
Следующей командой разрешаем её причаливание. CBRS_ALIGN_ANY - причаливать в любое место, а могли и не давать такой свободы.
И необходимо разрешить "причалу" принимать панель. И в конце силовое причаливание, для начала.
Запускайте, после всех необходимых процедур. Потаскайте панель, причальте туда, сюда. Работает !!! Как у Всех !!!
Естественно необходимо проверять, создалась панель или нет, прочиталась или нет. Не Забывайте.
Шпаргалка
Обьявить класс панели
class CMainWnd : public CFrameWnd
{
..............
CToolBar my_ToolBar;
................
};
Создать и прочитать из ресурсов
my_ToolBar.Create(this);
my_ToolBar.LoadToolBar(IDR_TOOLBAR1);
Стиль и тип причала
my_ToolBar.SetBarStyle(my_ToolBar.GetBarStyle() | CBRS_SIZE_DYNAMIC);
my_ToolBar.EnableDocking(CBRS_ALIGN_ANY);
Для рамки окна разрешить принимать суда и панель завести в порт
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&my_ToolBar);
Предыдущий Шаг | Следующий Шаг | Оглавление By Artem.
Используются технологии uCoz
|