15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Как поместить ToolBar в диалог

Поместите следующий код в OnInitDialog Вашего диалогового приложения:

BOOL CYourDlg::OnInitDialog()
{
  CDialog::OnInitDialog();	
  ToolBar.Create(this, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_TOOLTIPS |
                                           CBRS_FLYBY | CBRS_BORDER_BOTTOM);
  ToolBar.LoadToolBar(IDR_TOOLBAR1);
  
  CRect rcClientStart;
  CRect rcClientNow;
  GetClientRect(rcClientStart);
  RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST,
                                                0, reposQuery, rcClientNow);
  CPoint ptOffset(rcClientNow.left - rcClientStart.left,
                                       rcClientNow.top - rcClientStart.top);

  CRect rcChild;
  CWnd* pwndChild = GetWindow(GW_CHILD);
  while (pwndChild)
  {
    pwndChild->GetWindowRect(rcChild);
    ScreenToClient(rcChild);
    rcChild.OffsetRect(ptOffset);
    pwndChild->MoveWindow(rcChild, FALSE);
    pwndChild = pwndChild->GetNextWindow();
  }

  CRect rcWindow;
  GetWindowRect(rcWindow);
  rcWindow.right += rcClientStart.Width() - rcClientNow.Width();
  rcWindow.bottom += rcClientStart.Height() - rcClientNow.Height();
  MoveWindow(rcWindow, FALSE);	

  // Положение панелей
  RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
  
  return TRUE;  // возвращает TRUE  до тех пор, пока Вы не установите
                // фокус на элемент управления
}

Так же создайте переменную-член CToolBar ToolBar в Вашем диалоге. Затем создайте в ресурсах toolbar и пусть он будет ID IDR_TOOLBAR1.