麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

用VB制作常居上層的浮動工具箱

2019-11-18 17:32:49
字體:
來源:轉載
供稿:網友
通過形象化的圖標,浮動工具箱可以省去用戶點擊主菜單的麻煩。當鼠標位于其圖標上時,在鼠標下方會自動“掉出”一個小標簽,說明它的功能。而且常居上層,不會被打開的文件所覆蓋。并且可以改變形狀及位置,盡可能地減少所占用的桌面面積。

能不能在我們自己的應用程序中使用這種先進手段呢?這里介紹一種用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->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 精品国产91久久久久久久妲己 | 国产三级在线视频观看 | 亚洲精品自在在线观看 | 中文字幕精品在线视频 | 国产精品久久久久久久娇妻 | 久久久精品视频国产 | 日本一区二区视频在线观看 | 国产一级在线看 | 欧美国产精品一区二区 | 青草久久网 | 中国女警察一级毛片视频 | 精品久久久久久久久久中出 | 国产一区二区三区四区在线 | 亚洲精品一区国产精品丝瓜 | 成人毛片在线免费观看 | 蜜桃成品人免费视频 | 在线观看视频日本 | 哪里可以看免费的av | 国产影院在线观看 | 国产日产精品久久久久快鸭 | 成年人在线视频免费 | 久久精品一区二区三区不卡牛牛 | 91久久在线观看 | xxx日本视频 | 亚洲日本韩国精品 | 毛片在线免费观看网址 | 99久久婷婷国产综合精品青牛牛 | 嫩呦国产一区二区三区av | 中文字幕综合在线观看 | 午夜精品视频免费观看 | 福利在线免费视频 | 欧美一区二区三区久久精品视 | 成人短视频在线观看 | 毛片在哪看 | 国产电影精品久久 | 特级黄色影院 | 国产一级毛片不卡 | 久草在线综合 | 免费香蕉成视频成人网 | 成人免费毛片一 | 青青草免费观看 |