浪迹天涯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 为什么我按照电路图做出的仿真和实物都不能使用
  • ¥15 mars2d在vue3中的引入问题
  • ¥50 h5唤醒支付宝并跳转至向小荷包转账界面
  • ¥15 算法题:数的划分,用记忆化DFS做WA求调
  • ¥15 chatglm-6b应用到django项目中,模型加载失败
  • ¥15 CreateBitmapFromWicBitmap内存释放问题。
  • ¥30 win c++ socket
  • ¥15 C# datagridview 栏位进度
  • ¥15 vue3页面el-table页面数据过多
  • ¥100 vue3中融入gRPC-web