电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 软件教学-> 压缩工具
如何提高调用windowapi函数编程技巧_visualbasic教程
作者:网友供稿 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
做为一个不断进取的编程者,我们常常不满足于编程语言所提供的一般功能,总是希望能够实现一些特殊的功能,这有时不但是我们程序的要求,有时也是编程者心理上需要(试想,还会有什么比在深夜中巧妙解决一个难题而更令人兴奋呢?)。VisualBasic,做为一个当前最流行的快速编程环境,就给我们提供了实现这些目标的平台,事实上,它无限扩展的API接口可以实现所有WINDOWS下可以实现的功能。然而对于初学者来说,"浩瀚"的API函数总是显得那么神奇与不可琢磨,因此在实际应用过程中不能够灵活应用。下面我将结合两个小例子来示范介绍VB中调用API函数的步骤和功能,并总结说明在实际工作中如何提高这方面的技巧。例子在WINDOWS98下采用VB6.0编译。
一.限制鼠标的移动
----有时我们的软件要求用户在未完成某一任务时,鼠标不能移出当前活动控件,换句话就是将鼠标限制在控件的内部,直到任务完成或用户中断为止。这个功能借助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=(.Width\Screen.TwipsPerPixelX)
tmpRect.Bottom=(.Height\Screen.TwipsPerPixelY)
ElseifTypeOfmyCtlIsform锁定在窗体范围内
tmpRect.Left=(.Left\Screen.TwipsPerPixelX)
tmpRect.Top=(.Top\Screen.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=传入临时文件名开始的前三个字母,
起到帮助识别临时文件来源的作用。
wUnique=0,windows随机产生文件名;否则安其值定义文件名。
lpTempFileName=返回随机文件名

----2.返回临时文件名
PrivateFunctionGenTempName(sPathAsString)
DimsPrefixAsString
DimlUniqueAsLong
DimsTempFileNameAsString

IfIsEmpty(sPath)ThensPath="c:\temp"
sPrefix="TVB"
lUnique=0windows随机给名

sTempFileName=Space$(100)
GetTempFileNamesPath,sPrefix,lUnique,sTempFileName
sTempFileName=Mid$(sTempFileName,1,
InStr(sTempFileName,Chr$(0))-1)去掉多余空格
GenTempName=sTempFileName
EndFunction

----3.将下面代码加入到form1_click()事件中
MsgBoxGenTempName("c:\temp")

----4.运行,鼠标点击form,弹出msgbox,显示生成"c:\temp\TVB724.tmp"文件,用文件管理器查看,在c:\temp下有TVB724.tmp文件,长度为0K。
----需要注意的是,传入的路径必须是有效路径,否则GenTempName函数返回0,lpTempFileName中也没有临时文件名。

三.结束语
----从上面可以看出,API函数的确简单高效,但也充满一些看似高深的变量而使人却步。我们不禁会问,究竟什么时候要用到API函数?具体哪些函数可以解决我的问题?,那些函数中的变量都代表什么?其实对这些问题,即使对一个VB高手也难给出明确的回答,因为API函数库实在太庞大了,每一个人最终只能熟悉其中的一小部分(这也可能是调用API的文章层出不穷的原因吧)。总结自己的一点经验,我觉得应该注意以下几点。
----1.熟练掌握VB基本技巧,了解其所能所不能,这是最基本的要求。

----2.了解WINDOWS内部控制机理,这样对一些复杂的问题就可以逐步分析其调用机制,初步确定采用哪部分的API函数来解决问题。

----3.案头必备一本最新的VB版的WINDOWSAPI大全,推荐机械工业出版社的<>。书中给出了每一个VB可以调用的API函数的详细说明,可以帮助精确了解所需要的API函数的变量声明。

----4.多看别人的程序。报纸杂志,尤其是网上这方面的文章数不清。这是最快的方法。

----5.随用随查。永远不要在用不到的函数上浪费宝贵的时间->


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·用photoshop的路径文字工具绘制造型虚线_photoshop教程
·用winrar合并音频文件_压缩工具教程
·vb5.0中实现字体闪烁效果_visualbasic教程
·vb编程获取文件中集成的图标_visualbasic教程
·如何提高调用windowapi函数编程技巧_visualbasic教程
·图像在图片框中的滚动_visualbasic教程
·vb中使用sql查询语句_visualbasic教程
·字符串的一些操作_visualbasic教程
·vb数组小技巧一则_visualbasic教程
·vb中列表框的使用技巧说明_visualbasic教程

最新文章
·照片处理 photoshop简单制作照片柔光效果_photoshop教程
·用winrar将多个swf打包成一个exe文件_压缩工具教程
·让你的winrar用起来更顺手_压缩工具教程
·两招小技巧提高winrar的使用效率_压缩工具教程
·photoshop为漫画漫画线稿上色:圣斗士_photoshop教程
·让winrar功能搬到右键菜单_压缩工具教程
·photoshop绘制windows vista风格壁纸_photoshop教程
·php学习时间完整表_php教程
·九大不传秘笈 让winrar为你专一工作_压缩工具教程
·fireworks制作边框虚线流动小动画_fireworks教程


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号