工控编程吧

标题: 上位机MFC如何在对话框中加载工具栏 [打印本页]

作者: qq263946146    时间: 2019-7-21 13:46
标题: 上位机MFC如何在对话框中加载工具栏
同样默认的对话框工程是不带工具栏的。我们得自己添加。
在工程播放工具栏ID,IDR_TOOLBAR
添加工具栏变量,并初始化
CToolBar m_wndToolBar;


  1. //创建工具栏
  2.         if (!m_wndToolBar.Create(this))
  3.         {
  4.                 return FALSE;
  5.         }

  6.         //加载工具栏资源
  7.         if (!m_wndToolBar.LoadToolBar(IDR_TOOLBAR))
  8.         {
  9.                 return FALSE;
  10.         }
  11.        
  12.         //获得旧客户区坐标
  13.         CRect rcOldClient;
  14.         GetClientRect(rcOldClient);                                                       

  15.         //获得新客户区坐标
  16.         CRect rcNewClient;
  17.         RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST,
  18.                 0, reposQuery, rcNewClient);                                                               
  19.        
  20.         //移动主窗口
  21.         CRect rcMain;
  22.         GetWindowRect(rcMain);
  23.         rcMain.right += rcOldClient.Width() - rcNewClient.Width();
  24.         rcMain.bottom += rcOldClient.Height() - rcNewClient.Height();
  25.         MoveWindow(rcMain, FALSE);       

  26.         //移动所有子窗口
  27.         CRect rcChild;
  28.         CPoint point(rcNewClient.left - rcOldClient.left, rcNewClient.top - rcOldClient.top);
  29.         CWnd* pChildWnd = GetWindow(GW_CHILD);
  30.         while (pChildWnd != NULL)
  31.         {
  32.                 pChildWnd->GetWindowRect(rcChild);
  33.                 ScreenToClient(rcChild);
  34.                 rcChild.OffsetRect(point);
  35.                 pChildWnd->MoveWindow(rcChild, FALSE);
  36.                 pChildWnd = pChildWnd->GetNextWindow();
  37.         }

  38.         //重新定位工具栏
  39.         RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
复制代码
运行就可以查看效果了,
这里也将例程工程提供参考
(, 下载次数: 0)