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