对话框的大小如何改变?

stevenuserregister 2010-04-14 06:30:12
有一个对话框程序,大小为300*300,运行时点“最大化”按钮,界面变成全屛,但原先的内容全部放在左上角的300*300的地方,其它大部分地方为空。
我希望的是内容也占满全屏,怎样才能实现?是否对话框的一个属性没有设置好?
...全文
203 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
哈利路亚1874 2010-04-15
  • 打赏
  • 举报
回复

void CNetTestDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);

// TODO: Add your message handler code here
CRect rect,rectstatic;
CWnd *pWnd,*pWndStatic;

pWndStatic = GetDlgItem(IDC_STATIC_IP);
pWnd = GetDlgItem(IDC_IPADDRESS1);
if(pWnd && pWndStatic)
{
pWnd->GetWindowRect(&rect); //得到原窗口的大小
pWndStatic->GetWindowRect(&rectstatic);
ScreenToClient(&rect);
ScreenToClient(&rectstatic); //将控件大小转换为在对话框中的区域坐标

rect.left = rect.left * cx / m_rect.Width(); //cx / m_rect.Width()为横向变化比例
rect.right = rect.right * cx / m_rect.Width();
rect.bottom = rect.bottom * cy / m_rect.Height(); //cy / m_rect.Height()为纵向变化比例
rect.top = rect.top * cy / m_rect.Height();

rectstatic.left = rectstatic.left * cx / m_rect.Width();
rectstatic.right = rectstatic.right * cx / m_rect.Width();
rectstatic.bottom = rectstatic.bottom * cy / m_rect.Height();
rectstatic.top = rectstatic.top * cy / m_rect.Height();

pWnd->MoveWindow(rect);
pWndStatic->MoveWindow(rectstatic);
}
GetClientRect(&m_rect);//将变化后的对话框大小设为旧大小
}

借给你参照一下
  • 打赏
  • 举报
回复
www.codeproject.com上有一个ResizabldeDlg不错
mngzilin 2010-04-14
  • 打赏
  • 举报
回复
SetWindowPos或者MoveWindow
waitlife 2010-04-14
  • 打赏
  • 举报
回复
bcg库的CBCGPResizeDialog就不错
hzy694358 2010-04-14
  • 打赏
  • 举报
回复
Onsize消息函数里处理
根据整个对话框的大小MoveWindow来重新设置控件的位置
Eleven 2010-04-14
  • 打赏
  • 举报
回复
同上。。。
哈利路亚1874 2010-04-14
  • 打赏
  • 举报
回复
只能自己调整了…………
wltg2001 2010-04-14
  • 打赏
  • 举报
回复
处理对话框的OnSize,在里面对每一个控件用MoveWindow调整控件的位置和大小
feilongjilei 2010-04-14
  • 打赏
  • 举报
回复
你绘制内容时不要使用绝对坐标,用相对客户区的坐标··
jamseyang 2010-04-14
  • 打赏
  • 举报
回复
没有可以设置的属性,要自己动态调整大小。
以前看到网上有人写的AutoSize的类还可以

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧