如何实现控件随对话框大小变化而自动调整大小和位置

http://wenku.baidu.com/link?url=M0RYOPqeaKx4Wh0fZFUWpU-WAeqJY1LB7opHz9t0WAjBDHAYZJyleL_IS8ctLMnVW7k33rNwphHRe0UMV4OiiYCCkjqzMvJK0Zp2MB24ngy



如何实现控件随对话框大小变化而自动调整大小和位置

 

VC++

 2009-12-28 20:27:42 

阅读

461 

评论

0

  

字号:

 

订阅

 

1. 

处理对话框的

WM_SIZE

然后用

MoveWindow

或者

SetWindowPos

来把对话框上面的

控件重新调整新位置和大小。

 

2. 

基本的做法就是响应

WM_SIZE

消息,并按照窗口大小比例来调整控件的位置和大小,

控件的大小最好设置成窗口的百分之几,这样的话,就可以根据窗口的大小随时调整了

 

3. 

每次

OnSize 

即可获得一个

CRect

然后根据这个

CRect

来确定这些控件的位置和大小,

使用函数

MoveWindow 

SetWindowpos

实现。

 

4. 

1

通过下面两个函数获取的是显示屏幕的大小

【屏幕的分辨率】

(不包括任务栏等区域)

 

  int 

  

nFullWidth=GetSystemMetrics( 

SM_CXFULLSCREEN

 );   

//

屏幕宽度

 

   

  

int 

  

nFullHeight=GetSystemMetrics( 

SM_CYFULLSCREEN

 );  //

屏幕高度

 

2

)这两个函数获取的是真正屏幕的大小【屏幕的分辨率】(包括任务栏等区域):

 

  

int   

cx   

=   

GetSystemMetrics( SM_CXSCREEN );    

  

int   

cy   

=   

GetSystemMetrics( SM_CYSCREEN ); 

如:用前两个函数获取的大小可能是

1024*687 

,而用下边两个获取的就是

1024*768

 

5. 

OnSize() 

中调用:

 

GetClientRect()  

  

GetWindowRect() 

函数可获取窗口大小,

但需注意得到的是设备坐标,如果需要画图什么的还需要转换成逻辑坐标。

 

6. 

字体大小随窗口变化而自动变化,比如说始终使字的高度始终占窗口的

1/3

。使用:

 

   

1). 

Creat

中将

nHeight

设成窗口长度或者宽度的一定比值就行了

(最好在

onsize

函数

中设置);

 

   

2). 

使用

 

WM_FONTCHANGE 

消息。

 

*****************************************************************************************************

************************************** 

转载自:

http://topic.csdn.net/u/20090314/16/835a3bbb-2d13-4842-922a-8a07cde1a055.html 

(作

者:

Fireway2008

 

总结步骤:

 

1.

创建一个

CWnd*   

的数组,在初始化时取的各个控件的句柄,存在这个数组里面

    

2.

处理

WM_SIZE

事件,可以得到新变化后的窗口和最初窗口的变化比例

kx,ky    

3.

对数组中的每一个控件,计算新位置

    

4.MoveWindow

移动到新位置


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值