CWnd::RepositionBars 是 MFC(Microsoft Foundation Classes)中的一个公共方法,用于重新定位并调整控制条(如工具栏、状态栏等)的大小。通常,该方法用于在窗口大小发生变化时,动态地调整控制条的布局,以适应新的窗口大小。

以下是 CWnd::RepositionBars 的基本语法:
void RepositionBars(
   UINT nIDFirst,
   UINT nIDLast,
   UINT nIDLeftOver,
   UINT nFlags = reposDefault,
   LPRECT lpRectParam = NULL,
   LPCRECT lpRectClient = NULL,
   BOOL bStretch = TRUE
);

参数的含义如下:

  •  nIDFirst 和 nIDLast:指定控制条的 ID 范围,这些控制条将被重新定位和调整大小。


  •  nIDLeftOver:指定要留给剩余空间的控制条的 ID。这个控制条将填充任何未被其他控制条占用的空间。


  •  nFlags:控制调整操作的标志。可以是以下值的组合:

  - reposDefault:使用默认标志。
  - reposQuery:查询调整前后的信息,但不进行实际的调整操作。
  - reposExtra:调整窗口大小时,额外处理控制条。

  •  lpRectParam:传递调整前的窗口矩形。


  •  lpRectClient:传递客户区矩形。


  •  bStretch:如果为 TRUE,则调整控制条以填充整个空间;如果为 FALSE,则不进行拉伸,保持原始大小。


RepositionBars 方法通常在 OnSize 消息处理函数中被调用,以确保在窗口大小变化时,控制条能够适应新的窗口大小。

示例代码:
void CMyWnd::OnSize(UINT nType, int cx, int cy)
{
   CWnd::OnSize(nType, cx, cy);

   // 重新定位和调整大小控制条
   RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST,
                  0, reposDefault, NULL, NULL, TRUE);
}

这样可以确保在窗口大小变化时,与窗口关联的控制条会适应新的窗口大小。


转载请注明出处:http://www.pingtaimeng.com/article/detail/23536/MFC/CWnd