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

chenchao357

chenchao357

2016-02-19 18:26

今天图老师小编给大家精心推荐个如何提高调用WindowAPI函数编程技巧教程,一起来看看过程究竟如何进行吧!喜欢还请点个赞哦~
做为一个不断进取的编程者,我们常常不满足于编程语言所提供的一般功能,总是希望能够实现一些特殊的功能,这有时不但是我们程序的要求,有时也是编程者心理上需要(试想,还会有什么比在深夜中巧妙解决一个难题而更令人兴奋呢?)。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=(.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=传入临时文件名开始的前三个字母,
  起到帮助识别临时文件
展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
如何提高调用WindowAPI函数编程技巧

Delphi中API编程--在Delphi中调用API函数

Delphi
Delphi中API编程--在Delphi中调用API函数

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

函数调用的几个概念

编程语言 网络编程
函数调用的几个概念

如何提高自己的编程水平

编程语言 网络编程
如何提高自己的编程水平

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

如何调用ActiveX网页中的JavaScript函数

编程语言 网络编程
如何调用ActiveX网页中的JavaScript函数

函数式编程(javascirpt)

Web开发
函数式编程(javascirpt)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

去掉窗体的关闭按钮

去掉窗体的关闭按钮

ajax 在updatepanel中使用alert提示方法

ajax 在updatepanel中使用alert提示方法
下拉加载更多内容 ↓