动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Visual Basic教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Visual Basic教程 ]的信息

本月文章推荐
.And、Or和Xor:让我们来优化表达.
.MSOffice开发工具--VBA.
.VB中不规则图形热点的实现.
.VB编程经验点滴.
.用VB播放FLASH动画.
.VB编程的好帮手--资源文件.
.使用VB实现所见即所得功能.
.Variant子类型.
.利用VisualBasic实现木马攻击.
.VB图像处理之像素的获取和输出.
.VisualBasic属性、方法和事件一.
.走进VB6啃一块骨头.
.ADO设定独占性的资料库.
.巧用CLIPBOARD建立图像数据库.
.得知目前Mouse所指的MenuItem是哪.
.多用户应用程序中应注意问题.
.VisualBasicCOM基础讲座之事件.
.在VB5.0中编辑数据库和电子表格.
.VB的显示/隐藏Start按钮.
.有关Tray系统盒的VBAPI函数.

如何提高调用WindowAPI函数编程技巧

发表日期:2006-2-27 |


做为一个不断进取的编程者,我们常常不满足于编程语言所提供的一般功能,总是希望能够实现一些特殊的功能,这有时不但是我们程序的要求,有时也是编程者心理上需要(试想,还会有什么比在深夜中巧妙解决一个难题而更令人兴奋呢?)。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=0'windows随机给名

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.随用随查。永远不要在用不到的函数上浪费宝贵的时间->

上一篇:在VB中调用API函数动态改变及恢复屏幕设置 人气:3689
下一篇:VB中访问API函数之防错技巧 人气:2906
浏览全部Visual Basic的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-12-2 OpenPNE中文 v2.12.5 for win 中
2008-12-2 谷秋精品课程软件课程版 v2.3
2008-12-2 晴天电影系统(带一键迅雷/自定义
2008-12-2 QQip138闪字程序
2008-12-2 SmartWeb企业智能建站系统 v1.0.2
2008-12-2 梦想不死个人主页 v2009
2008-12-2 开良ASP小偷程序生成器 v1.1
2008-12-2 toolxp.cnalexa世界排名查询 php
2008-12-2 腾讯留言板 v1.3
2008-11-29 Tencent Traveler 4.4
2008-11-29 龙卷风网络收音机 v3.0.0.0
2008-11-29 Intel Chipset Software Install
2008-11-29 TweakVI 1.0 Build 1100
2008-11-29 Opera 9.62 Build 10469
2008-11-29 MPlayer WW编译版 SVN-r28044(20
2008-11-29 NetTools网络工具v1.0.0破解版
2008-11-29 3DGallery三维体验1.1破解版
2008-11-29 SecretBook保密本v1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | OPEN参数生成器 | 弹出式窗口代码产生器 | 密码登录生成器 | 在线按钮生成器 | Meta标签生成器 | 多色彩特效字代码生成器 | 网页代码调试器 | 在线FTP登陆 | Flash取色器 | 配色代码对照表 | 配色辞典 | CSS生成器 | 广告代码 | 框架网页代码生成器 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | 在线调色板 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 元素周期表 | 健康查询 | 世界时间 | 万年历 | 二十四节气 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2009 www.knowsky.com All rights reserved | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成