浪迹天涯11 2014-11-12 01:45 采纳率: 0%
浏览 796

拖动父对话框时如何让子对话框也跟着缩放

编写了一个基于对话框的程序,在主对话框下面创建一个子对话框,child类型的,没有标题栏和对话框,请问如何实现拖动父对话框时子对话框也跟随发生变化

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-03-28 14:13
    关注

    该回答引用ChatGPT-3.5

    在 MFC 中,可以重载父对话框的 OnSize() 函数来响应对话框大小的更改,并根据父对话框的大小调整子对话框的位置和大小。


    具体来说,可以在父对话框的 OnSize() 函数中调用 SetWindowPos() 函数来移动和调整子对话框的大小。以下是一个示例代码:

    void CMyParentDlg::OnSize(UINT nType, int cx, int cy)
    {
        CDialogEx::OnSize(nType, cx, cy);
    
        if (m_pChildDlg != NULL && ::IsWindow(m_pChildDlg->GetSafeHwnd()))
        {
            CRect rect;
            GetClientRect(rect);
            rect.DeflateRect(10, 10); // 调整子对话框的边距
    
            m_pChildDlg->SetWindowPos(NULL, rect.left, rect.top, rect.Width(), rect.Height(), SWP_NOZORDER);
        }
    }
    

    在上面的示例代码中,m_pChildDlg 是指向子对话框的指针,GetClientRect() 函数用于获取父对话框的客户区矩形,DeflateRect() 函数用于调整客户区矩形的边距,SetWindowPos() 函数用于移动和调整子对话框的大小。


    请注意,在调用 SetWindowPos() 函数时,第一个参数为 NULL,表示不改变子对话框的 Z 顺序,即不将子对话框移动到顶层。如果需要将子对话框移动到顶层,可以将该参数设置为 &CWnd::wndTop。


    希望能对您有所帮助!

    评论

报告相同问题?

悬赏问题

  • ¥15 MATLAB动图的问题
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名