我已经在C++ Windows应用程序(使用ATL lib)中创建了一个对话框,并在其上设置了三个按钮。该按钮照常位于对话框底部。我想通过调整对话框的大小来保持按钮在其底部的位置。换句话说,它们应与对话框的底部边距和上侧(右侧或左侧)保持恒定(较低)的距离。为实现此目的,我尝试在更改对话框大小的同时相应地移动按钮。我使用以下代码(仅使用“确定”按钮作为示例),但是唯一的结果是按钮在调整大小时消失了。我应该如何修改代码以使按钮与对话框的底部和右侧保持距离?

LRESULT RenameFolderDlg::OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
RECT r;
GetWindowRect(&r);

CWindow okB(GetDlgItem(IDOK));
RECT okR;
okB.GetWindowRect(&okR);

okB.MoveWindow( r.right - 80 , r.bottom - 40, okR.right - okR.left, okR.bottom -     okR.top, 1);

return 0;
}

最佳答案

代替

GetWindowRect(&r);

你应该使用
GetClientRect(&r);

因为GetWindowRect返回的坐标是相对于屏幕的左上角的,而调用子控件的MoveWindow则期望它们是相对于父窗口的客户区的左上角的。

关于c++ - 调整对话框大小时 move 对话框上的按钮,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11667264/

10-11 22:37
查看更多