在 MFC(Microsoft Foundation Classes)中,CFrameWnd 类的 NegotiateBorderSpace 方法用于允许子窗口(例如视图)与主框架窗口进行边框空间的协商。这可以用于调整主框架窗口周围的空间,以便给子窗口留出特定的空间。

以下是该方法的声明:
virtual BOOL NegotiateBorderSpace(UINT nBorderCmd, LPRECT lpRectBorder);

该方法接受两个参数:

  •  nBorderCmd:指定请求的边框命令,可以是 BORDERCMD_SET、BORDERCMD_GET 或 BORDERCMD_NEGOTIATE.

  •  lpRectBorder:指向一个RECT结构的指针,用于指定或接收边框空间的信息。


使用示例:
CMainFrame* pMainFrame = (CMainFrame*)AfxGetMainWnd();
RECT rectBorder;

// 获取边框空间
if (pMainFrame->NegotiateBorderSpace(BORDERCMD_GET, &rectBorder))
{
    // 在此可以使用 rectBorder 中的信息执行相应的操作
}

// 设置边框空间
rectBorder.left = 50;
rectBorder.top = 50;
rectBorder.right = 200;
rectBorder.bottom = 200;

if (pMainFrame->NegotiateBorderSpace(BORDERCMD_SET, &rectBorder))
{
    // 在此可以使用 rectBorder 中的信息执行相应的操作
}

在上述示例中,NegotiateBorderSpace 方法可以用于获取当前边框空间或设置新的边框空间。通过指定 BORDERCMD_GET 或 BORDERCMD_SET,可以执行相应的操作。如果成功执行,该方法返回 TRUE。

这个方法通常在子窗口的 OnSize 或 OnSizeParent 等处理函数中调用,以便在调整窗口大小时协商边框空间。


转载请注明出处:http://www.zyzy.cn/article/detail/17883/MFC/CFrameWnd