编写了一个基于对话框的程序,在主对话框下面创建一个子对话框,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