荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: FDISK (FDISK-C), 信区: Visual
标  题: VB调用API函数技巧--重新启动Windows
发信站: BBS 荔园晨风站 (Sat Jan  1 09:08:55 2000), 转信


转自《中国计算机报》[一九九七年十月六日 总第678期] 第128版

VB调用API函数技巧--重新启动Windows

  首先,在module文件中加入下列声明语句:

  DeclareFunction ExitWindows Lib"User"(ByValdw
ReturnCodeAsLong,ByValwReservedAsInteger)AsInteger

  PublicConstEW—REBOOTSYSTEM=&H43

  PublicConstEW—RESTARTWINDOWS=&H42

  然后,在Form中加入一个CommandButton控件,在
它的Click事件中加入下列代码:

  DimRetAsInteger

  RetΚExitWindows(EW—RESTARTWINDOWS,0)
  ……

  程序运行后,只要按下该CommandButton控件,Windows系统
便会重新启动。若将上述代码改为:Ret=ExitWindows(EW—REBOOTSYSTEM,0),

则将重新启动计算机系统。


转自《中国计算机报》[一九九七年十月六日 总第678期] 第128版

VB调用API函数技巧--借用Windows系统的标准ABOUT窗口

  ABOUT窗口是应用程序向用户传达自身一些基本信息
的最佳方式。Windows系统的许多软件,如程序管理器、文
件管理器、书写器等,都带有一个风格一致的ABOUT窗口
。在这些软件中,只要选择“帮助”菜单命令“关于XXX.
..”,就会弹出这个标准ABOUT窗口,其中显示有关Win
dows及相应软件的版本、工作方式和版权等信息。在VB应
用程序中,可以通过调用API函数ShellAbout,方便地借
用这个标准ABOUT窗口,并将自己的基本信息加入其中。

  首先,在module文件中加入下列声明语句:

  Declare FunctionExtractIcon% Lib "shell.dll" _
(ByVal hinst%,ByVal lpszExeName$,ByVal iIcon%)

  Declare Function GetWindowWord Lib "User"( _
ByVal hWnd As Integer,ByVal nIndex As Integer)As Integer

  Declare Function ShellAbout Lib "shell.dll"(ByVal _
 hWnd As Integer,ByVal szApp As String,ByVal szOtherStuff As String,
_
ByVal hIcon As Integer)As Integer

  Public Const GWL_EXSTYLE=(-20)

  Public Const GWL_STYLE=(-16)

  Public Const GWL_WNDPROC=(-4)

  Public Const GWW_HINSTANCE=(-6)

  然后,在调用ABOUT窗口的菜单项的Click事件中加入下列代码:

  Dim Ret As Integer

  Dim Icon As Integer

  Dim Inst As Integer

  Inst=GetWindowWord(Me.hWnd,GWW_HINSTANCE)

  '从可执行文件中抽取图标

  Icon=ExtractIcon(Inst,"DEMO.EXE",0)

  '调用Windows系统标准ABOUT窗口

  Ret=ShellAbout (Me.hWnd,"演示程序",_
"版权所有[c]1996-1997吴斌" & Chr$(13) & Chr$(10) & "序列号:123456",
Icon)

  ……

转自《中国计算机报》[一九九七年十月六日 总第678期] 第128版

吴斌

VB调用API技巧--拖动无系统标准标题棒的窗口

  大家知道,在VB中可以通过设置Form的属性,制作无
系统标题棒的窗口。可是,由于失去了系统标题棒,如何
使用鼠标拖动窗口便成了一个棘手的问题。其实,借助API函数
ReleaseCapture和SendMessage,这个问题便可迎刃而解了。

  首先,在module文件中加入下列声明语句:

  Declare Sub ReleaseCapture Lib"User"()

  Declare Function SendMessage Lib"User"(ByVal hWnd _
As Integer,ByVal wMsg As Integer,ByVal wParam As Integer,_
lParam As Any)As Long

  Public Const WM_SYSCOMMAND=&H112

  Public Const SC_MOVE=&HF010
  Public Const HTCAPTION=2

  然后,在Form的MouseDown事件中加入下列代码:

  ReleaseCapture

  Ret&=SendMessage(Me.hWnd,WM_SYSCOMMAND,_
SC_MOVE+HTCAPTION,0)
  ……

  程序运行后,只要当光标落在Form区域时按住鼠标左
键,便可以拖动窗口了。在一些要求生动活泼的界面的程
序设计中,开发者常常希望自制风格独特的标题棒,以满
足整个界面的要求。通过这个方法,就可以使自制的标题
棒达到乱真的地步。不过,用作自制标题棒的控件,必须
具有MouseDown事件以摆放上述代码。

转自《中国计算机报》[一九九七年十月六日 总第678期] 第128版

吴斌
VB调用API技巧--制作渐变的窗口背景色

  在许多Windows软件的安装程序中,时常可以看到以
某种颜色由浅至深的渐变为背景的窗口。使用VB制作这类
窗口的方法有不少,而通过调用API函数绘制渐变的窗口背
景色,似乎是一种既简单又节省资源的方法。

  首先,在module文件中加入下列声明语句:

  Declare Function CreateSolidBrush Lib"GDI"(ByVal _
crColor As Long) As Integer

  Declare Function FillRect Lib"USER"(ByVal hDC As _
Integer,lpRect As RECT,ByVal hBrush As Integer)As Integer

  Declare Function DeleteObject Lib"GDI"(ByVal hObject _
As Integer)As Integer

  Type RECT
    left As Integer
    top As Integer
    right As Integer
    bottom As Integer
  EndType

  然后,在窗口的Paint事件中加入下列代码:

  Private Sub Form_Paint()
  Dim Color As Integer
  Dim hBrush As Integer
  Dim OldMode As Integer
  Dim RetVal As Integer
  Dim StepSize As Integer
  Dim X As Integer
  Dim FillArea As RECT

  OldMode%=Me.ScaleMode
  Me.ScaleMode=3
  StepSize%=1+Me.ScaleHeight/80
  Color%=255
  FillArea.left=0
  FillArea.right=Me.ScaleWidth
  FillArea.top=0
  FillArea.bottom=StepSize%
  For X%=1 To 80
    hBrush%=CreateSolidBrush (RGB(0,0,Color%))
    RetVal%=FillRect(Me.hDC,FillArea,hBrush%)
    RetVal%=DeleteObject(hBrush%)
    Color%=Color%-4
    If Color% < 0 Then Color%=0
    FillArea.top=FillArea.bottom
    FillArea.bottom=FillArea.bottom+StepSize%
  Next
  Me.ScaleMode=OldMode%
  EndSub

  按F5运行,就会出现一个以从上至下、由浅至深的渐
变蓝色为背景的窗口。对上述代码稍加改动,便可制作出
各种颜色和水平方向的渐变背景。

--

※ 来源:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.241]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店