如何提高调用WindowAPI函数编程技巧
今天图老师小编给大家精心推荐个如何提高调用WindowAPI函数编程技巧教程,一起来看看过程究竟如何进行吧!喜欢还请点个赞哦~
一.限制鼠标的移动
----有时我们的软件要求用户在未完成某一任务时,鼠标不能移出当前活动控件,换句话就是将鼠标限制在控件的内部,直到任务完成或用户中断为止。这个功能借助API函数实现起来思路很清楚,代码也很简洁。其思路是先确定当前鼠标的位置;然后确定当前活动控件的大小;最后将鼠标限制在活动控件内。(下面忽略项目建立等过程)
----1.建立一个新项目:新窗体为form1,在form1上添加一个commandbutton,设置其Name=CMButton1;Caption="将鼠标限制在此按钮中"
----2.拷贝API函数和POINTAPI结构:打开VB6.0自带的API浏览器,调入WIN32API.txt文件,复制以下结构和函数声明到form1的声明部分:
PrivateTypeRECT
LeftAsLong
TopAsLong
RightAsLong
BottomAsLong
EndType
PrivateTypePOINTAPI
xAsLong
yAsLong
EndType
PrivateDeclareFunctionClientToScreenLib
"user32"Alias"ClientToScreen"(ByVal
hwndAsLong,lpPointAsPOINTAPI)AsLong
'用来确定当前鼠标的位置
PrivateDeclareFunctionClipCursorLib
"user32"Alias"ClipCursor"(lpRectAsAny)
AsLong'用来限定当前鼠标的活动范围
----3.定义一个通用过程ConfineTo
PublicSubConfineTo(myCtlAsObject)
OnErrorResumeNext
DimtmpRectAsRECT
DimptAsPOINTAPI
WithmyCtl
IfTypeOfmyCtlIsScreenThen'锁定在屏幕范围内
tmpRect.Left=0
tmpRect.Top=0
tmpRect.Right=(.WidthScreen.TwipsPerPixelX)
tmpRect.Bottom=(.HeightScreen.TwipsPerPixelY)
ElseifTypeOfmyCtlIsform'锁定在窗体范围内
tmpRect.Left=(.LeftScreen.TwipsPerPixelX)
tmpRect.Top=(.TopScreen.TwipsPerPixelY)
tmpRect.Right=(.Left .Width)Screen.TwipsPerPixelX
tmpRect.Bottom=(.Top .Height)Screen.TwipsPerPixelY
else
pt.X=0
pt.Y=0
CallClientToScreen(.hWnd,pt)
'获取当前控件在屏幕上的位置
tmpRect.Left=pt.X
'保存当前控件位置
tmpRect.Top=pt.Y
pt.X=.Width
pt.Y=.Height
CallClientToScreen(.hWnd,pt)
tmpRect.Bottom=pt.Y
tmpRect.Right=pt.X
EndIf
CallClipCursor(tmpRect)
EndWith
EndSub
----4.在CMButton1_Click()中加入以下代码
StaticClipedAsBoolean
'静态变量用来控制状态切换
IfNotClipedThen
ConfineToCmbutton1
Cliped=True
Else
ConfineToScreen'取消鼠标限制
Cliped=True
EndIf
----5.运行后,鼠标点击cmbutton1,此时鼠标只能被锁定在此按钮内部,再次点击按钮,限制取消。
二.创建临时文件
----临时文件用来保存软件运行过程中的临时变化,这对于熟悉WORD等软件的人来说,经常会遇到。那么临时文件是如何产生的呢,其实很简单,只需要一个API函数就可以。
----1.拷贝声明函数(方法同前)
PrivateDeclareFunctionGetTempFileNameLib"kernel32"_
Alias"GetTempFileNameA"(ByVallpszPathAsString,_
ByVallpPrefixStringAsString,ByValwUniqueAsLong,_
ByVallpTempFileNameAsString)AsLong
参数定义如下:
lpszPath=传入保存临时文件的路径,如"C:mytemp"
lpPrefixString=传入临时文件名开始的前三个字母,
起到帮助识别临时文件