利用VB控制窗口显示风格

2016-02-19 18:53 31 1 收藏

每个人都希望每天都是开心的,不要因为一些琐事扰乱了心情还,闲暇的时间怎么打发,关注图老师可以让你学习更多的好东西,下面为大家推荐利用VB控制窗口显示风格,赶紧看过来吧!

【 tulaoshi.com - 编程语言 】

软件界面生动与否很大程度上决定于你对窗口的设计和控制。事实上,Windows程序员可以对系统中的任何窗口进行操纵,它意味着,Windows程序员可以直接操纵任何正在运行的应用窗口;可以发现一个特定的应用是否在运行,如果该应用没有运行还可以启动它;可以重新排列屏幕上的所有窗口;还可以使其他应用的窗口最大化或最小化。下面我们探讨一种十分有意义的应用。
  我们很希望在程序激活其它窗口时仍使得封面窗口处于前台,也就是说该窗口具有“总在最前面”(“AlwaysOnTop”)这一特性。其实Microsoft系列软件都是这样做的,当你运行Word、Excel或PowerPoint时,你会发现它们的封面窗口不随系统激活其它窗口而消
  失。
  VisualBasicForWindows3.0(以下简称VB)作为一种可视化编程软件,以其优秀的图形化界面设计风格而著称。利用它可使软件开发周期大为缩短,然而VB对WindowsDLL(动态链接库)调用的强大功能却易受不少程序员所忽略。事实上,灵活应用WindowsDLL的API(应用程序接口)才能使你开发的系统更加充满活力。正是由于VB支持DLL使得我们可以随心所欲地控制窗口显示风格,从而我们可以让系统封面总处于前台,下面说明用到的API函数。
  .SetWindowPOS
  VB定义:DeclareSubSetWindowPosLib“User”(BybalhWndasInteger,
  hWndInserAfterasInteger,ByValXasInteger,ByValYasInteger,ByVal
  cxasInteger,ByValcyasInteger,ByValwFlagsasInteger)
  
  说明:能改变窗口的位置和大小,并能修改窗口在内部窗口列表中所处的位置,
  以控制显示次序。
  参数类型/说明
  hWndInteger-需定位的窗口
  hWndInserfterInteger-窗口句柄,在窗口列表里,窗口hWnd将放在该窗口句柄的后面,它可以取以下值:
  HWND_BOTTOM:把窗口放在窗口列表的底部;
  HWND-TOP:把窗口放在Z序的顶部。Z序是窗口按层次级别显示的顺序;
  HWND_TOP(MOST):把窗口放在列表的顶部,位于所有最顶窗口之后。
  XInteger—窗口新的x坐标,如果hWnd是一个子窗口,X给出的是父窗口的客户坐标。
  YInteger—窗口新的Y坐标,如果hWnd是一个子窗口,Y给出的是父窗口的客户坐标。
  cxInteger—指定新窗口宽度。
  cyInteger—指定新窗口高度。
  wFlagsInteger—包含下列标志之一的整数:
  SWP_DRAWFRAME:围绕窗口画一个边框;
  SWP_HIDEWINDOW:隐藏该窗口;
  SWP_NOACTIVATE:不激活该窗口;
  SWP_NOMOVE:保持当前位置(X和Y被忽略);
  SWP_NOREDRAW:窗口不自动重画;
  SWP_NOSIZE:保持当前大小(cx和cy被忽略);
  SWP_NOZORDER:保持窗口列表中的当前位置(hWndInsertAfter被忽略);
  SWP_SHOWWINDOW:显示该窗口。
  注释:当一个窗口成为最顶窗口时,它所有的从属窗口也成为最顶窗口;当它成为非最顶窗口时,它全部的从属窗口和拥有窗口也成为非最顶窗口,Z序表示窗口沿着从屏幕里向外延伸的假想Z轴,从顶到底的排列次序。
  VB实现窗口拥有“AlwaysOnTop”特性:
  首先,定义全局常量及函数。
  GlobalConstHWND_TOPMOST=-1
  GlobalConstSWP_NOACTIVATE=&H10
  GlobalConstSWP_SHOWWINDOW=&H40
  DeclareSubSetWindowPosLib“User”(ByBalhWndasInteger,hWndInserAfterasInteger,ByValXasInteger,ByValYasInteger,ByValcxasInteger,ByValcyasInteger,ByVALwFlagsasInteger)主程序如下编写:
  SubMain0
  Screen.MousePointer=11'使鼠标变为漏斗状
  LoadSystemCover'装载系统封面窗体
  SetWindowPosSystemCover.hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOACTIVATEOrSWP_SHOWWINDOW'使得封面总处于最前面
  LoadInitWindow1'装载初始化窗体1
  LoadInitWindow2'装载初始化窗体2
  :
  :
  
  UnloadSystemCover'关闭系统封面窗体
  Screen.MousePointer=0'使鼠标变为缺省形状
  EndSub->

来源:https://www.tulaoshi.com/n/20160219/1619381.html

延伸阅读
在微软的很多软件(如WORD)的工具栏中,都采用一种浮动按纽,即正常情况下按纽的图标呈灰色,当鼠标移动到某一按纽时,该按纽自动向上凸起且变为彩色,并在按纽的右下方有一标签提示该按纽的功能,鼠标移开后又自动还原,这种按纽用VB实现时,方法如下: 1.先用绘图工具作出按纽图标后存盘(如1.bmp),再用图象处理软件将该图标转换为灰度...
标签: excel
Excel多窗口显示方法   1.在任何一个Windows资源管理器窗口中选择工具-文件夹选项; 2.然后选文件类型; 3.定位到XLS扩展名的文件;点下面的那个高级按钮;选中打开(0),然后点右面的编辑按钮; 4.修改第二项用于执行操作的应用程序,缺省的是"C:Program FilesMicrosoft OfficeOFFICE11EXCEL.EXE" /e,...
标签: 电脑入门
有的MAC用户喜欢打开Finder时,文件默认按图标方式排列,那么,该怎么解决这个问题呢? 解决方法: 命令行: defaults write com.apple.Finder FXPreferredViewStyle ooxx 将命令最后的ooxx替换为以下单词: Nlsv – List icnv – Icon clmv – Column Flwv – Cover Flow 这样就搞定咯,比如想要默认为列表...
  <style @media print{ INPUT {display:none} } </style <TABLE border="0" style="font-size:9pt;" width="300px" align="center" <THEAD style="display:table-header-group;font-weight:bold" <TR<TD colspan="2" align="center" style="font-weight:bold;border:3px double red"每页都有的表头</TD</TR <...
'*ModuleName:Start_Module '*ModuleFilename:Start.bas '********************************************************* '*Comments:Show/Hidethestartbutton '******************************************************** PrivateDeclareFunctionFindWindowLib"user32"Alias"FindWindowA"(ByVallpClassN...

经验教程

607

收藏

88
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部