vc++ mfc改变窗口非客户区大小
时间: 2023-07-31 09:00:27 浏览: 209
MFC控件大小随窗口变化
5星 · 资源好评率100%
在VC MFC中,要改变窗口的非客户区大小,可以通过以下步骤实现:
1. 首先,在窗口类中添加一个用于表示非客户区大小的变量,例如m_nFrameSize。
2. 在窗口的OnCreate函数中,获取系统默认的边框大小,并将其存储在m_nFrameSize中。可以使用调用函数AfxGetApp()->GetSystemMetrics(SM_CXSIZEFRAME)和AfxGetApp()->GetSystemMetrics(SM_CYSIZEFRAME)来获取默认的边框宽度。
3. 在窗口的OnNcCalcSize函数中,根据m_nFrameSize的值,重新计算非客户区的大小。可以使用NCCALCSIZE_PARAMS结构体的rgrc[0]成员来设置非客户区的新大小。
4. 如果需要自定义非客户区绘制,可以在窗口的OnNcPaint函数中进行操作。通过调用函数AfxGetApp()->OnDrawBorder()来绘制边框,然后在返回前调用默认的非客户区绘制函数。
5. 还可以通过处理WM_NCHITTEST消息来更改窗口的边框效果。在窗口的OnNcHitTest函数中,根据鼠标的位置和窗口边界的位置,返回相应的窗口边界代码。
这样,通过以上步骤,我们可以在VC MFC中实现改变窗口的非客户区大小的功能。
阅读全文