admin管理员组文章数量:1531714
2024年6月10日发(作者:)
对话框的大小变化后,假若对话框上的控件大小不变化,看起来会比较难看。下面就
介绍怎么让对话框上的控件随着对话框的大小的变化自动调整。
首先明确的是Windows有一个WM_SIZE消息响应函数,这个函数在对话框大小发
生变化的时候调用,所以我们可以记录下原来对话框的大小,还有当前对话框的大小(这
个不用自己算,系统已给出),然后根据控件做出相应比例的调整。
比如原来对话框大小为a,现在为b,原来控件大小为c,那么现在的控件大小应该为
c*b/a;(注意a不能为0)。
看实例:(黑体字为添加的代码!!)
假设对话框类为CMyDlg类,那么首先设置一个变量
CRect m_rect; //用于保存原对话框大小
那么在对话框创建的时候先获得对话框的大小
BOOL CMyDlg::OnInitDialog()
{
.........................
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
GetClientRect(&m_rect); //获取对话框的大小
return TRUE; // return TRUE unless you set the focus to a control
}
然后再手动添加一个函数,用以实现具体的变化
void CMyDlg::ChangeSize(UINT nID, int x, int y) //nID为控件ID,x,y分别为对
话框的当前长和宽
{
CWnd *pWnd;
pWnd=GetDlgItem(nID);
if(pWnd!=NULL) //判断是否为空,因为在窗口创建的时候也会调用OnSize
函数,但是此时各个控件还没有创建,Pwnd为空
{
版权声明:本文标题:MFC 调整窗口大小 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1718032322a636383.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论