请教:如何使窗体控件随窗体最大化而变化

qxw89 2007-07-30 11:48:58
各位好,想请教:在Dialog上放了些控件,开机时,想让Dialog最大化,并且让Dialog上的控件也相应地跟着变化。Dialog上的控件如,按键,list等。应该怎样实现?能给个例子。谢谢!
...全文
443 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wb186 2008-12-02
  • 打赏
  • 举报
回复
可以设置控件的dock属性,呵呵。就可以随着窗体的变化而变化了。可以设置成left 、right、fill等等
向立天 2007-08-02
  • 打赏
  • 举报
回复
我刚写了一篇博客论述这个问题,
并且做了个实例,
有兴趣的话去看看吧。
http://blog.csdn.net/xianglitian/archive/2007/08/02/1722448.aspx
abzhang2 2007-08-02
  • 打赏
  • 举报
回复
void CXXView::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy);
// TODO: 在此处添加消息处理程序代码
CRect rect;
GetClientRect(&rect);
if(this->GetDlgItem(IDC_BUTTON_H)->GetSafeHwnd())
this->GetDlgItem(IDC_BUTTON_H)->MoveWindow(0, rect.Height()-20, rect.Width()-20, 20);
……

}
miaoshengwu 2007-07-30
  • 打赏
  • 举报
回复
定义全局变量
BOOL m_initialize;
构造函数里初始化为FALSE,
OnInitDialog里初始化为TRUE,

OnSize里
if(!m_initialize)
return;
CRect rcWin,rcClient;

GetWindowRect(&rcWin);
GetClientRect(&rcClient);
DWORD x=rcClient.left+10;
DWORD y=rcClient.top+60;

//STATE
GetDlgItem(IDC_EDIT1)->MoveWindow(x,y,rcClient.Width()/2,rcClient.Height()/4,TRUE);
GetDlgItem(IDC_BUTTON1)->MoveWindow(rcClient.left, rcClient.top, rcClient.Width()/4, rcClient.Height()/8,TRUE);
livedeal 2007-07-30
  • 打赏
  • 举报
回复
在onsize里,movewindow
appleboyecho 2007-07-30
  • 打赏
  • 举报
回复
是可以实现的,楼主先检查一下获得的指针对不对,有没有值。
qxw89 2007-07-30
  • 打赏
  • 举报
回复
谢谢你!我刚才Dialog::ShowWindow(SW_SHOWMAXIMIZED);在Dialog的init中能实现Dialog的max,但在上面的list size没有跟着变大。list怎没有Onsize,按你说的应在OnSize去实现list的变化。在Dialog中的OnSize能实现对list的movewindow吗?
windboyzsj 2007-07-30
  • 打赏
  • 举报
回复
学习学习
还是要自己控制位置

15,979

社区成员

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

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