在我的父类中,我有一个按钮触发并执行DoModal
以显示对话框的函数:
void ParentClass::OnBtnPRess()
{
ChildClass dialg;
dialg.DoModal();
}
在我的ChildClass
中,我以编程方式创建了对话框的自定义宽度和高度,并在SetWindowPos
中进行了设置,但是我不想计算自定义x
并y
位置。
相反,我想从调用rect
并将其传递给DoModal
时创建的子对话框中获取SetWindowPos
的尺寸:
BOOL SetWindowPos(
HWND hWndInsertAfter,
int X,
int Y,
int cx,
int cy,
UINT uFlags
);
我试图做的是从GetWindowRect
调用BOOL ChildClass::OnInitDialog()
来查看我是否可以获得正确的rect
位置,但是将其与使用 Spy ++的值进行比较,它们关闭了。
如何从DoModal
调用中获取尺寸并将其用于我的ChildClass
?
谢谢!
例如,如果我仅单独依靠DoModal
来设置对话框的尺寸,而根本不调用SetWindowPos
,那么我会从 Spy ++ 获得以下内容:
但是,如果我尝试使用DoModal
从GetWindowRect
获取尺寸,然后使用返回到SetWindowPos
的值,则会得到以下信息:
x
位置已关闭。我想要的是调用x
产生的DoModal
个职位。如建议的那样,我在ScreenToClient
之后调用了ClientToScreen
和GetWindowRect
,但是x
的位置也关闭了。
更新:根据要求,OnInitDialog
中的代码如下:
BOOL ChildClass::OnInitDialog()
{
CDialog::OnInitDialog();
RECT rect;
GetWindowRect(&rect);
int width;
int height;
// Code for calculating width and height
SetWindowPos(&wndTop, rect.left, rect.top, width, height, SWP_SHOWWINDOW);
return TRUE;
}