WEB开发网      婵犵數濮烽弫鍛婄箾閳ь剚绻涙担鍐叉搐绾剧懓鈹戦悩瀹犲闁汇倗鍋撻妵鍕箛閸洘顎嶉梺绋款儑閸犳劙濡甸崟顖氬唨闁靛ě浣插亾閹烘鈷掗柛鏇ㄥ亜椤忣參鏌″畝瀣暠閾伙絽銆掑鐓庣仭缁楁垿姊绘担绛嬪殭婵﹫绠撻、姘愁樄婵犫偓娴g硶鏀介柣妯款嚋瀹搞儱螖閻樺弶鍟炵紒鍌氱Ч瀹曟粏顦寸痪鎯с偢瀵爼宕煎☉妯侯瀳缂備焦顨嗗畝鎼佸蓟閻旈鏆嬮柣妤€鐗嗗▓妤呮⒑鐠団€虫灀闁哄懐濮撮悾鐤亹閹烘繃鏅濋梺闈涚墕濡瑩顢欒箛鏃傜瘈闁汇垽娼ф禒锕傛煕閵娿儳鍩f鐐村姍楠炴﹢顢欓懖鈺嬬幢闂備浇顫夊畷妯肩矓椤旇¥浜归柟鐑樻尭娴滃綊姊虹紒妯虹仸闁挎洍鏅涜灋闁告洦鍨遍埛鎴︽煙閼测晛浠滃┑鈥炽偢閹鈽夐幒鎾寸彇缂備緡鍠栭鍛搭敇閸忕厧绶炴俊顖滅帛濞呭洭姊绘担鐟邦嚋缂佽鍊垮缁樼節閸ャ劍娅囬梺绋挎湰缁嬫捇宕㈤悽鍛婄厽閹兼番鍨婚埊鏇㈡煥濮樿埖鐓熼煫鍥ュ劤缁嬭崵绱掔紒妯肩畺缂佺粯绻堝畷姗€濡歌缁辨繈姊绘担绛嬪殐闁搞劋鍗冲畷顖炲级閹寸姵娈鹃梺缁樻⒒閳峰牓寮崒鐐寸厱闁抽敮鍋撻柡鍛懅濡叉劕螣鐞涒剝鏂€闂佺粯鍔曞Ο濠囧吹閻斿皝鏀芥い鏃囨閸斻倝鎽堕悙鐑樼厱闁哄洢鍔屾晶顖炴煕濞嗗繒绠婚柡灞界Ч瀹曨偊宕熼鈧▍锝囩磽娴f彃浜炬繝銏f硾椤戝洨绮绘ィ鍐╃厵閻庢稒岣跨粻姗€鏌ㄥ☉妯夹fい銊e劦閹瑩顢旈崟顓濈礄闂備浇顕栭崰鏍礊婵犲倻鏆﹂柟顖炲亰濡茶鈹戦埄鍐ㄧ祷妞ゎ厾鍏樺璇测槈閵忕姈鈺呮煏婢跺牆鍔撮柛鏂款槺缁辨挻鎷呯粙搴撳亾閸濄儳鐭撶憸鐗堝笒閺嬩線鏌熼崜褏甯涢柡鍛倐閺屻劑鎮ら崒娑橆伓 ---闂傚倸鍊搁崐鐑芥倿閿旈敮鍋撶粭娑樺幘濞差亜鐓涢柛娑卞幘椤斿棝姊虹捄銊ユ珢闁瑰嚖鎷�
开发学院软件开发VB 用VB制作常居上层的浮动工具箱 阅读

用VB制作常居上层的浮动工具箱

 2006-02-27 21:08:41 来源:WEB开发网 闂傚倸鍊搁崐椋庢濮橆兗缂氱憸宥堢亱闂佸湱铏庨崰鏍不椤栫偞鐓ラ柣鏇炲€圭€氾拷闂傚倸鍊搁崐椋庣矆娓氣偓楠炲鏁撻悩鎻掔€梺姹囧灩閻忔艾鐣烽弻銉︾厵闁规鍠栭。濂告煕鎼达紕校闁靛洤瀚伴獮鎺楀箣濠靛啫浜鹃柣銏⑶圭壕濠氭煙閻愵剚鐏辨俊鎻掔墛缁绘盯宕卞Δ鍐冣剝绻涘畝濠佺敖缂佽鲸鎹囧畷鎺戭潩閹典焦鐎搁梻浣烘嚀閸ゆ牠骞忛敓锟�婵犵數濮烽弫鍛婃叏椤撱垹绠柛鎰靛枛瀹告繃銇勯幘瀵哥畼闁硅娲熷缁樼瑹閳ь剙岣胯鐓ら柕鍫濇偪濞差亜惟闁宠桨鑳堕崝锕€顪冮妶鍡楃瑐闁煎啿鐖奸崺濠囧即閵忥紕鍘梺鎼炲劗閺呮稒绂掕缁辨帗娼忛埡浣锋闂佽桨鐒﹂幑鍥极閹剧粯鏅搁柨鐕傛嫹闂傚倸鍊搁崐椋庢濮橆兗缂氱憸宥堢亱闂佸湱铏庨崰鏍不椤栫偞鐓ラ柣鏇炲€圭€氾拷  闂傚倸鍊搁崐鐑芥嚄閼哥數浠氱紓鍌欒兌缁垶銆冮崨鏉戠厺鐎广儱顦崡鎶芥煏韫囨洖校闁诲寒鍓熷铏圭磼濡搫顫岄梺璇茬箲濮樸劑鍩€椤掍礁鍤柛鎾跺枎椤繐煤椤忓嫬鐎銈嗘礀閹冲酣宕滄导瀛樷拺闂侇偆鍋涢懟顖涙櫠椤斿墽纾煎璺猴功缁夎櫣鈧鍠栭…閿嬩繆濮濆矈妲烽梺绋款儐閹瑰洤螞閸愩劉妲堟繛鍡楃箲濞堟﹢姊绘担椋庝覆缂傚秮鍋撴繛瀛樼矤閸撶喖宕洪埀顒併亜閹烘垵鈧綊寮抽鍕厱閻庯綆浜烽煬顒傗偓瑙勬磻閸楀啿顕i崐鐕佹Ь闂佸搫妫寸粻鎾诲蓟閵娾晜鍋嗛柛灞剧☉椤忥拷
核心提示:通过形象化的图标,浮动工具箱可以省去用户点击主菜单的麻烦,用VB制作常居上层的浮动工具箱,当鼠标位于其图标上时,在鼠标下方会自动“掉出”一个小标签,注释器即出现的结果了,SubGP3D1_MouseMove(indexAsInteger,ButtonAsInteger,ShiftAsInteger,XAsSingle,
通过形象化的图标,浮动工具箱可以省去用户点击主菜单的麻烦。当鼠标位于其图标上时,在鼠标下方会自动“掉出”一个小标签,说明它的功能。而且常居上层,不会被打开的文件所覆盖。并且可以改变形状及位置,尽可能地减少所占用的桌面面积。

能不能在我们自己的应用程序中使用这种先进手段呢?这里介绍一种用VB来实现的简单方法。主要编程思路是:引用WindowsAPL函数,实现表单常居上层;建立控件数组,通过控件的MouseMove事件,引发注释的弹出和消失。

一、浮动工具箱的可视化实现方法

1.在Form1上放置控件SSRIBBON按钮(因为它本身有三种状态:按下、弹起、禁止使用,大部分图标按钮都是这类按钮)。再放置文本框Text1(也可以用Label控件,但效果会有所不同,稍后会讲到),再放置一个命令按钮Command1。各控件属性见表1(表中只列出一个例子,其它的只要修改相应的属性即可)。

2.单击GP3D1,按ALT+Del剪切,然后按ALT+Insert复制若干,形成控件数组GP3D1(0)、GP3D1(2)、GP3D1(3)……,再如法建立Text1(0)、Text1(1)、Text1(3)……。

3.调整按钮及文本框位置。

在此期间,每一项工作都是必要的,如文本框的Visible值为False,以确保程序启动时不显示文本框,而Enable值为False是为了在运行过程中,文本框不能输入文本。如果使用标签(Label)代替文本框,则不能纵向排列图标按钮,只能横向。因为下面的按钮会盖住Label,但使用Label要比文本框省内存。

为了实现常居上层的效果,必须调用WindowsAPI函数,事实上VB的很多方法都引用于WindowsAPI。这里我们用SetWindowsPos过程,此过程在User.exe中定义,它是Windows系统重要的动态链接库。在VB中引用API函数时,必须在通用声明部分声明注册。声明API函数往往比较麻烦且易出错,比如:

DeclareSubSetWindowPosLib″User″(ByValhwndAsInteger,ByVal
hWndInsertAfterAsInteger,ByValXAsInteger,ByValYAsInteger,ByVal
cxAsInteger,ByValcyAsInteger,ByValwFlagsAsInteger)

如果所有的API函数声明都这么输入,效率太低。好在各版本的VB都提供了一个WindowsAPIHelp程序,打开它,搜索SetWindowPos,找到以后点击超文本带出解释,拷贝即可。

二、创建代码在通用声明部分输入下列代码并声明一些常量及全程变量:

DeclareSubsetwindowposLib″User″(ByValhwndAsInteger,ByVal
hWndInsertAfterAsInteger,ByValXAsInteger,ByValYAsInteger,
ByValcxAsInteger,ByValcyAsInteger,ByValwFlagsAsInteger)

ConstSWP_NOSIZE=1

ConstSWP_nomove=2

Constflags=SWP_NOSIZEOrSWP_nomove

Consthwnd_topmost=-1

Consthwnd_notopmost=-2

DimIAsInteger

DimBAsInteger

为GP3D1按钮的MouseMove事件添加如下代码,这里仅实现鼠标在其上时注释器弹出、不在其上时隐去的功能,读者可再加一个计时器控件和一些代码,即可很容易地实现鼠标位于其上片刻后注释器弹出的效果,这样就不会出现鼠标“路过”按钮时,注释器即出现的结果了。

SubGP3D1_MouseMove(indexAsInteger,ButtonAsInteger,Shift

AsInteger,XAsSingle,YAsSingle)

I=index′记录下当前鼠标位于哪个按钮上

text1(I).Visible=True″使其弹出

IfB<>IThen′使其它按钮隐去

text1(B).Visible=False

EndIf

B=I′请好好体会这个变量B的作用

EndSub

为Command1按钮的Click事件添加如下代码:

SubCommand1_Click()

doWhileDoEvents()′用DoEvents()实现空闲循环下的多任务监测

setwindowposhwnd,hwnd_topmost,0,0,0,0,flags′实现常居上层

loop

EndSub

为Command1按钮的MouseMove事件添加如下代码:

SubCommand1_MouseMove(ButtonAsInteger,ShiftAsInteger,X

AsSingle,YAsSingle)

text1(I).Visible=False′鼠标离开按钮区,位于命令按钮上时隐去注释器

EndSub

为Form1的MouseMove事件添加如下代码:

SubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,X

AsSingle,YAsSingle)

text1(I).Visible=False′鼠标离开按钮区,进入表单时隐去注释器

EndSub->

Tags:VB 制作 常居

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接