浅显基础教程
电脑操作教程
电脑怎样拨号上网
怎么做个人网页
怎样做局域网
Word教程(文字处理)
图形图象处理入门
经典进步教程
怎样运用代理服务器
怎么做无盘工作站
Photoshop教程
Dreamweaver3教程
Flash4&5教程
Firework3教程
Frontpage2000教程
Authware教程
Office2000教程
怎么制造动画图片
OICQ&ICQ运用方法

高手学习攻略

硬件晋级技巧
CGI教程
ASP教程

PHP教程

注册表运用技巧
路由器的设置
vwin建造攻略
SQL
最近更新:
Flash
相关内容

谈谈WIN API在VB中的运用

一、前语
  当今是个高速开展的信息时代,在这条信息高速公路上核算机起着无足轻重的效果,她将成为人们国际信息来历的一大首要东西之一。核算机软件当然也就无可厚非的担任起前史的重大责任,更直接地说也便是软件开发人员担任起前史的重大责任。怎样开宣布一个既有用又功用强大的软件产品,这是每整个软件界人士所关怀的工作。在此就我个人在软件开发中的经历,谈谈在软件开发中堆集的一些关于WINDOWS API在VB中运用的浅陋技能。

二、内容
  WINDOWS API想必我们一定在开发中运用过不少,WIN32 API 是一组首要用C言语编写的函数,但都能够在VB运用程序中运用。许多VB编程人员运用WIN32 API 函数,来完结VB中不可能完结的事。API函数并不杂乱,也不象有的VB编程人员幻想的那么奥秘。首要问题在于,API是为C言语编程人员树立的,很难用C言语的约定向VB映射函数及数据类型声明。

WINDOWS API能够分为4个功用类别。
窗口办理(USER)
图形设备接口(GUI)
体系服务(KERNEL,内核)
多媒体

下面别离举一个比方进行阐明

1.窗口办理
有的运用程序不论窗口是否活动都是窗口坚持在最上层,比方MICROSOFT WORD 的FIND窗口便是这样。这是经过调用SetWindowPos()API函数完成的,该函数声明如下:
Public Declare 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变元是窗口的句柄,x、y是窗口左上角的坐标,cx、cy是窗口宽度和高度,
hWndInsertAfter变元是窗口清单中hWnd窗口前的窗口句柄,其值见表1。1

数值 效果
HWND_BOTTOM 把窗口放在窗口清单的底部
HWND_TOP 把窗口放在窗口清单的字符次序的顶部
HWND_TOPMOST 把窗口放在窗口清单的顶部
HWND_NOTOPMOST 把窗口放在窗口清单的顶部,最上层窗口下


WFlags变元为整型值,它包括一个或几个标志见表1。2

标志 效果
SWP_DRAWFRAME 在窗口周围画一个方框
SWP_HIDEWINDOW 躲藏窗口
SWP_NOACTIVATE 不激活窗口
SWP_NOMOVE 坚持窗口当时方位(忽视x、y变元)
SWP_NOREDRAW 窗口不主动重画
SWP_NOSIZE 坚持窗口当时尺度
SWP_NOZORDER 坚持窗口在窗口清单中的当时方位
SWP_SHOWWINDOW 显现窗口

提示:这儿未列出常量值,能够从API Viewer窗口仿制到运用程序中,不宜在程序中强行修正常量值。
实例:
Option Explicit

Private Declare 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

Const HWND_TOPMOST = -1
Const SWP_SHOWWINDOW = &H40

Private Sub Form_Load()
Dim retValue As Long
retValue = SetWindowPos(Me.hwnd, HWND_TOPMOST, _
Me.CurrentX, Me.CurrentY, 300, 300, SWP_SHOWWINDOW)
End Sub     2.图形设备接口(GUI)
WIN32 API的函数BitBlt()用于从源方针向方针方针成块仿制图形。函数从指定源设备描述表向方针设备描述表传送一批象素。还有一函数StretchBlt(),它能够从源矩形向方针矩形仿制位图。
Public Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, _
ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, _
ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, _
ByVal dwRop As Long) As Long

Public Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, _
ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, _
ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, _
ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long)
As Long
数值 阐明
BLACKNESS 用黑色填充方针矩形
DSTINVERT 反转方针矩形
MERGECOPY 用AND运算兼并图画与源矩形
MERGEPAINT 用"或"运算兼并源矩形的反与方针矩形
NOTSRCERASE 仿制源矩形的逆矩形到方针中
PATCOPY 用"或"运算兼并源矩形和方针矩形求反
PATINVERT 将图画仿制到方针矩形
PATPAINT 用XOR运算组合图画和方针矩形
用或运算组合源矩形的反与图画色彩,并将成果用或运算组合方针矩形
SRLAND 用AND运算组合源和方针矩形
SRCCOPY 仿制源矩形到方针矩形
SRCERASE 将方针矩形的逆用AND运算与源矩形组合
SRCINVERT 用XOR运算组合源矩形和方针矩形
SRCPAINT 用或运算组合源和方针矩形
WHITENESS 用白色填充方针矩形

实例:
Option Explicit
Private Const WHITENESS = &HFF0062 ' (DWORD) dest = WHITE
Private Const BLACKNESS = &H42 ' (DWORD) dest = BLACK

Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, _
ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, _
ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, _
ByVal dwRop As Long) As Long

Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, _
ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, _
ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, _
ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long

Private Sub Command1_Click()
Dim retValue As Long
retValue = BitBlt(Picture1.hdc, 0, 0, Picture1.Width / 50, Picture1.Height, Picture1.hdc, 0, 0, WHITENESS)
End Sub

Private Sub Command2_Click()
Dim retValue As Long
retValue = BitBlt(Picture1.hdc, 0, 0, Picture1.Width / 50, Picture1.Height, Picture1.hdc, 0, 0, BLACKNESS)
End Sub

3.体系服务(KERNEL,内核)
WIN32 API的函数GlobalMemoryStatus()可获取体系中当时内存状况的信息。

Public Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As MEMORYSTATUS)

Public Type MEMORYSTATUS '数据结构
dwLength As Long
dwMemoryLoad As Long
dwTotalPhys As Long
dwAvailPhys As Long
dwTotalPageFile As Long
dwAvailPageFile As Long
dwTotalVirtual As Long
dwAvailVirtual As Long
End Type

阐明:
有必要设置表明该数据结构长度的dwLength成员之后,才干传递变元到GlobalMenorystatus()函数;其他字段由函数设置。  成员 阐明
DwLength MEMORYSTATUS数据结构的长度
DwMenmoryLoad 内存运用百分比
DwTotalPhys 实践内存总字节数
DwAvaiPhys 可用的实践内存字节数
DwtotalPageFile 分页文件总字节数
DwAvailpageFile 分页文件可用字节数
DwTotalVirtal 虚拟内存的总字节数
DwAvailVirtual 可用的虚拟内存字节数
实例:
Option Explicit

Private Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As MEMORYSTATUS)

Private Type MEMORYSTATUS '数据结构
dwLength As Long
dwMemoryLoad As Long
dwTotalPhys As Long
dwAvailPhys As Long
dwTotalPageFile As Long
dwAvailPageFile As Long
dwTotalVirtual As Long
dwAvailVirtual As Long
End Type

Private Sub Command1_Click()
Dim memStat As MEMORYSTATUS
memStat.dwLength = Len(memStat)
Call GlobalMemoryStatus(memStat)
Label1(0).Caption = memStat.dwMemoryLoad
Label1(1).Caption = memStat.dwTotalPhys
Label1(2).Caption = memStat.dwAvailPhys
Label1(3).Caption = memStat.dwTotalPageFile
Label1(4).Caption = memStat.dwAvailPageFile
Label1(5).Caption = memStat.dwTotalVirtual
Label1(6).Caption = memStat.dwAvailVirtual
End Sub

4.多媒体
  WIN32 API的函数micSendString()、mciExecute()用于向MCI设备宣布指令。当宣布的指令失利时该函数将回来一个长整型数值;其履行状况的回来值,0表明操作成功,正数表明操作失利的原因。回来的错误代码(数字)为把它转化成实践的错误信息用另一个API函数micGetErrorString()进行转化。
Public Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _
(ByVal lpstrCommand As String, ByVal lpstrReturnString As String, _
ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

Public Declare Function mciGetErrorString Lib "winmm.dll" Alias "mciGetErrorStringA" _
(ByVal dwError As Long, ByVal lpstrBuffer As String, ByVal uLength As Long) As Long

Public Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long

指令 阐明 指令 阐明
Capability 恳求设备才能的信息 Record 开端录制
Close 封闭设备 Resume 康复暂停的播映或录制
Info 恳求设备的信息 Seek 改动前言中的当时方位
Open 翻开和初始化所用的设备 Set 改动设备的控件设置
Pause 暂停设备的播映或录制 Status 恳求关于设备状况的信息
Play 设备播映开端 Stop 中止设备的播映或录制

翻开设备指令(OPEN)
变元:
alias别号 用于指定该设备的别号
shareable 答应运用程序公享共用设备
type设备名 设备为媒体元素而不是MCI设备名时,它表明MCI设备名
播映文件(PLAY)

变元:
from 播映段的开端方位(以毫秒为单位时刻核算)
to 播映段的完毕方位
wait 使MCI设备等候播映完毕后才将控制权交回运用程序
阐明:如不必WAIT变元,另一个PLAY指令将会中止当时正在播映的文件。

实例:(举例阐明mciExecute函数)
Option Explicit

Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _
(ByVal lpstrCommand As String, ByVal lpstrReturnString As String, _
ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

Private Declare Function mciGetErrorString Lib "winmm.dll" Alias "mciGetErrorStringA" _
(ByVal dwError As Long, ByVal lpstrBuffer As String, ByVal uLength As Long) As Long

Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long

Private Sub Play_Click()
Dim errorCode As Long
Dim strError As String
On Error GoTo error
errorCode = mciExecute("open waveaudio")
errorCode = mciExecute("play c:\winnt\media\ringin.wav")
errorCode = mciExecute("close waveaudio")
Exit Sub
error:
MsgBox mciGetErrorString(errorCode, strError, 255)
End Sub

Private Sub Stop_Click()
End
End Sub
让我们为了共同进步而彼此切戳! 名字:葛建林
地址:北京蓝深核算机网络总公司(北京海淀区学院路蓟门饭馆北付楼三层)
邮编:100088;电话:010-62020374-8310;E-mail:Jxfhgjl@263.net

  本文取自:《软件国际》1999年第5期

用VB完成多文件查找与替换功用
用VB 5.0 规划Browser及FTP程序
用Visual Basic 5.0规划E-mail程序
谈谈WIN API在VB中的运用
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
教程站
收集整理




月光软件代码下载编程文档电脑教程vwin优化网址导航网络文学游戏六合日子休闲写作范文安妮宝物站内搜索
电脑技能编程开发网络专区谈天说地情感国际游戏元素分类游戏抢手游戏体育运动手机专区业余爱好影视沙龙
音乐六合数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区当地风情各行各业

月光软件站·版权所有