OnSize函数处理窗口尺寸变化时的问题

MFC小记

现在需要随着窗口的尺寸变化来调整控件的位置,保证控件始终贴合窗口的四个角。但是在编写完OnSize消息处理函数后,程序执行过程中会报错,提示不适合的参数。通过调试发现问题出现在Onsize函数中调用GetDlgItem()获取子控件的窗口指针这个地方。

经过百度搜索了解到OnSize在窗口启动过程中,会多次被调用。如果在启动过程中调用GetDlgItem()获取子控件的窗口指针,就会出现错误。因此,这里需要采取一些措施来避免自己编写的部分在窗口启动过程中被调用。

网上有最简单的方式,就是设置一个全局变量,初始化时设置为FALSE,在OnInitialUpdate()或者OnInitDialog()后将其设置为TRUE,在OnSize函数里使用GetDlgItem()获取子控件窗口指针前先检测该变量。

我根据自己代码的特点,选择了在OnSize函数中检查成员变量是否初始化,这个成员变量在OnInitDialog()中进行了初始化操作。

这是一个CArray对象,初始化时,添加了控件对象的指针

窗口启动后,m_arrCtrl中添加了几个值,数组长度便不为0了,由此可以判断是否启动窗口。


已发布

分类

来自

标签:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理