对话框窗口最大最小化

在MFC中,对于基于对话框的窗口,设置最大最小化属性后,控件不会随窗体大小改变而调整。通过响应WM_SIZE消息,添加OnSize函数和ChangeSize函数可以解决这个问题。调整控件顺序避免了最大化时的闪烁问题,但可能会导致闪屏现象。本文探讨了这一解决方案及其潜在问题。
摘要由CSDN通过智能技术生成

mfc里,基于对话框的窗口,具有最大最小化的属性设置。在Border属性里选择Resizing,然后在Maximize和Minimize中选择true。在窗体当中随便拖几个控件,然后运行,此时点击最大化会发现,整个窗体的大小是变大了,但是有效区域并不会改变大小,也就是控件的大小任然不变。那么如何调整对话框中的各个控件,随窗体的大小改变而改变呢?mfc里面有一个消息WM_SIZE,这个消息能响应窗体大小改变事件。具体如何操作?

选择类向导,搜索消息WM_SIZE,添加相应的事件处理函数void CMyDlg::OnSize(UINT nType, int cx, int cy),真正改变控件大小的函数并不是此函数,它还需要配合void CMyDlg::ChangeSize(CWnd *pWnd, int cx, int cy,bool tf) 才能进行处理。具体代码如下:

void CMyDlg::OnSize(UINT nType, int cx, int cy)
{
    CDialogEx::OnSize(nType, cx, cy);

    // TODO: 在此处添加消息处理程序代码
    if(nType==1) return;//最小化则什么都不做  
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值