CFrameWnd::NegotiateBorderSpace 是 MFC(Microsoft Foundation Classes)中的一个公共方法,用于与 MDI(Multiple Document Interface)子窗口协商边框空间。这个方法通常在 MDI 子窗口的 OnGetMinMaxInfo 方法中调用。

以下是 CFrameWnd::NegotiateBorderSpace 的基本语法:
BOOL CFrameWnd::NegotiateBorderSpace(UINT nBorderCmd, LPRECT lpRectBorder);

  •  nBorderCmd:指定边框命令,可以是 BORDER_COMMAND_SET 或 BORDER_COMMAND_GET。

  •  lpRectBorder:指向 RECT 结构的指针,用于传递或接收边框的空间。


这个方法用于协商 MDI 子窗口与其父框架窗口之间的边框空间。当 nBorderCmd 为 BORDER_COMMAND_SET 时,子窗口通过设置 lpRectBorder 来告诉父窗口需要的边框空间。当 nBorderCmd 为 BORDER_COMMAND_GET 时,父窗口通过 lpRectBorder 来告诉子窗口分配的边框空间。

以下是一个简单的例子:
void CMyChildFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
{
    CFrameWnd::OnGetMinMaxInfo(lpMMI);

    // 协商边框空间
    RECT rectBorder;
    if (NegotiateBorderSpace(BORDER_COMMAND_GET, &rectBorder))
    {
        // 处理获取到的边框空间
        // ...
    }

    // 设置子窗口的最小尺寸
    lpMMI->ptMinTrackSize.x = rectBorder.right - rectBorder.left;
    lpMMI->ptMinTrackSize.y = rectBorder.bottom - rectBorder.top;
}

在这个例子中,OnGetMinMaxInfo 方法中调用了 NegotiateBorderSpace 来获取父窗口分配的边框空间,然后根据需要进行处理。确保在实际使用时根据你的应用程序的需求进行适当的处理。


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