创建工具条

step1:
  在资源编辑器中插入工具条资源,并为每个按钮创建ID。将它命名为IDC_TOOLBAR1

  step2:
  在对话框变量中添加一个工具条变量。
CToolBar m_wndToolBar;

  step3:
  在CDialog::OnInitDialog中添加如下代码:


// 创建工具条并调入资源
if(!m_wndToolBar.Create(this) || !m_wndToolBar.LoadToolBar(IDR_TOOLBAR1))
{
TRACE0("Failed to Create Dialog Toolbar/n");
EndDialog(IDCANCEL);
}

CRect rcClientOld; // 久客户区RECT
CRect rcClientNew; // 加入TOOLBAR后的CLIENT RECT
GetClientRect(rcClientOld); //
// Called to reposition and resize control bars in the client area of a window
// The reposQuery FLAG does not really traw the Toolbar. It only does the calculations.
// And puts the new ClientRect values in rcClientNew so we can do the rest of the Math.
//重新计算RECT大小
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0,reposQuery,rcClientNew);

// All of the Child Windows (Controls) now need to be moved so the Tollbar does not cover them up.
//所有的子窗口将被移动,以免被TOOLBAR覆盖
// Offest to move all child controls after adding Tollbar
//计算移动的距离
CPoint ptOffset(rcClientNew.left-rcClientOld.left,
rcClientNew.top-rcClientOld.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); // 得到对话框RECT
rcWindow.right += rcClientOld.Width() - rcClientNew.Width(); // 修改对话框尺寸
rcWindow.bottom += rcClientOld.Height() - rcClientNew.Height();
MoveWindow(rcWindow,FALSE); // Redraw Window

RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);

 

example:
CToolBar m_wndToolBar;
CToolBarCtrl *btn;
///////////////////////////////////////////////////////////////////////////
 //创建ToolBar
 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_TOOLBAR1))
 {
  TRACE0("Failed to Create Dialog Toolbar/n");
  EndDialog(IDCANCEL);
 }

 CPoint ptOffset(0,55);
 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); // 得到对话框RECT
 rcWindow.bottom += 55;
 MoveWindow(rcWindow,FALSE); // Redraw Window
 RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);

 btn = (CToolBarCtrl*)&m_wndToolBar.GetToolBarCtrl();      
 btn->EnableButton(IDC_STOP,FALSE);
 btn->EnableButton(ID_REPORT,FALSE);
 btn->EnableButton(IDOK,TRUE);
 btn->EnableButton(ID_SHOWLIST,FALSE); 

你可能感兴趣的:(windows,report,REST,dialog,工具)