美文网首页
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