gpt4 book ai didi

c++ - MFC:如何防止子 CWnd 对话框在调整父窗口大小时跳转?

转载 作者:行者123 更新时间:2023-11-30 05:33:06 27 4
gpt4 key购买 nike

我正在编写一个带有多个控件的 MFC 对话框。我目前有一个 CWnd,它位于 dialog 的右半部分。单击编辑按钮后,子 CWnd 会调整大小以占据对话框的较大部分。

但是,现在当我尝试调整窗口大小时,子 CWnd 跳回到原来的位置。我似乎无法弄清楚如何在调整大小时将其保持在新位置。

相关代码:

OnInit() {
//the grouper rectangle
CRect rectHTMLGrouper;
m_grpHTMLbox.GetWindowRect(&rectHTMLGrouper);
ScreenToClient(&rectHTMLGrouper);

//the new rectangle to use for positioning
CRect rectHtml;
rectHtml.left = rectHTMLGrouper.left + PREVIEW_EDITOR_LEFT;
rectHtml.right = rectHTMLGrouper.right - PREVIEW_EDITOR_RIGHT;
rectHtml.top = rectHTMLGrouper.top + PREVIEW_EDITOR_TOP;
rectHtml.bottom = rectHTMLGrouper.bottom - PREVIEW_EDITOR_BOTTOM;

//this inits my editor and sets the position
m_wHtmlEditor.CreateHtmlEditor(rectHTMLGrouper, this, WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN);

//CodeJock - XTREMEToolkit Call for SetResize Logic
SetResize(m_wHtmlEditor.GetDlgCtrlID(), LEFT_PANE_RESIZE, 0, 1, 1);
m_wHtmlEditor.SetWindowPos(&CWnd::wndTop, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOACTIVATE | SWP_NOMOVE);
}


OnEditMode() {

//enlarge the editor to take up the full dialog
CRect parentClientRect;
m_wHtmlEditor.GetParent()->GetClientRect(&parentClientRect);
m_wHtmlEditor.SetWindowPos(&CWnd::wndTop, parentClientRect.left + edgePadding, parentClientRect.top + editorTopPadding, parentClientRect.right - (edgePadding * 2), parentClientRect.bottom - bottomPadding, SWP_NOOWNERZORDER);

return;
}

最佳答案

Upon clicking an edit button, the child CWnd is resized to take up a larger portion of the dialog.

您必须在 OnSize() (ON_WM_SIZE()) 消息处理程序中处理相同的调整大小(使用某种 BOOL 成员来跟踪子窗口的状态)。

OnSize() 在调整对话框大小时重复调用。

例子:

// .h
BOOL m_bIsEditMode;

// .cpp
// keep track of m_bIsEditMode

void CMyDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);

if (m_bIsEditMode) {

//enlarge the editor to take up the full dialog
m_wHtmlEditor.MoveWindow (0, 0, cx, cy);
}
}

关于c++ - MFC:如何防止子 CWnd 对话框在调整父窗口大小时跳转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34907532/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com