亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

VB編程之路-如何讓界面美化

2019-11-18 17:53:36
字體:
來源:轉載
供稿:網友
如果大家用過《Windows優化大師》,肯定會被它的界面所傾倒,其實利用ActiveSkin就可以辦到,甚至更爽,但是如果要做的共享軟件只是一個文件,在加上幾個OCX累贅,似乎很是不爽,看看VB是怎么利用別的東東來實現的吧。

  首先新建一個EXE工程,再在窗體上拖幾個Label控件,看看Label的強大功能吧,原理就是利用Label來模擬一個按鈕,但是首先要將Label控件的屬性要調一下,
Name:LblBtn,
BorderStyle:1,
Appearance:0,
Alignment:2,

  這樣一個按鈕的雛形就已經出來了,如果工程量很大,可以將多個Label控件的Name屬性設為一樣的,對于按鈕的識別就要靠識別Index屬性了,為了方便起見,在進入到代碼編輯窗口,輸入以下代碼:

PRivateConstLBL_BACK_COLOR=&HE0E0E0’正常時Label控件的背景色
PrivateConstLBL_WHEN_MOUSE_MOVE=&HC0C0C0’鼠標移動時Label的背景色
PrivateConstLBL_WHEN_MOUSE_DOWN=&H808080’鼠標按下時Label的背景色

再在Form的Load事件中輸入以下內容

PrivateSubForm_Load()
DimCountAsInteger
ForCount=0To3’請將此出的3換成你的LblBtn數量的個數-1
LblBtn(Count).BackColor=LBL_BACK_COLOR’初始化LblBtn的背景
NextCount
EndSub

然后再在LblBtn的MouseMove和MouseDown事件中來搞定剩余部分:

PrivateSubLblBtn_MouseDown(IndexAsInteger,ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)’當鼠標按在LblBtn上時
LblBtn(Index).BackColor=LBL_WHEN_MOUSE_DOWN’臨時改變LblBtn背景顏色
EndSub
PrivateSubLblBtn_MouseMove(IndexAsInteger,ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)’鼠標在LblBtn上面移動時觸發該事件
DimCountAsInteger
DoEvents’暫時將系統控制權教給系統
IfButtonThenExitSub’如果按鈕被按下就退出該過程
ForCount=0To3
IfCount<>IndexThen’如果按下的不是其它按鈕
LblBtn(Index).BackColor=LBL_BACK_COLOR’將背景設為正常
Else
LblBtn(Index).BackColor=LBL_WHEN_MOUSE_MOVE’將背景設為鼠標移動的背景
EndIf
NextCount
EndSub
PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
DimCountAsInteger
DoEvents
ForCount=0To3
LblBtn(Count).BackColor=LBL_BACKCOLOR’恢復背景
NextCount
End
  本來利用Windows的消息系統來完成這一“艱巨”的任務最簡單,可問題就來了,Label控件沒有窗口句柄怎么辦?可是此問題與題無關,寫了會有騙稿費之:)
OK,Label控件就講到這里,在來說說TextBox控件,

  各位看關恐怕看慣了白顏色的背景,那么就換換顏色以養養俺們那和綿羊一樣的眼睛(為什么說綿羊?俺也不知道),可是VB提供的RGB函數弄出來的顏色不是怎么好看,這里俺來教大家一個小Tip,RGB函數的Red,Green,Blue這三個參數若一樣,則產生的顏色是灰度,當然越接近白顏色越好,但也不能讓各位看不出來,俺建議TextBox的背景為RGB(235,235,235),各位還是實戰一下,將一個TextBox拖到窗體上,屬性設置如下
Appearance0
BorderStyle1
MutilLineTrue

千萬不要設置ScrollBars屬性,否則會影響效果
在Form的Load事件中初始化TextBox
DimbkColorAsLong
PrivateSubForm_Load()
bkColor=RGB(235,235,235)
Text1.BackColor=bkColor
EndSub
在Form和Text1的MouseMove事件中:
PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
Text1.BorderStyle=0
EndSub
PrivateSubText1_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
DoEvents
Text1.BorderStyle=1
EndSub

在按下F5試試是不是很Cool?


  可能各位看關玩過石器時代,一定會對里面的TextBox的效果感到很爽,VB還不是可以做到,有焦點的控件可以使用SetFocus方法來為其設置焦點,可是一個窗體上如果控件太多了,一個一個的用SetFocus是不是太傻了?這一節的主角就是--------API函數,

首先聲明:
PrivateTypePOINTAPI
xAsLong
yAsLong
EndType
PrivateDeclareFunctionGetCursorPosLib"user32"Alias"GetCursorPos"(lpPointaspOINTAPI)AsLong
PrivateDeclareFunctionWindowFromPointLib"user32"Alias"WindowFromPoint"(ByValxPointAsLong,ByValyPointAsLong)AsLong
PrivateDeclareFunctionSetFocusLib"user32"Alias"SetFocus"(ByValhwndAsLong)AsLong
但是這里的SetFocus會和控件的SetFocus會搞混淆,改改吧,
PrivateDeclareFunctionnSetFocusLib"user32"Alias"SetFocus"(ByValhwndAsLong)AsLong
只要Alias指向的接口是對的前面的函數名稱簡直就是擺設,
在建立一個過程:
PublicFunctionsSetFocus()AsLong
DimCPosAsPOINTAPI,SuccessfullAsBoolean,hWndAsLong
DoEvents
Successfull=GetCursorPos(CPos)
IfNotSuccessfullThenExitSub’如果未成功則退出該過程
hWnd=WindowFromPoint(CPos.x,CPos.y)
sSetFocus=nSetFocus(hWnd)
EndSub
  在窗體上放一個Timer控件,Interval屬性設為100,就是0.1秒,在Timer1控件的Timer事件中填入sSetFocus,在運行一下看看,效果怎么樣?

  可是有的先生小姐要問了,TextBox難道就不能用ScrollBar嗎?非也非也,選工程->部件->MicrosoftWindowsCommonControls-26.0(SP3)就是你的答案,至于卷動TextBox就去研究SendMessage函數吧,否則又有騙稿費之嫌,如果想作綠色軟件,不想用控件,可以用俺前面講到的Label控件,利用字體Webdings來模擬ScrollBar,需要注意的是,如果模擬ScrollBar,上下左右箭頭分別是5,6,3,4,別忘了把字體設為Webdings

  再來講講窗體的美化,其實將BorderStyle屬性設為0就是很好的2D美化;)可是,這樣一來,問題又來了,怎么辦?凡事都要請API來幫忙,這里需要兩個API,一下是該API的聲明:

PublicDeclareFunctionReleaseCaptureLib"user32"Alias"ReleaseCapture"()AsLong注釋:這個API是用來解下鼠標的追蹤器,關于他的過多用法以及詳細介紹可以寫信向俺咨詢,
還有
PublicDeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong’這個該不要俺多介紹了吧
PublicConstHTCAPTION=2’代表窗體的標題區
PublicConstWM_NCLBUTTONDOWN=&HA1’表示非工作區左鍵按下
  原理很簡單,卸下鼠標追蹤器后向Form發送一個移動窗體的消息,其實做到這一點的方法很多,但俺個人認為這一種最簡單,添加一個過程:

PublicSubMoveForm(hWndAsLong)
DoEvents
ReleaseCapture
SendMessagehWnd,WM_NCLBUTTONDOWN,HTCAPTION,0&
EndSub
在Form的MouseMove事件中:
PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfButton=vbLeftButtonThenMoveFormhWnd’如果按下鼠標左鍵就移動窗體
EndSub
臺下的這位小姐又納悶了,可是光禿禿的窗體沒有了標題欄也不好看,俺要向這為小姐推薦俺的東東-ActiveX控件,ToolSign,需要的人可以寫信給俺聯系,
該控件需要在代碼編輯區域內添加一下代碼:
’一下聲明是用在ToolSign的AutoQuit屬性的
PublicConstEXIT_FORCE=2’注意,在VB中運行的時候如果選用此退出方式,VB也會退出
PublicConstEXIT_MESSAGE=1’由操作系統發送關閉消息
PublicConstEXIT_CUSTOM=Not(EXIT_FORCEOrEXIT_MESSAGE)’自定義
將其注冊后在部件欄中把e-DogkidStudioToolsSign打鉤,添加到工具箱中,雙擊加入到窗體中,
在Form的Load事件中添加一下初始化代碼:
PrivateSubForm_Load()
WithSign1
.AutoQuit=EXIT_CUSTOM
.ParentsHWND=hWnd’填了此屬性可以直接用ToolSign來移動窗體而不需要前面的代碼
EndWith
EndSub
Sign1的Click事件
PrivateSubSign1_Click()
End’關閉程序
EndSub
在Form的Resize事件中添加一下代碼:
PrivateSubForm_Resize()
Sign1.Width=Width
EndSub
如果想讓窗體可以改變大小,可以修改一下屬性
Caption""
BorderStyle2或5
ControlBoxFalse

  不知道各位看關見過爆炸試的窗體沒有?,沒有見過可以從俺要另外一個俺自己的ActiveXDLL,我的那個東東其實是給我的Software作運行庫的,各位若不嫌棄,可以用用,注冊后在工程->引用->e-DogkidRuntimeLibrary
然后在窗體Load事件中輸入:
PrivateSubForm_Load()
DimSystemAse_Dogkid_Runtime_Library.System
SetSystem=Newe_Dogkid_Runtime_Library.System
Show
System.BoomIthDC,60,Width,Height,Left,Top
SetSystem=Nothing
EndSub

->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
高清一区二区三区日本久| 这里精品视频免费| 色综合五月天导航| 91精品视频免费观看| 91免费精品视频| 欧美国产日本高清在线| 一区二区三区视频免费在线观看| 欧美精品一二区| 精品无人区太爽高潮在线播放| 久久99精品久久久久久琪琪| 亚洲国产精品成人一区二区| 精品调教chinesegay| 久久精品成人欧美大片| 97色伦亚洲国产| 久久精品国产成人精品| 岛国视频午夜一区免费在线观看| 在线精品高清中文字幕| 不卡伊人av在线播放| 日韩av免费在线| 国产精品亚洲综合天堂夜夜| 在线观看亚洲区| 亚洲国产欧美一区| 亚洲天堂久久av| 国产精品国产三级国产aⅴ9色| 成人国产精品日本在线| 亚洲伊人久久大香线蕉av| 成人免费高清完整版在线观看| 精品人伦一区二区三区蜜桃免费| 国产精品久久久久福利| 日韩在线免费观看视频| 最近2019年日本中文免费字幕| 国产99视频精品免视看7| 国产精品羞羞答答| 国产精品偷伦一区二区| 91精品国产91久久| 欧美黑人性生活视频| 欧美综合一区第一页| 日韩精品免费一线在线观看| 亲爱的老师9免费观看全集电视剧| 欧美激情亚洲激情| 国产情人节一区| 日本免费一区二区三区视频观看| 97在线观看免费| 久久久久国色av免费观看性色| 国产精品久久久久久久久久ktv| 欧美激情videoshd| 成人久久一区二区三区| 久久久久久久久久国产| 成人免费视频在线观看超级碰| 日韩免费看的电影电视剧大全| 久久久久久久爱| 中文字幕一区日韩电影| 午夜精品一区二区三区av| 亚洲成人av片在线观看| 国产丝袜一区二区| 国产一区视频在线| 国产日产欧美a一级在线| 亚洲欧美色图片| 欧美日韩一区二区免费在线观看| 久久久女人电视剧免费播放下载| 亚洲欧美日韩精品久久奇米色影视| 日韩欧美大尺度| 欧美尤物巨大精品爽| 亚洲国产精品视频在线观看| 国产精品69av| 亚洲欧洲美洲在线综合| 欧美视频13p| 久久成人av网站| 国产成人精品视频| 国产精品青草久久久久福利99| 国产做受69高潮| 91po在线观看91精品国产性色| 视频一区视频二区国产精品| 久久亚洲国产成人| 亚洲激情自拍图| 亚洲精品xxxx| 91人成网站www| 97香蕉久久超级碰碰高清版| 国产做受69高潮| 久久久日本电影| 国产精品视频精品视频| 美女精品视频一区| 久久久久久久网站| 亚洲性线免费观看视频成熟| 国产精品久久久久久久天堂| 国产福利精品av综合导导航| 国产精品丝袜一区二区三区| 国产精品96久久久久久又黄又硬| 九九热99久久久国产盗摄| 国产精品88a∨| 欧美专区第一页| 性夜试看影院91社区| 宅男66日本亚洲欧美视频| 亚洲欧美国产精品久久久久久久| 色综合91久久精品中文字幕| 久久久久久成人| 亚洲丝袜在线视频| 91成人性视频| 日韩av电影免费观看高清| 国产美女精品视频| 欧美日韩激情网| 亚洲第一精品夜夜躁人人躁| 国产精品久久久久久久久久三级| 亚洲成人网在线观看| 久久精品久久精品亚洲人| 欧美激情亚洲综合一区| 欧美一级大片在线观看| 国产精品综合久久久| 久久久黄色av| 精品亚洲一区二区三区在线观看| 国产视频精品一区二区三区| 欧美亚洲午夜视频在线观看| 久久97精品久久久久久久不卡| 日韩最新免费不卡| 亚洲一区二区少妇| 中文字幕精品久久久久| 在线播放国产一区二区三区| 国产日韩精品在线观看| 国语自产精品视频在线看抢先版图片| 色久欧美在线视频观看| 国产91网红主播在线观看| zzijzzij亚洲日本成熟少妇| 国产精品h在线观看| 亚洲精品电影在线| 毛片精品免费在线观看| 国产一区二区三区毛片| 亚洲图片制服诱惑| 成人写真福利网| 91av在线播放视频| 中文字幕久久精品| 日韩免费观看在线观看| 久久精品国产99国产精品澳门| 亚洲精品丝袜日韩| 国产免费一区视频观看免费| 欧美精品中文字幕一区| 欧美日韩亚洲视频| 欧美日韩国产丝袜美女| 国产精品美女网站| 亚洲男人天堂九九视频| 国产精品狼人色视频一区| 色综合久久久888| 日韩不卡中文字幕| 日韩中文字幕免费视频| 国产美女久久精品| 日韩欧美高清在线视频| 51精品国产黑色丝袜高跟鞋| 久久国产精彩视频| 91福利视频在线观看| 免费91麻豆精品国产自产在线观看| 国产成人激情小视频| 亚洲韩国日本中文字幕| 成人综合国产精品| 欧美日韩在线视频一区二区| 操人视频在线观看欧美| 91精品国产自产在线观看永久| 91chinesevideo永久地址| 午夜精品美女自拍福到在线| 国产精品99久久久久久久久久久久| 国产精品视频中文字幕91| 欧美伊久线香蕉线新在线| 久久久久亚洲精品国产| 成人在线一区二区| 国产一区二区三区四区福利| 国产精品福利久久久|