gpt4 book ai didi

c++ - 设置 MFC 对话框的位置

转载 作者:行者123 更新时间:2023-11-30 02:36:58 28 4
gpt4 key购买 nike

我需要将 MFC Dialog 的位置设置为其父对话框的某个相对位置(右上角)。我正在使用以下代码:

MainFrame.h:

/*Creation of Dialog*/
SearchCommands* searchDialog;

主框架.cpp:

/*In Constructor*/
searchDialog = new SearchCommands();

/*In an Init Method*/
if (!searchDialog->Create(IDD_COMMANDS_SEARCH, this))
{
TRACE0("Failed to create Search Dialog\n");
delete searchDialog;
}

/*Button Click Event*/
void CMainFrame::OnSearchButton()
{
/*Get the ordinates of parent*/
RECT rect;
CWnd::GetWindowRect(&rect);

/*searchDialog is the pointer to a dynamically created Dialog*/
searchDialog->SetWindowPos(&CWnd::wndNoTopMost,rect.left,rect.bottom,rect.left,rect.bottom,SWP_SHOWWINDOW );

searchDialog->ShowWindow(SW_SHOWNORMAL);
}

但是对话框没有正确显示而是消失了。我不明白应该如何将参数传递给 CWnd::SetWindowPos方法 所以可能是我在那里做错了什么。

任何指导将不胜感激。

最佳答案

如果窗口是子窗口,则需要将相对坐标传递给SetWindowPosGetWindowRect 返回屏幕(绝对)坐标。对于您的场景,您不能将这些传递给 SetWindowPos。在父级上使用 GetClientRect 并将此矩形传递给 SetWindowPos

RECT rect;
CWnd::GetClientRect(&rect); // Only line changed
searchDialog->SetWindowPos(&CWnd::wndNoTopMost,rect.left,rect.bottom,rect.left,rect.bottom,SWP_SHOWWINDOW );

关于c++ - 设置 MFC 对话框的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32202579/

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