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

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

设计“总在上现”的窗口

发布: 2007-7-04 20:47 | 作者: admin | 来源:  网友评论 | 查看: 29次 | 进入软件测试论坛讨论

领测软件测试网 旷 强

  什么是“总在上面”呢?就是这个窗口总是停留在其他窗口的上面。那么,这个TopMost窗口怎样设计呢?请看下面的“招儿”:

  这个“总在上面”的窗口的实现需要用到一个API函数——SetWindowPos。这个函数的格式如下:

  Function SetWindowPos Lib ″user32″(ByVal hWnd As Long,ByVal hWndInsertAfter As Long,ByVal x As Long,ByVal y As Long ,ByVal cx As Long,ByVal cy As Long,ByVal wFlags As Long)As Long

  函数的参数意义如下:

  hWnd——所处理窗口的句柄。

  hWndInsertAfter——窗口的句柄,它将在Z轴顺序上先于该窗口。这个变量可以赋以下值中的一种,从而成为窗口的句柄:HWND—BOTTOM(=1,将窗口放置在Z轴顺序的底端)、HWND——TOP(=0,将窗口放置在Z轴顺序的顶端)、HWND—TOPMOST(=-1,将窗口放置在所有非首页窗口的上面)或者HWND—NOTOPMOST(=2,对在所有非首页窗口的顶端窗口重新定位)。

  x——规定窗口左边的新位置。

  y——规定窗口上边的新位置。

  cx——规定窗口的新宽度。

  cy——规定窗口的新高度。

  wFlags——规定大小和定位选择,如表所示。

  接下来我们该看一个例子。

  先设置一个200×200像素的窗口,然后声名API函数SetWindowPos:

  Declare Function SetWindowPos Lib ″user32″ Alias ″SetWindowPos″ (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

  并定义各个常量的值,如下:

  const SWP—SHOWWINDOW=&H40

  const SWP—DRAWFRAME=&H20

  const HWND—TOPMOST=-1

  然后,在Form—Load子程序中填写如下代码就可以使其成为首页了:

  Sub Form—Load()

  retval=SetWindowPos(Form1.hwnd, HWND—TOPMOST, 100, 100, 100, 100, SWP—DRAWFRAME Or SWP—SHOWWINDOW)

  End Sub

  到此为止,我们已经完成了这个TopMost的所有工作,它现在已经可以保持在其他窗口之上了。试试看?

常   量 含    义 swp_noredraw=&h8 不重绘变化,如果设置该标志则对任何出现的变化都不在重绘 swp_drawframe=&h20 围绕窗口绘制一帧 swp_framechanged=&h20 给窗口发送一wn_nccalcsize信息,使窗口的大小不再调整。如果该标志不加以限定,wn_nccalcsize信息只有在窗口的大小变化时才发送。 swp_hidewindow=&h80 隐藏窗口 swp_noactivate=&h10 不能活动的窗口 swp_nocopybits=&h100 丢弃客户区的所有内容 swp_nomove=&h2 保持当前的位置 swp_noownerzorder=&h200 窗口在z轴的位置不变 swp_noreposition=swp_noownerzorder 与swp_noownerzorder一样 swp_nosize=&h1 保持当前的尺寸,忽略变量cx和cy swp_nozorder=&h4 保持当前的顺序,忽略hwndinsertafter swp_showwindow=&h40 显示窗口

 

延伸阅读

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


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

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