用VB制作TopMost类型窗口

作者:佚名来源:网络点击:
TopMost这个词也许你很陌生,但具有TopMost窗口的软件你应该早就接触过,如Office97、网络吸血鬼、IE等。所谓TopMost窗口是指哪些始终出现在桌面的最前方且不会被其它窗口覆盖的窗口,如网络吸血鬼中的下载图标。
一般憎况下,在运行VB程序时,窗口总有可能会被其它程序的窗口所覆盖。如何在自己的应用程序中实现TopMost类型的窗口呢?我们可以通过调用WindowsAPI函数SetWindowPos来实现。
一、SetWindowPos函数介绍
SetWindowPos函数功能是将一个窗口在三维空间中移动,利用它,你可以改变一个窗口的位置,甚至可以在Z轴上改变(Z轴决定了一个窗口和其它窗口的前后关系),你还可以改变窗口的尺寸。为了实现TopMost类型的窗口,我们只需调用该函数,将窗口放在所有窗口的前面并永远保持在最前面即可。要想在VB中使用SetWindowPos函数,必须在程序的代码模块中进行如下的函数声明:
DeclareFunctionSetwindowPosLib"user32.dll"(ByValhwndAsLong,ByValhWndInsertAfterAsLong,ByValxAsLong,ByValyAsLong,ByValcxAsLong,ByValcyAsLong,ByValwFlagsasLong)AsLong
SetWindowPos函数各个参数的含义见表1。表1SetWindowPos函数的参数解释

-align="middle"width="182">参数名->-align="middle"width="334">参数含义->-align="middle"width="182">hwnd->-align="middle"width="334">要移动的窗口的句柄(可以用窗体的hwnd属性)->-align="middle"width="182">hWndInsertAfter->-align="middle"width="334">关于如何在Z轴上放置窗口的标记(具体见表2)->-align="middle"width="182">x->-align="middle"width="334">相当于窗口的Left属性->-align="middle"width="182">y->-align="middle"width="334">相当于窗口的Top属性->-align="middle"width="182">cx->-align="middle"width="334">相当于窗口的Right属性->-align="middle"width="182">cy->-align="middle"width="334">相当于窗口的Bottom属性->-align="middle"width="182">wFlags->-align="middle"width="334">关于如何移动窗口的标记(具体见表3)->
表2HWndInsertAfter参数的可能取值及含义

-align="middle"width="214">hWndInsertAfter的可能取值->-align="middle"width="302">功能->-align="middle"width="214">某一窗口的句柄->-align="middle"width="302">将窗口放在该句柄指定的窗口后面->-align="middle"width="214">HWND_BOTTOM(1)->-align="middle"width="302">把窗口放在Z轴的最后,即所有窗口的后面->-align="middle"width="214">HWND_TOP(0)->-align="middle"width="302">将窗口放在Z轴的前面,即所有窗口的前面->-align="middle"width="214">HWND_TOPMOST(-1)->-align="middle"width="302">使窗口成为“TopMost”类型的窗口,这种类型
的窗口总是在其它窗口的前面,真到它被关闭->-align="middle"width="214">HWND_NOTOPMOST(-2)->-align="middle"width="302">将窗口放在所有“TopMost”类型
窗口的后面、其它类型窗口的前面->
表3wFlags参数的可能值及含义

-align="middle"width="218">wFlags参数的可能值->-align="middle"width="298">功能->-align="middle"width="218">SWP_DRAWFRAME(&H20)->-align="middle"width="298">移动窗口后重画窗口及其上的所有内容->-align="middle"width="218">SWP_HIDEWINDOW(&H80)->-align="middle"width="298">隐藏窗口,窗口隐藏后既不出现在屏幕上也不出现在任
务栏上,但它仍然处于激活状态->-align="middle"width="218">SWP_NOACTIVATE(&H10)->-align="middle"width="298">窗口移动后不激活窗口,当然,如果窗口在移动前就是
激活的则例外->-align="middle"width="218">SWP_NOCOPYBITS(&H100)->-align="middle"width="298">当窗口移动后,不重画它上面的任何内容->-align="middle"width="218">SWP_NOMOVE(&H2)->-align="middle"width="298">不移动窗口(即忽略X和Y参数)->-align="middle"width="218">SWP_NOSIZE(&H1)->-align="middle"width="298">不改变窗口尺寸(即忽略Cx和Cy参数)->-align="middle"width="218">SWP_NOREDRAW(&H8)->-align="middle"width="298">Donotremovetheimageofthewindowinitsformerposition
fromthescreen.Inotherwords,leavebehindaghostimage
ofthewindowinitsoldposition->-align="middle"width="218">SWP_NOZORDER(&H4)->-align="middle"width="298">不改变窗口听Z轴位置(即忽略hWndInsertAfter参数)->-align="middle"width="218">SWP_SHOWWINDOW(&H40)->-align="middle"width="298">显示窗口(之前必须使用过SWP_HIDEWINDOW
隐藏窗口)->

上一页 1 2 下一页
[打印] [关闭]
上一篇:在系统菜单上添加自定义菜单项
下一篇:操作过程动态显示
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 验证码: 验证码
查看所有评论
  • 相关文章
  • 广告推荐