设置窗口客户区大小的方法
来源:互联网 发布:北京110网络报警平台 编辑:程序博客网 时间:2024/06/10 06:52
转载自:http://www.cnblogs.com/nbsofer/archive/2013/03/21/2974593.html
话说, Windows SDK貌似并没有提供设置一个窗口的客户区大小的API.
SetWindowPos,MoveWindow 它们都只能设置整个窗口的大小, 如果不采取点其它的
方法, 是不能直接设置客户区的大小的. 设置客户区的大小用处不是很多, 但有
时候会用到, 比如在客户区上进行文字输出计算的时候.
Windows的窗口由几个部分组成, 这包括了客户,非客户区, GetWindowRect可以
取得整个窗口的大小,GetClientRect可以用来取得客户的大小. 重要的是要知道非
客户区的大小, 我记得可以通过GetSystemMetrics来获得, 但相对于我下面的方法来
说都要复杂. 下面说说我的办法:
0) 变量定义
RECT rcWindow; -> 整个窗口的大小
RECT rcClient; -> 客户区大小
int borderWidth,borderHeight; ->非客户大小
1) 通过 GetWindowRect 取得整个窗口的大小
GetWindowRect(hWnd,&rcWindow);
2) 通过 GetClientRect 取得客户矩形的大小
GetClientRect(hWnd,&rcClient);
3) 由以上两者相减得到非客户的大小
borderWidth = (rcWindow.right-rcWindow.left)
-(rcClient.right-rcClient.left);
borderHeight = (rcWindow.bottom-rcWindow.top)
-(rcClient.bottom-rcClient.top);
4) 使用 SetWindowPos/MoveWindow 重新设置窗口大小
SetWindowPos(hWnd,0,0,0,,boderWidth+新客户区宽度,
boderHeight+新客户区高度,SWP_NOMOVE|SWP_NOZORDER);
结语:
这个办法巧妙地避开了调用系统函数来计算非客户的大小,
况且,在调用之前还要知道非客户的组成, 这太复杂了, 反正我
是不清楚的.
- 设置窗口客户区大小的方法
- 设置窗口的客户区大小和位置
- 设置窗口客户区大小的一种办法
- 设置窗口客户区大小的一种办法
- 在MFC的MDI程序中设置子窗口客户区大小
- 如何动态设置客户区的大小?
- 创建客户区域固定大小的窗口
- 客户区的大小
- MFC按客户区大小获取合适的主窗口大小
- 【DirecX 教程】Lesson 4: 窗口大小和客户区大小
- 根据客户区大小反推窗口大小
- Lesson 4: 窗口大小和客户区大小
- 最大化窗口的大小设置
- 设置Dialog窗口的大小
- 设置 AlertDialog窗口的大小
- 设置窗口点击客户区移动
- 如何包装窗口的部分非客户区并控制其大小
- 如何包装窗口的部分非客户区并控制其大小
- 关于数组
- course3 二分
- UVA-442数据结构调用栈,注意括号的处理
- android canvas drawText \r\n 换行
- 学生信息管理系统 输入和输出 链表
- 设置窗口客户区大小的方法
- java 大数运算 BinInteger
- android 禁止横竖屏切换时activity重新启动
- 对ExecuteNonQuery,ExecuteScalar,DataSet 进行封装(params可变参数的用法)Sqlparameter
- ubuntu 下串口调试安装(gtkterm)
- 【c++系列】typeid操作符(判断类型是否相同)
- Back to Underworld
- Tplink 上网设置
- hdu4288 线段树+离线化+离散化