美文网首页
OnSize中等比例缩放控件大小

OnSize中等比例缩放控件大小

作者: 冰冰凉3 | 来源:发表于2024-04-21 15:44 被阅读0次

在OnInitDialog中初始化OldPoint

    CRect rect;
    GetClientRect(&rect);
    oldPiont.x = rect.right - rect.left;
    oldPiont.y = rect.bottom - rect.top;

在Onsize中更改比例

    //等比例缩放所有的元素
    float fsp[2];
    POINT newPoint;//当前对话框的高度和宽度
    CRect newRect;//当前对话框大小
    GetClientRect(&newRect);
    newPoint.x = newRect.right - newRect.left;
    newPoint.y = newRect.bottom - newRect.top;
    fsp[0] = (float)newPoint.x / oldPiont.x;
    fsp[1] = (float)newPoint.y / oldPiont.y;

    int woc;
    CRect rect;
    CPoint oldTLPoint, newTLPoint;//左上角
    CPoint oldBRPoint, newBRPoint;//右下角
//列出所有的子空间
HWND hwndChild = ::GetWindow(m_hWnd, GW_CHILD);
while (hwndChild) {
    woc = ::GetDlgCtrlID(hwndChild);//取得ID
    GetDlgItem(woc)->GetWindowRect(rect);
    ScreenToClient(rect);

    oldTLPoint = rect.TopLeft();
    newTLPoint.x = long(oldTLPoint.x * fsp[0]);
    newTLPoint.y = long(oldTLPoint.y * fsp[1]);
    oldBRPoint = rect.BottomRight();
    newBRPoint.x = long(oldBRPoint.x * fsp[0]);
    newBRPoint.y = long(oldBRPoint.y * fsp[1]);

    rect.SetRect(newTLPoint, newBRPoint);
    GetDlgItem(woc)->MoveWindow(rect, TRUE);
    hwndChild = ::GetWindow(hwndChild, GW_HWNDNEXT);
}
oldPiont = newPoint;
return;

相关文章

网友评论

      本文标题:OnSize中等比例缩放控件大小

      本文链接:https://www.haomeiwen.com/subject/gkyvxjtx.html