VB使用编程技巧三则

隔壁村老王_

隔壁村老王_

2016-02-19 18:28

今天给大家分享的是由图老师小编精心为您推荐的VB使用编程技巧三则,喜欢的朋友可以分享一下,也算是给小编一份支持,大家都不容易啊!
----1、VB中实现动态移动控件
  
  ----窗体中的控件如按钮、文本框等一般在运行时位置是固定不变的,但为了能给用户更方便的功能,我们可以做到在运行时动态移动控件的位置,比如我们可以允许用户随便将按钮放到自己喜欢的位置,而并非界面中固定的位置。其实这个功能实现起来是很容易的,只需要使用API函数SendMessage传递控件移动的消息即可。
  
  ----下面是一个例子,当用户单击按钮后可以移动按钮的位置。
  
  ----在窗体的总体声明部分声明SendMessage函数及用到的两个常量:
  
  PrivateDeclareFunctionSendMessage
  Lib"user32"Alias_
  "SendMessageA"(ByValhwndAs
  Long,ByValwMsgAsLong,_
  ByValwParamAsLong,lParamAsAny)AsLong
  ConstWM_SYSCOMMAND=&H112
  ConstSC_MOVE=&HF012
  
  ----在窗体中添加一命令按钮Command1,双击写代码如下:
  
  PrivateSubCommand1_Click()
  Dimretn
  retn=SendMessage(Command1.hwnd,
  WM_SYSCOMMAND,SC_MOVE,0)
  EndSub
  
  ----在窗体中添加命令按钮Command2,双击写如下代码:
  
  PrivateSubCommand2_Click()
  unloadme
  EndSub
  
  ----运行此程序,单击命令按钮1,然后移动鼠标可以发现按钮的边框跟随鼠标移动,在新位置处单击鼠标就可以按钮移动过去了,单击按钮2可结束程序。
  
  ----2、保持窗口的比例不变。
  
  ----WINDOWS下的窗口一般都可以通过鼠标拖动来扩大,有些时候我们需要控制窗口的比例不变,以防窗口比例失调时造成界面的不协调。要做到这一点,可以利用API函数CallWindwosProc,当得到用户调整窗口的消息时,判断X或Y方向上的比例是否和原来的比例一样,如果不一样,则调整为一样。下面是一个例子。
  
  ----在窗体中加一个命令按钮Command1,双击写如下代码:
  
  PrivateSubCommand1_Click()
  UnloadMe
  EndSub
  
  ----双击窗体写如下代码:
  
  PrivateSubForm_Load()
  OldWindowProc=SetWindowLong(hwnd,GWL_WNDPROC,AddressOfNewWindowProc)
  EndSub
  
  ----将下面的代码放入一个模块中:
  
  OptionExplicit
  PublicOldWindowProcAsLon
  '声明API函数如下:
  DeclareFunctionCallWindowProcLib
  "user32"Alias"CallWindowProcA"_
  (ByVallpPrevWndFuncAsLong,ByVal
  hwndAsLong,ByValmsgAsLong,_
  ByValwParamAsLong,lParamAs
  WINDOWPOS)AsLong
  DeclareFunctionSetWindowLongLib
  "user32"Alias"SetWindowLongA"_
  (ByValhwndAsLong,ByValnIndex
  AsLong,ByValdwNewLongAsLong)AsLong
  
  PublicConstGWL_WNDPROC=-4
  '定义一个窗口位置数据类型
  TypeWINDOWPOS
  hwndAsLong
  hWndInsertAfterAsLong
  xAsLong
  yAsLong
  cxAsLong
  cyAsLong
  flagsAsLong
  EndType
  PublicConstWM_WINDOWPOSCHANGING=&H46
  PublicConstWM_WINDOWPOSCHANGED=&H47
  '处理窗口变化的函数
  PublicFunctionNewWindowProc
  (ByValhwndAsLong,ByValmsgAsLong,_
  ByValwParamAsLong,lParamAsWINDOWPOS)AsLong
  Staticdone_beforeAsBoolean
  StaticaspectAsSingle
  Dimnew_aspectAsSingle
  
  Ifmsg=WM_WINDOWPOSCHANGINGThen
  IflParam.cy0Then
  '保存原来的比例
  IfNotdone_beforeThen
  aspect=lParam.cx/lParam.cy
  done_before=True
  EndIf
  
  new_aspect=lParam.cx/lParam.cy
  Ifnew_aspectaspectThen
  lParam.cy=lParam.cx/aspect
  Else
  lParam.cx=aspect*lParam.cy
  EndIf
  EndIf
  EndIf
  
  NewWindowProc=CallWindowProc
  (OldWindowProc,hwnd,msg,wParam,lParam)
  
  EndFunction
  
  ----运行此程序,当用鼠标拉窗体的边界扩大窗口时,将会发现另一边也相应地扩大,整个窗口的比例不变,单击command1结束程序。
  
  ----3、使用系统的“关于”对话框。
  
  ----也许你在软件中需要一个“关于”对话框,如果要求不高的话,可以不必再用一个窗体做“关于”对话框,可利用系统的对话框,虽然其中含有微软的一些信息,但你还是可以添加自己的某些信息,系统提供的“关于”对话框还有内存、资源等有关信息,你不需再为这些信息写任何代码。要使用系统的“关于”对话框,只需声明API函数ShellAbout,然后直接调用即可,例如:
  
  '声明API函数
  PrivateDeclareFunction
  ShellAboutLib"shell32.dll"_
  Alias"ShellAbout"(ByValhwnd
  AsLong,ByValszAppAsString,_
  ByValszOtherStuffAsString,
  ByValhIconAsLong)AsLong
  
  在需要的地方使用它:
  PrivateSubABOUTCd_Click()
  x=ShellAbout(Form1.hwnd,"VB编程乐园网站指南","博士电脑软件工作室",Form1.Icon)
  EndSub->

展开更多 50%)
分享

猜你喜欢

VB使用编程技巧三则

编程语言 网络编程
VB使用编程技巧三则

VB开发技巧三则

编程语言 网络编程
VB开发技巧三则

s8lol主宰符文怎么配

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

Word——使用小技巧三则

办公软件
Word——使用小技巧三则

VB编程开发常见技巧

编程语言 网络编程
VB编程开发常见技巧

lol偷钱流符文搭配推荐

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

VB数据库编程经验两则

编程语言 网络编程
VB数据库编程经验两则

Delphi使用三则

Delphi
Delphi使用三则

lolAD刺客新符文搭配推荐

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

Win 8系统如何设置全局搜索

Win 8系统如何设置全局搜索

VB调用C程序动态链接库的方法

VB调用C程序动态链接库的方法
下拉加载更多内容 ↓