Итак, DialogBar у нас есть, только вот список и полоску редактирования надо бы какими-то данными инициализировать. Надо. Вот только как ??? Давайте возмем созданный Вами проект и попробуем проинициализировать элементы на DialogBar.
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { ...... EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar); m_wBar.Create(this,IDD_DIALOG1,CBRS_TOP,ID_MY_BAR); CEdit *pEd = (CEdit*) m_wBar.GetDlgItem(IDC_EDIT1); pEd->SetWindowText("Edits"); return 0; }
Мы воспользовались функцией GetDlgItem() для получения доступа к элементу по его идентификатору.
HWND GetDlgItem( int nID ) const;
И нам пришлось привести типы указателей к указателю на класс. Как сделать реакцию на кнопку в DialogBar ? Для этого можно воспользоваться Class Wizard. На картинке вы увидите идентифкаторы элементов и возможность привязать к ним события.
При вызове ClassWizard для диалога, который отражается в DialogBar, у Вас спросят нужно ли создавать новый класс. Нужно ответить нет. Зачем его создавать то ??? Просто нужно указать где будет производиться обработка данного события. Я, например, сделал это в CMainFrame как на рисунке. А вот код.
void CMainFrame::OnButton1() { AfxMessageBox("Click"); }
Запустите приложение и Вы увидите, что у Вас кнопка активная и что в поле редактирования внесена надпись.