• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

用按钮调整工作区的大小

发布: 2007-7-01 20:40 | 作者: admin | 来源: | 查看: 11次 | 进入软件测试论坛讨论

领测软件测试网

用按钮调整工作区的大小

作者:风林

现在很多软件都采用按钮调整工作区大小,使用起来十分方便,这里我自己设计了一个,与大家共享。

实现这个功能的核心是调节控件的位置和大小,这里我采用了CWnd类的SetWindowPos()函数,使用该函数之前必须先获得控件的指针,我使用GetDlgItem()来做到这一点。两个函数的原型如下:

CWnd* GetDlgItem(int nID)const;
返回值:指向给定控件或子窗口的指针;
参数:nID为控件或子窗口的ID值。

BOOL SetWindowPos(const CWnd* pWndInsertAfter,int x,int y,int cx,int cy,UINT nFlags);
功能:改变窗口的大小、位置和Z次序;
参数:
第一个参数我不会用,一般设为NULL;
x、y:窗口新位置;cx、cy:窗口新宽度和高度;
nFlags常用取值:
SWP_NOZORDER:忽略第一个参数;
SWP_NOMOVE:忽略x、y,维持位置不变;
SWP_NOSIZE:忽略cx、cy,维持大小不变;

这样,当需要重新设定某控件位置时,可采用:
CWnd *pWnd;
pWnd = GetDlgItem( IDC_EDIT1 ); //获取编辑控件指针
pWnd->SetWindowPos( NULL,x,y,0,0,SWP_NOZORDER | SWP_NOSIZE ); //把控件移到窗口的(x,y)处,大小不变

当需要重新设定某控件大小时,可采用:
pWnd = GetDlgItem( IDC_EDIT1 );
pWnd->SetWindowPos( NULL,0,0,cx,cy,SWP_NOZORDER | SWP_NOMOVE ); //把控件的大小改为(cx,cy),位置不变

当采用:
pWnd = GetDlgItem( IDC_EDIT1 );
pWnd->SetWindowPos( NULL,x,y,cx,cy,SWP_NOZORDER );
则控件的大小和位置都会改变。

在示例程序中,我放置了一个编辑控件(IDC_EDIT1)作为工作区,四个按钮控件放在编辑控件四周,按钮采用了自画的CPluckButton按钮,这种控件的制作方法详见文章《自己动手做按钮》,按钮的位置是通过计算设置的,所以在放置时无需精确定位。在编辑控件周围我画了一个深颜色的圆角矩形背景把编辑控件与按钮整合在一起。当单击按钮控件时,我用上述方法调整编辑控件的大小和位置,同时调整按钮的位置并重画背景,这样工作区就得到调整。

为了使调整位置容易控制,我定义了一个CRect数组m_Rect[],存放编辑控件所有可能的位置,数组值在初始化函数OnInitDialog()中计算出来,这样,当单击按钮时,只需给出新位置的下标,再重绘对话框即可。完整代码详见我提供的示例程序。

 


文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网