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

2016-02-19 18:26 10 1 收藏

今天图老师小编给大家精心推荐个如何提高调用WindowAPI函数编程技巧教程,一起来看看过程究竟如何进行吧!喜欢还请点个赞哦~

【 tulaoshi.com - 编程语言 】

做为一个不断进取的编程者,我们常常不满足于编程语言所提供的一般功能,总是希望能够实现一些特殊的功能,这有时不但是我们程序的要求,有时也是编程者心理上需要(试想,还会有什么比在深夜中巧妙解决一个难题而更令人兴奋呢?)。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=传入临时文件名开始的前三个字母,
  起到帮助识别临时文件

来源:http://www.tulaoshi.com/n/20160219/1617702.html

延伸阅读
标签: Web开发
牢记:函数式编程不是用函数来编程!!! 23.4函数式编程 23.4.1 什么是函数式编程 什么是函数式编程?如果你这么直白地询问,会发现它竟是一个不太容易解释的概念。许多在程序设计领域有着多年经验的老手,也无法很明白地说清楚函数式编程到底在研究些什么。函数式编程对于熟悉过程式程序设计的程序员来说的确是一个陌生的领域,闭包(cl...
标签: Web开发
简介 你是否知道JavaScript其实也是一个函数式编程语言呢?本指南将教你如何利用JavaScript的函数式特性。  要求:你应当已经对JavaScript和DOM有了一个基本的了解。 写这篇指南的目的是因为关于JavaScript编程的资料太多了但是极少的资料提到了JavaScript的函数式特性。在本指南中,我只会讲解这些基本知识而不会深入其它的函数式语...
标签: 哺乳
八招提高你的哺乳技巧 曾有专家说,没有不产奶的产妇,可生活中总有许多新妈妈因没有足够的奶水而烦恼。因为不能顺利哺乳,只能混合喂养或用配方奶粉。专业人士指出,新妈妈不是缺奶而是缺技巧。 其实,母亲奶水的多少是由婴孩吸吮的情形而决定的。吸吮会刺激母亲体内泌乳素和催产素的分泌,产生更多的奶水。如果发现自己的奶水供应减少,你...
内容或简介: /** 调用数据库里的一个函数 一个函数本质上一个返回一个结果的存储过程,这个例子示范了怎么调用有in、out和in/out参数的函数 ***********************************/ CallableStatement cs; try { // 调用一个没有参数的函数; 函数返回 a VARCHAR // 预处理callable语句   cs = connection.prepareCall("{? = ca...
  // test12.cpp : Defines the entry point for the console application.   //   #include "stdafx.h"   void func(int i)   {   printf("This is for test %i", i);   } !-- frame contents -- !-- /frame contents --   typedef void (*P...

经验教程

45

收藏

55
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部