MFC按客户区大小获取合适的主窗口大小
2017-05-01 14:36
197 查看
使用GetClientRect与GetWindowRect
计算水平、垂直非客户区大小使用GetWindowRect获取主窗口的大小, 再通过GetClientRect获取客户端大小,然后通过这两个值计算出水平、垂直非客户区占的大小
计算主窗口大小
由上一步计算得到的非客户区大小加大期望的客户区大小,即为主窗口的大小
以下是设置非客户区大小为500*300的例子:
CRect clientRect; CRect windowRect; GetClientRect( clientRect ); GetWindowRect( windowRect ); int cxNoClient = windowRect.Width() - clientRect.Width(); int cyNoClient = windowRect.Height() - clientRect.Height(); int cxWindow2 = 500 + cxNoClient; int cyWindow2 = 300 + cyNoClient; SetWindowPos( NULL, 0,0, cxWindow2, cyWindow2, SWP_NOMOVE );
使用API函数AdjustWindowRect/AdjustWindowRectEx
此API函数根据指定的非客户区大小、是否有菜单、窗口样式去自动计算出窗口所占大小,挺方便的。具体的还是移步到MSDN上去查看相关说明,这里仅举个例子(例子是在主窗口的OnCreate函数中编写,直接引用lpCreateStruct中的变量值):CRect tmpRect( 0, 0, 500, 300 ); AdjustWindowRectEx( tmpRect, lpCreateStruct->style, TRUE, lpCreateStruct->dwExStyle ); int cxWindow1 = tmpRect.Width(); int cyWindow1 = tmpRect.Height(); SetWindowPos( NULL, 0,0, cxWindow1, cyWindow1, SWP_NOMOVE );
相关文章推荐
- 在MFC的MDI程序中设置子窗口客户区大小
- MFC获取窗口和客户区坐标分析
- MFC获取窗口大小
- VC MFC 获取屏幕大小 程序窗口大小位置 控件大小位置
- [MFC] MFC 获取指定窗口截图(大小可调)
- MFC窗口位置和大小的获取
- mfc中获取当前窗口大小的方法
- MFC窗口位置和大小的获取
- MFC 获取屏幕客户区(及显示器大小)
- MFC窗口最大化&移动窗口位置&获取控件句柄,设置控件大小
- 问一个获取主框架客户区大小的问题 - VC/MFC / 界面
- javascript 获取窗口大小 Ajax__
- 在MFC中获取窗口句柄
- 关于获取各种浏览器可见窗口大小的一点点研究
- MFC中设置窗口大小位置
- 如何调整窗口以适应客户区大小
- JS获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度
- VC(MFC)设定客户区(视图)的大小
- javascript 获取窗口大小
- JS获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度