版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
VB程序設計基礎:窗體屬性
程序設計是指為計算機編制一些軟件和程序。學習的目的是理解計算機的工作方式和運
行的方式。
VB是運行在Windows視窗操作系統上,設計程序的思想在于在窗口中放置對象和針對
對象設計代碼。
(―)啟動VB:單擊“開始”一“程序"一"MicrosoftVisualBasic6.0中文版”
選擇“標準EXE”,單擊“打開”進入窗口。
(二)VB窗口
1、標題欄:在最上面藍色標題是“工程1一.一”,是我們當前正在設計的程序,被稱
作“工程1”。
2、菜單欄:菜單欄在第二行,包含一組菜單,菜單中有各種命令,我們應該理解操作
計算機就是向計算機提供一系列的指令。
(1)“文件”菜單,要求記住“保存”命令,VB要保存兩次,注意保存文件到自己的
文件夾中。(本書中雙引號當中均是指操作命令)
(2)“視圖”菜單,顯示各個窗口,如果一個窗口找不著了,就到這個菜單中找出來。
(3)“運行”菜單,第個“啟動”命令要記住,可以運行我們的程序。
3、工具欄:第三行是工具欄,工具欄是-?些最常用的命令,而且是用圖標表示的,因
而便于形象記憶和操作,要求記住“啟動”按鈕。(在視窗操作系統中,我們不僅要會認識
文字說明,還要特別留意圖標含義。)
4、工作區(qū):工作區(qū)占據窗口的絕大部分,從左向右包括工具箱、窗體、和屬性窗口。
(1)工具箱:在工作區(qū)的左側,包含許多編程用到的基本對象,被稱作“控件”。
(2)窗體:中間的灰色的窗口,是我們設計的程序的基本框架,所有的對象都放在這
個窗口當中。
(3)小窗口:在右側有三個縱向排列的窗口。
①最上面是工程窗口,上邊有三個按鈕,中間的按鈕是顯示對象窗口;
②下面是屬性窗口,屬性是一個對象的名稱、大小、顏色等等;
③最下面是布局窗口,里面顯示程序運行時的位置,拖動里面的小框可以改變程序的顯
示位置。
4、下面修改窗體的屬性,在右側的屬性窗口中找到Caption項,在它右邊的格子里點
一下鼠標左鍵,然后輸入“窗體”兩個字,觀察一下工作區(qū)中的窗體的標題是否已經改變,
Caption是設置一個應用程序的窗口標題,再在屬性窗口中找到BackColor項,單擊右邊格
子里的黑色三角按鈕上點擊一下鼠標左鍵,在彈出的面板上邊的一行文字中選擇“調色板”
標簽,選中淺紫色,觀察一下工作區(qū)中間的窗體的變化。單擊工具欄上的啟動按鈕,運行一
下我們的程序,看一下這個窗口,還不錯吧?
單擊“關閉”按鈕(或者Alt+F4),回到窗體中,在屬性窗口中找到Icon項,在右邊
的格子里點一下鼠標左鍵再點一下三個小點,在彈出的“加戮圖標”對話框中,點擊“向上”
按鈕退一步,再選擇打開Common,再選擇打開Graphics,再選擇打開Icon,再打開Mise,
在里面找一個圖標,單擊打開,再看一下工作區(qū)中的窗體的標題欄左側是否有一個圖標。單
擊“啟動”按鈕,運行一下程序,然后最小化,看一下任務欄上的圖標找到我們的程序,單
擊一下圖標恢復窗口。
關閉程序回到屬性窗口,找到Picture屬性,在右邊的格子里單擊一下鼠標左鍵,打開
“加載圖片”對話框,找一幅較大的背景圖片打開,觀察一下工作區(qū)窗體的變化。單擊“啟
動”按鈕運行一下程序,很漂亮的一個窗口是吧?
關閉程序,同樣再修改Font屬性和ForeColor屬性,屬性都是按照字母排序的,在最
后的WindowState屬性中選擇2—Maxing最大化,運行一下程序看一下效果。
如何保存自己的程序呢?方法是在“文件”菜單中選擇“保存工程”或者點擊工具欄上
的磁盤按鈕,保存文件到自己的文件夾(如果沒有就新建一個)以“MyForm”為文件名(如
果能用中文就輸入漢字“窗體”)。保存兩次,一次是窗體,另一次是工程。
保存好的程序要編譯成可以在Windows下運行的可執(zhí)行程序,方法是選擇“文件”菜單
中的“生成工程l.exe”命令,以“窗體”為文件名保存文件到自己的文件夾,這個程序關
閉VB后也可以運行,退出VB,打開自己的文件夾,找到程序,運行一下看看。
本節(jié)主要講述了VB的基本窗口和窗體屬性,以后會經常用到。
API在VB中應用之技巧集錦
API在VB中應用之技巧集錦
API函數在VB中得到了充分的運用,同時也讓無數VB愛好者沉溺于其中。以下是筆者
幾年來收集整理的幾十個API函數在VB中應用的實例,現在寫出來與大伙分享,希望能對
大伙有所幫助。
1、如何讓窗體總在最前面?
*API函數聲明
DeclareFunctionSetWindowPosLib”user32"(ByVaihwndAsLong,ByVai
hWndlnsertAfterAsLong,ByVaixAsLong,ByVaiyAsLong,ByVaiexAsLong,ByVai
cyAsLong,ByVaiwFlagsAsLong)AsLong
注釋:常量聲明
PrivateConstSWP_NOSIZE=&H1
PrivateConstSWPNOMOVE=&H2
PrivateConstHWND_T0PM0ST=-1
PrivateConstHWD_N0T0PM0ST=-2
注釋:在某個form里寫:
SetWindowPosme.hWnd,WND_T0PM0ST,0,0,0,0,SWP_NOMOVE注釋:或下面
SetWindowPosme.hWnd,WND_T0PM0ST,0,0,0,0,SWP_NOSIZE
2、使用API函數sendmessage,獲得光標所在行和列。
Subgetcaretpos(byvalTextHwnd&,LineNo&,C0IN0&)
注釋:TextHwnd為TextBox的hWnd屬性值,LineNo為所在行數,ColNo為列數
dimi&,j&,k&注釋:獲取起始位置到光標所在位置字節(jié)數
i=SendMessage(TextHwnd,&HBO&,0,0)j=i/216注釋:確定所在行
LineNo=SendMessage(TextHwnd,&HC9&,j,0)+1
注釋:確定所在列
k=SendMessage(TextHwnd,&HBB&,-1,0)
ColNo=j-k+l
Endsub
3、如何以某種顏色填充某區(qū)域?
*API函數聲明
PrivateDeclareSubFloodFillLib〃gdi32"_(ByVaihDCAsLong,ByVaiXAsLong,
ByVaiYAs_Long,ByVaicrColorAsLong
注釋:設為此區(qū)域內任一點
注釋:Color為某種顏色
FloodFillPicturel.hDC,fillx,filly,Color
4、如何關閉計算機?
*API函數聲明
DeclareFunctionExitWindowsLib"User”(ByVaidwReturnCodeAsLong,ByVai
wReservedAsInteger)AsInteger
注釋:執(zhí)行
DimDUMMY
DUMMY=ExitWindows(0,0)
5、如何獲取Windows目錄和System目錄?
注釋:復制以下代碼到一模塊中
PublicDeclareFunctionGetWindowsDirectoryLib〃kernel32〃Alias
,zGetWindowsDirectoryAz,(ByVaiIpBufferAsString,ByVainSizeAsLong)AsLong
PublicDeclareFunctionGetSystemDirectoryLib〃kernel32〃Alias
z,GetSystemDirectoryA^(ByVaiIpBufferAsString,ByVainSizeAsLong)AsLong
注釋:在程序中調用
DimWindowsDirectoryAsString,SystemDirectoryAsString,xAsLong
WindowsDirectory=Space(255)
SystemDirectory=Space(255)
x=GetWindowsDirectory(WindowsDirectory,255)
x=GetSystemDirectory(SystemDirectory,255)
MsgBox"Windows的安裝目錄是:〃+WindowsDirectory+,z,系統目錄是:“+
SystemDirectory
6、如何建立簡單的超級連接?
*API函數聲明
PrivateDeclareFunctionShellExecuteLibz/shell32.dll〃Alias^ShellExecuteA〃
(ByVaihWndAsLong,ByVai1pOperationAsString,ByVaiIpFileAsString,ByVai
IpParametersAsString,ByVaiIpDirectoryAsString,ByVainShowCmdAsLong)As
Long
注釋:打開某個網址
ShellExecute0,"open","http:〃tyvb.126.com",vbNullString,vbNullString,3
注釋:給某個信箱發(fā)電子郵件
ShellExecutehwnd,"open","mailto:sst95@21.cn.com",vbNullString,
vbNullString,0
7、如何得知TextBox中文字所有的行數?
*API函數聲明
DeclareFunctionSendMessageLib〃us6r32〃Alias"SendMessageA”(ByVaihwndAs
Long,ByVaiwMsgAsLong,ByVaiwParamAsLong,1ParamAsAny)AsLong
PublicConstEMGETLINECOUNT=&HBA
注釋:在程序中調用
LineCnt=SendMessage(ctl.hwnd,EM_GETLINECOUNT,0,0)
注釋:LineCnt即為此TextBox的行數。
8、如何設置ListBox的水平卷動軸的寬度?
*API函數聲明
ConstLB_SETHOR1ZONTALEXTENT=&H194
PrivateDeclareFunctionSendMessageLib〃user32〃Alias"SendMessageA”(ByVai
hwndAsLong,ByVaiwMsgAsLong,ByVaiwParamAsLong,_1ParamAsAny)AsLong
注釋:調用
CallSendMessage(List1.hwnd,LB_SETHORIZONTALEXTENT,400,ByVai0&)
注釋:注意400是以象素為單位,你可以根據情況自行設定。
9、如何交換鼠標按鍵?
*API函數聲明
DeclareFunctionSwapMouseButton&Lib〃user32〃(ByVaibSwapaslong)
要交換鼠標按鍵,將bSwap參數設置為Trueo要恢復正常設置,將bSwap設置為False。
然后調用函數就可以交換和恢復鼠標按鍵了。
10、如何讓窗體的標題條閃爍以引起用戶注意?
在窗體中放一個Timer控件Timerl,設置其Inteval=200
*API函數聲明
PrivateDeclareFunctionFlashWindowLib"user32〃(ByVaihwndAsLong,ByVai
blnvertAsLong)AsLong
注釋:在窗體中寫下如下代碼:
PrivateSubTimerlTimer()
FlashWindowMe.hwnd,True
EndSub
11、怎樣找到鼠標指針的XY坐標?
*API函數聲明
TypePOINTAPI
xAsLong
yAsLong
EndType
DeclareFunctionGetCursorPosLib"user32〃(IpPointAsPOINTAPI)AsLong
調用:
GetCursorPosz
printz.x
printz.y
12、怎樣獲得和改變雙擊鼠標的時間間隔?
獲得鼠標雙擊間隔時間:
PublicDeclareFunctionGetDoubleClickTimeLib〃user32〃Alias
,zGetDoub1eC1ickTime()AsLong
獲得鼠標雙擊間隔時間:
DeclareFunctionSetDoubleClickTimeLib”user32〃Alias〃SetDoubleClickTime”
(ByVaiwCountAsLong)AsLong
注釋:注意:這種改變將影響到整個操作系統
以上兩個函數都可精確到毫秒級。
13、在程序中如何打開和關閉光驅門?
*API函數聲明如下:
PrivateDeclareFunctionmciSendStringLib“winmm.dll〃Alias〃mciSendStringA〃
(ByVaiIpstrCommandAsString,ByVaiIpstrReturnStringAsString,ByVai
uReturnLengthAsLong,ByVaihwndCallbackAsLong)AsLong
注釋:調用時的代碼如下
DimRetAsLong
DimRetStrAsString
注釋:打開光驅門
Ret=mciSendString(,/setCDAudiodooropen”,RetStr,0,0)
注釋:關閉光驅門
Ret=mciSendString("setCDAudiodoorclosed”,RetStr,0,0)
14、如何獲得Windows啟動方式?
在Forml中加入一個CommandButton、一個Label并加入如下代碼:
PrivateDeclareFunctionGetSystemMetricsLib〃user32〃(ByVainlndexAsLong)
AsLong
ConstSM_CLEANB00T=67
PrivateSubCommandl_Click()
SelectCaseGetSystemMetrics(SM_CLEANB00T)
Case1
Label1=〃安全模式.〃
Case2
Label1=〃支持網絡的安全模式.〃
CaseElse
Label1="Windows運行在普通模式.〃
EndSelect
EndSub
15、怎樣使Ctrl-Alt-Delete無效?
*API函數聲明
PrivateDeclareFunctionSystemParametersInfoLib〃user32〃Alias
^SystemParametersInfoAz,(ByVaiuActionAsLong,ByVaiuParamAsLong,ByVaiIpvParam
AsAny,ByVaifuWinlniAsLong)AsLong
編寫如下函數:
SubDisableCtrlAltDelete(bDisabledAsBoolean)
DimXAsLong
X=SystemParametersInfo(97,bDisabled,CStr(1),0)
EndSub
使Ctrl-Alt-Delete無效:
CallDisableCtrlAltDelete(True)
恢復Ctrl-Alt-Delete:
CallDisableCtrlAltDelete(False)
16、如何移動沒有標題欄的窗口?
我們一般是用鼠標按住窗口的標題欄,然后移動窗口,當窗口沒有標題欄時,我們可以
用下面的方法來移動窗口:
*API函數聲明:
DeclareFunctionReleaseCaptureLib〃user32〃()AsLongDeclareFunction
SendMessageLib〃user32〃Alias〃SendMessageA〃(ByVaihwndAsLong,ByVaiwMsgAs
Long,ByVaiwParamAsLong,1ParamAsAny)AsLong
PublicConstHTCAPTION=2
PublicConstWMNCLBUTTONDOWN=&HA1
在Form_MouseDown事件中:
PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,
YAsSingle)
ReleaseCaptureSendMessagehwnd,WM_NCLBUTTONDOWN,HTCAPTION,0&
EndSub
17、VB中如何使用延時函數?
*API函數聲明:
DeclareSubSleepLib"kernel32"(ByVaidw.MillisecondsAsLong)
調用:
注釋:延時1秒
CallSleep(1000)
18、調用修改屏幕保護口令的窗口:
PrivateDeclareFunctionPwdChangePasswordLib〃mpr〃Alias
z,PwdChangePasswordA,z(ByVaiIpcRegkeynameAsString,ByVaihwndAsLong,ByVai
uiReservedlAsLong,ByVaiuiReserved2AsLong)AsLong
調用:
CallPwdChangePassword("SCRSAVE〃,Me.hwnd,0,0)
19、使Windows開始屏幕保護:
*API函數聲明
PrivateDeclareFunctionSendMessageLib〃user32〃
Alias"SendMessageA”(ByVaihWndAsLong,ByVaiwMsg
AsLong,ByVaiwParamAsLong,ByVai1ParamAsLong)
AsLong
ConstWM_SYSCOMMAND=&H112&
ConstSC_SCREENSAVE=&HF140&
注釋:調用
DimresultAsLong
result=SendMessage(Forml.hWnd,WM_SYSCOMMAND,SC_SCREENSAVE,0&)
20、如何改變Windows桌面背景?
*API函數聲明
ConstSPI_SETDESKWALLPAPER=20
ConstSPIF_UPDATEINIFILE=&H1
DeclareFunctionSystemParametersInfoLib"user32〃Alias
^SystemParametersInfoA'7(ByVaiuActionAsLong,ByVaiuParamAsLong,ByVaiIpvParam
AsAny,ByVaifuWinlniAsLong)AsLong
注釋:調用
CallSystemParametersInfo(SPI_SETDESKWALLPAPER,0,,zC:windowsClouds.bmp,z,
SPIFUPDATEINIFILE)
21、怎樣確定系統是否安裝了聲卡?
*API函數聲明:
DeclareFunctionwaveOutGetNumDevsLib〃winmm.dll"Alias,,waveOutGetNumDevs,/
()AsLong
代碼如下:
DimiAsInteger
i=waveOutGetNumDevs()
Ifi>0ThenMsgBox"你的系統可以播放聲音。vblnformation,〃聲卡檢測〃
Else
MsgBox〃你的系統不能播放聲音。vblnformation,〃聲卡檢測〃
EndIf
22、如何找到CD-ROM驅動器的盤號?
下面的函數將檢查你計算機所有的驅動器看是否是CD-ROM,如果是就返回驅動器號,
如果沒有就返回空字符
PublicFunctionGetCDROMDriveOAsString
DimITypeAsLong,iAsInteger,tmpDriveasString,foundasBoolean
OnErrorGoToerrL
Fori=0To25
tmpDrive=Chr(65+i)&〃:〃
IType=GetDriveType(tmpDrive)注釋:Win32API函數
If(IType=DR1VE_CDROM)Then注釋:Win32API常數
found=True
ExitFor
EndIf
Next
IfNotfoundThentmpDrive=〃〃
BI_GetCDROMDrive=tmpDrive
exitFunction
errL:msgboxerror$
EndFunction
23、如何將文件放入回收站?
**API函數聲明
PublicTypeSHFILEOPSTRUCT
hwndAsLong
wFuncAsLong
pFromAsString
pToAsString
fFlagsAsInteger
fAnyOperationsAbortedAsLong
hNameMappingsAsLong
IpszProgressTitleAsLong
EndType
PublicDeclareFunctionSHFileOperationLib_"shell32.dll"Alias
"SHFileOperationA"(IpFileOpAsSHFILEOPSTRUCT)AsLong
PublicConstFO_DELETE=&H3
PublicConstFOF_ALLOWUNDO=&H40
注釋:調用
DimSHopAsSHFILEOPSTRUCT,strFileasstring
WithSHop
.wFunc=FODELETE
.pFrom=strFile+Chr(0)
.fFlags=F0F_ALL0WUND0
EndWith
24、VB中如何使用未安裝的字體?
DeclareFunctionAddEontResourceLib〃gdi32"Alias"AddFontResourceA”(ByVai
IpFileNameAsString)AsLong
DeclareFunctionRemoveFontResourceLib〃gdi32〃Aliasz,RemoveFontResourceA,z
(ByVaiIpFileNameAsString)AsLong
增加字體:
DimIResultAsLong
IResult=AddFontResource(,zc:myAppmyFont.ttfz,)
刪除字體:
DimIResultAsLong
IResult=RemoveFontResourceCc:myAppmyFont.ttf,z)
MCI播放器在VB中實現
'用MCI命令來實現多媒體的播放功能
'下面的內容幾乎有播放器軟件的各種功能,你只是引用這些函數就能做出一個播放器
來
PublicDeclareFunctionmciSendStringLib"winmm.dll〃Alias“mciSendStringA”
(ByVaiIpstrCommandAsString,ByVaiIpstrReturnStringAsString,ByVai
uReturnLengthAsLong,ByVaihwndCallbackAsLong)AsLong
PublicDeclareFunctionmciGetDevicelDLib〃winmm.dll〃Alias"mciGetDevicelDA”
(ByVaiIpstrNameAsString)AsLong
PublicDeclareFunctionwaveOutGetVolumeLib〃winmm.dll〃(ByVaiuDevicelDAs
Long,IpdwVolumeAsLong)AsLong
PublicDeclareFunctionGetWindowLongLib〃user32〃Alias“GetWindowLongA”
(ByVaihwndAsLong,ByVainlndexAsLong)AsLong
PublicDeclareFunctionCallWindowProcLib〃user32'Aliasz,Cal1WindowProcAz/
(ByVaiIpPrevWndFuncAsLong,ByVaihwndAsLong,ByVaiMsgAsLong,ByVaiwParam
AsLong,ByVai1ParamAsLong)AsLong
PublicDeclareFunctionSetWindowLongLib〃user32〃Alias〃SetWindowLongA〃
(ByVaihwndAsLong,ByVainlndexAsLong,ByVaidwNewLongAsLong)AsLong
PublicDeclareFunctionGetShortPathNameLib,,kernel32,,Alias
/zGetShortPathNameA/z(ByVaiIpszLongPathAsString,ByVaiIpszShortPathAsString,
ByVaicchBufferAsLong)AsLong
EnumPlayTypeName
File=1
CDAudio=2
VCD=3
RealPlay=4
EndEnum
DimPlayTypeAsPlayTypeName
EnumAudioSource
AudioStereo=0'"stereo”
AudioLeft=1'〃:left”
AudioRight=2'"right”
EndEnum
DimhWndMusicAsLong
DimprevWndprocAsLong
'打開MCI設備,urlStr為網址,傳值代表成功與否
PublicFunctionOpenURL(urlStrAsString,OptionalhwndAsLong)AsBoolean
OpenMusic=False
DimMciCommandAsString
DimDriverlDAsString
CloseMusic
'MCI命令
DriverlD=GetDriverlD(urlStr)
IfDriverlD="RealPlayer"Then
PlayType=RealPlay
ExitFunction
EndIf
MciCommand="open〃&urlStr&〃type〃&DriverlD&〃aliasNOWMUSIC”
IfDriverlD=〃AVIVideo〃OrDriverlD=〃MPEGVideo〃OrDriverlD=〃MPEGVideo2〃
Then
Ifhwnd<>0Then
MciCommand=MciCommand+〃parent〃&hwnd&〃stylechild”
hWndMusic=GetWindowHandle
prevWndproc=GetWindowLong(hWndMusic,-4)
SetWindowLonghWndMusic,-4,AddressOfWndProc
Else
MciCommand=MciCommand+〃styleoverlapped〃
EndIf
EndIf
Reflnt=meiSendString(MeiCommand,vbNull,0,0)
mciSendString"setNOWMUSICtimeformatmilliseconds”,vbNullString,0,0
IfReflnt=0ThenOpenMusic=True
EndFunction
'打開MCI設備,FILENAME為文件名,傳值代表成功與否
PublicFunctionOpenMusic(FileNameAsString,OptionalhwndAsLong)AsBoolean
OpenMusic=False
DimShortPathNameAsString*255
DimRefShortNameAsString
DimReflntAsLong
DimMciCommandAsString
DimDriverlDAsString
CloseMusic
'獲取短文件名
GetShortPathNameFileName,ShortPathName,255
RefShortName=Left(ShortPathName,InStr(1,ShortPathName,Chr(0))-1)
'MCI命令
DriverlD=GetDriverlD(RefShortName)
IfDriverlD="RealPlayer"Then
PlayType=RealPlay
ExitFunction
EndIf
MeiCommand="open〃&RefShortName&〃type〃&DriverlD&〃aliasNOWMUSIC”
IfDriverlD=〃AVIVideo〃OrDriverlD="MPEGVideo"OrDriverlD="MPEGVideo2”
Then
Ifhwnd<>0Then
MeiCommand=MeiCommand+〃parent〃&hwnd&〃stylechild”
hWndMusic=GetWindowHandle
prevWndproc=GetWindowLong(hWndMusic,-4)
SetWindowLonghWndMusic,-4,AddressOfWndProc
Else
MeiCommand=MeiCommand+〃styleoverlapped〃
EndIf
EndIf
Reflnt=mciSendString(MciCommand,vbNull,0,0)
mciSendString"setNOWMUSICtimeformatmilliseconds”,vbNullString,0,0
IfReflnt=0ThenOpenMusic=True
EndFunction
FunctionWndProc(ByVaihwndAsLong,ByVaiMsgAsLong,ByVaiwParamAsLong,
ByVai1ParamAsLong)AsLong
IfMsg=&H202Then
MsgBox〃0K〃
EndIf
WndProc二CalIWindowProc(prevWndproc,hwnd,Msg,wParam,1Param)
EndFunction
'根據文件名,確定設備
PublicFunctionGetDriverID(ffAsString)AsString
SelectCaseUCase(Right(ff,3))
Case〃IDI〃
GetDriverlD="Sequencer”
Case〃WAV〃
GetDriverlD="Waveaudio”
Case〃ASF〃,〃ASX〃,〃IVF〃,〃LSF〃,〃LSX〃,〃P2V〃,〃WAX〃,〃WVX〃,〃WMA〃,〃WMX〃,
GetDriverlD二〃MPEGVideo2〃
Casez,.RM〃,〃RAM〃,〃.RA〃
GetDriverlD="RealPlayer”
CaseElse
GetDriverlD=〃MPEGVideo〃
EndSelect
EndFunction
'播放文件
PublicFunctionPlayMusicOAsBoolean
DimRefIntAsLong
PlayMusic=False
Reflnt=mciSendString(,,playNOWMUSIC”,vbNul1,0,0)
IfReflnt=0ThenPlayMusic=True
EndFunction
'獲取媒體的長度
PublicFunctionGetMusicLengthOAsLong
DimRefStrAsString*80
mciSendString"statusNOWMUSIClength”,RefStr,80,0
GetMusicLength=Vai(RefStr)
EndFunction
'獲取當前播放進度
PublicFunctionGetMusicPos()AsLong
DimRefStrAsString*80
mciSendString"statusNOWMUSICposition”,RefStr,80,0
GetMusicPos=Vai(RefStr)
EndFunction
'獲取媒體的當前進度
PublicFunctionSetMusicPos(PositionAsLong)AsBoolean
DimReflntAsLong
SetMusicPos=False
Reflnt=mciSendString(,zseekNOWMUSICto〃&Position,vbNull,0,0)
IfReflnt=0ThenSetMusicPos=True
EndFunction
'暫停播放
PublicFunctionPauseMusic()AsBoolean
DimReflntAsLong
PauseMusic=False
Reflnt=mciSendString(,zpauseNOWMUSIC”,vbNull,0,0)
IfReflnt=0ThenPauseMusic=True
EndFunction
'關閉媒體
PublicFunctionCloseMusic()AsBoolean
DimReflntAsLong
CloseMusic=False
Reflnt=mciSendString("closeNOWMUSIC”,vbNull,0,0)
IfReflnt=0ThenCloseMusic=True
EndFunction
’設置聲道
PublicFunctionSetAudioSource(sAudioSourceAsAudioSource)AsBoolean
DimReflntAsLong
DimstrSourceAsString
SelectCasesAudioSource
Case1:strSource=〃left〃
Case2:strSource="right”
Case0:strSource="stereo”
EndSelect
SetAudioSource=False
Reflnt=mciSendString("setaudioNOWMUSICsourceto"&strSource,vbNul1,0,
0)
IfReflnt=0ThenSetAudioSource=True
EndFunction
'全屏播放
PublicFunctionPlayFullScreenOAsBoolean
DimReflntAsLong
PlayFullScreen=False
Reflnt=mciSendString(,zplayNOWMUSICfullscreen”,vbNull,0,0)
IfReflnt=0ThenPlayFullScreen=True
EndFunction
’設置聲音大小
PublicFunctionSetVolume(VolumeAsLong)AsBoolean
DimReflntAsLong
SetVolume=False
Reflnt=mciSendString(,zsetaudioNOWMUSICvolumeto"&Volume,vbNull,0,0)
IfReflnt=0ThenSetVolume=True
EndFunction
’設置播放速度
PublicFunctionSetSpeed(SpeedAsLong)AsBoolean
DimReflntAsLong
SetSpeed=False
Reflnt=mciSendStringCzsetNOWMUSICspeed〃&Speed,vbNull,0,0)
IfReflnt=0ThenSetSpeed=True
EndFunction
'靜音True為靜音,FALSE為取消靜音
PublicFunctionSetAudioOnOff(AudioOffAsBoolean)AsBoolean
DimReflntAsLong
DimOnOffAsString
SetAudioOff=False
IfAudioOffThenOnOff="off"ElseOnOff=〃on〃
Reflnt=mciSendString("setaudioNOWMUSIC〃&OnOff,vbNull,0,0)
IfReflnt=0ThenSetAudioOff=True
EndFunction
是否有畫面True為有,FALSE為取消
PublicFunctionSetWindowShow(WindowOffAsBoolean)AsBoolean
DimReflntAsLong
DimOnOffAsString
SetWindowShow=False
IfWindowOffThenOnOff="show"ElseOnOff="hide"
Reflnt=mciSendString(^windowNOWMUSICstate〃&OnOff,vbNull,0,0)
IfReflnt=0ThenSetWindowShow=True
EndFunction
'獲得當前媒體的狀態(tài)是不是在播放
PublicFunctionIsPlayingOAsBoolean
DimsiAsString*255
mciSendString"statusNOWMUSICmode”,si,Len(sl),0
IfLeft(si,7)="playing"OrLeft(si,2)=〃播放〃Then
IsPlaying=True
Else
IsPlaying=False
EndIf
EndFunction
'獲得播放窗口的handle
PublicFunctionGetWindowHandle0AsLong
DimRefStrAsString*160
mciSendString"statusNOWMUSICwindowhandle”,RefStr,80,0
GetWindowHandle=Vai(RefStr)
EndFunction
獲取DevicelD
PublicFunctionGetDevicelDOAsLong
GetDevicelD二mciGetDeviceID(z,NOWUSIC,z)
EndFunction
TextBox使用技巧
TextBox使用技巧
在使用VisualBasic開發(fā)應用程序時,TextBox控件是最常用的(特別
對于數據庫程序),以下是筆者在開發(fā)應用程序時的一些技巧,希望對愛好
VB的朋友有幫助。
1、限制TextBox只能輸入數字。
我們只需要判斷KeyAscii是否在48-57之間就可以達到目的,但我們還會
要用到退格鍵的,所以必須加上KeyAscii<>8。
PrivateSubTextl_KeyPress(KeyAsciiAsInteger)
IfKeyAscii<>8AndKeyAscii<48OrKeyAscii>57Then
Beep
KeyAscii=0
EndIf
EndSub
2、自動將輸入的英文轉為小寫/大寫。
如果在KeyPress事件里使用Ucase$和Lcase$,那么當你輸入abc時,Text
Box里的結果會是CBA(具體原因這里不多說),我們只好判斷它的KeyAscii,
剛好大寫與小寫之間是相差32,所以……看下面的程序。
'大寫轉小寫
PrivateSubTextl_KeyPress(KeyAsciiAsInteger)
IfKeyAscii>=65AndKeyAscii<=90Then
KeyAscii=KeyAscii+32
EndIf
EndSub
'小寫轉大寫
PrivateSubText2KeyPress(KeyAsciiAsInteger)
IfKeyAscii>=97AndKeyAscii<=122Then
KeyAscii=KeyAscii-32
EndIf
EndSub
3、使兩個TextBox同步的方法。
這種方法怎么解釋呢?第二個等于第一個就行了:-)0
PrivateSubTextlKeyPress(KeyAsciiAsInteger)
Text2=Textl
EndSub
4、按下Enter鍵之后,光標自動移到下一個控件。
當KeyAscii為13(回車)時,Send一個Tab鍵給它就行了。
PrivateSubTextlKeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then
SendKeys”{tab}”
KeyAscii=0
EndIf
EndSub
5、當光標移到TextBox時自動選定其中的整串文字。
當對象得到焦點時,從最前面開始選取(SelStartR),選取的
長度為文本長度(Len(Textl))。
PrivateSubTextlGotFocus()
Textl.SelStart=0
Textl.SelLength=Len(Textl)
EndSub
6、當光標移到TextBox時改變其文字顏色。
當TextBox得到焦點時(GotFocus)改變文本顏色,失去焦點時(
LostFocus)將還原文本顏色,ForeColor是設置文本的前景色。
'當光標移到TextBox時文字設置為紅色
PrivateSubTextl_GotFocus0
Textl.ForeColor=vbRed
EndSub
'當光標移出TextBox時文字設置為黑色
PrivateSubTextl_LostFocus()
Textl.ForeColor=vbBlack
EndSub
以上代碼只要將Textl.ForeColor改為Textl.BackColor即可改變TextBox
的背景色。
VB2005實現新一代控制臺應用程序開發(fā)
計算機用戶經常把控制臺應用程序作為一種“遺物”來看待,但是它們仍然還作為系統管理
員的非常喜歡的部分,而且還是高手用戶的“工具箱”之一。另外,當你需要大量重復的
腳本操作,當然還有可能的更復雜的操作時,都會用到這種控制臺應用程序。
在VisualBasic的早期版本中基本沒有為創(chuàng)建控制臺應用程序提供多大支持。而且,
盡管VB6及其早期版本能夠創(chuàng)建控制臺應用程序;但是,這不是一種簡單的或直接的過程。
在VB6中創(chuàng)建一個控制臺應用程序必須進行Win32API調用;即使如此,你也不能控制光
標位置或文本的顏色,而且在很大程度上僅能被限制進行從左到右和從上到下的編碼。
如今,VB.net引入了新的控制臺應用程序特征。它不僅在“NewProject..."對話框
中提供一種控制臺應用程序工程,而且最重要的是,它還提供了一個控制臺(Console)對
象。因此,你不必再“困擾”于Win32API了。然而,你還是被限于“從左到右和從上到
下”的編碼。但是,VB.net仍然缺乏用于改變光標或文本的位置或顏色的方法或屬性,還
有其它許多更高級的特征。
一、在VB2005中的新型控制臺應用程序特征
基于早期VB.NET版本中所提供的Console對象,如今的VB2005又為控制臺應用程序
增加了許多優(yōu)秀的特征。下面列出的僅是VB2005中更為激動人心的功能中的一部分:
?清除控制臺窗口
?得到并設定光標位置和大小
?得到并設定窗U高度和寬度
?得到并設定前景和背景顏色
?選擇并在控制臺窗口內移動部分文本
本文中的其它部分將詳細地分析一個控制臺應用程序的創(chuàng)建過程,以便展示上面這些特
征的使用。
二、實例應用程序一DirCopy
我經常從控制臺窗口中實現把文件從一個目錄復制到另一個目錄。當我復制?個含有大
量文件的目錄時,我經常希望得到一些提示一復制進程完成的怎么樣了?復制快結束了還是
再等待一會?為了實現這一問題,我構建了一個控制臺應用程序,它能夠在控制臺窗口內顯
示一個進度條來以圖形化顯示復制進度。
三、定義功能
為了簡化本文中的演示目的,DirCopy將使用兩個命令行參數:?個源目錄和一個目的
目錄。然后,它把所有文件從源目錄復制到目的目錄。注意,這個簡單的程序無法復制源目
錄下的子目錄。
首先,我編寫一個DisplayUsage子程序。如果使用太多或太少的命令行參數調用
DirCopy,那么它將調用DisplayUsage,然后結束。
下列是DisplayUsage子
程序的代碼:
PrivateSubDisplayUsage0DimoriginalForegroundColorAsConsoleColor=
Console.ForegroundColorConsole.Clear()Console.ForegroundColor=
ConsoleColor.GreenConsole.WriteLine(z,DirCopy1.0")
Console.WriteLine("WrittenbyJoshFitzgerald")Console.WriteLine(New
StringConsole.WindowWidth))Console.WriteLine(/?DirCopywillcopyallof
thefilesfromthesourcefoldertothe")Console.WriteLine(^destinationfolder.
Whilethefilesarecopying,aprogressbar")Console.WriteLine("willdisplaythe
percentcomplete.,z)Console.WriteLine()Console.WriteLine(z,Ifadirectory
namecontainsspaces,encloseitindoublequotes.〃)Console.WriteLine()
Console.Write(^Example:〃)Console.ForegroundColor=ConsoleColor.Magenta
Console.WriteLine(z/DirCopyC:\MyFolderC:\MyNewFolder")
Console.ForegroundColor=ConsoleColor.GreenConsole.WriteLine()
Console.Write(z,Example:〃)Console.ForegroundColor=ConsoleColor.Magenta
Console.WriteLine(,zDirCopy〃"C:\MyFolder""""C:\MyNewFolder""")
Console.ForegroundCo1or=originalForegroundColorEndSub
該子程序做的第?事情是創(chuàng)建?個變量originalForegroundColor,然后它存儲
Console.ForegroundColor的值。在子程序的最后,代碼把Console.ForegroundColor屬性
設置回originalForegroundColor。當你分析這部分代碼時,你會注意到,在每個修改前景
或背景顏色的子程序中都是這樣操作的。在實際運行DirCopy之前,我想確保DirCopy總是
讓控制臺顯示相同的顏色。
DisplayUsage做的卜一件事情是,使用Console.Clear方法清除控制臺屏幕。這是在
VB2005中的新方法之一;這樣以來,程序員可以很容易地擁有一個干凈的控制臺窗口。
我想讓幫助文本顯眼一點,為此,我把ForegroundColor屬性設置為綠色。然后,我使
用Writeline和Write方法把幾行文本輸出到屏幕上。在描述的最后,我包括了一些怎樣運
行DirCopy的示例。我想使得這些示例突出一些;因此,我把ForegroundColor設置為品紅
色。
VB6.0中對ADO對象的一些常見操作與應用
1:問題的提出
在VisualBasic中,常用的數據訪問接口有下列三種:數據庫訪問對象(DAO,Data
AccessObject),遠程數據庫對象(RDO,RemoteDataObject)和ActiveX數據對象(ADO,
ActiveXDataObject)。數據庫訪問技術一直在不斷進步,而這三種接口的每一種都分別
代表了該技術的不同發(fā)展階段。最新的是A
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026廣東清遠市連州市人民檢察院招聘專項工作聘員5人備考考試題庫及答案解析
- 2026新余市12345政務服務便民熱線招聘5人考試備考試題及答案解析
- 涪城公安招聘24名警務輔助人員備考考試題庫及答案解析
- 2026河南信陽市潢川縣應急管理局招聘全日制公益性崗位2人備考考試題庫及答案解析
- 2026山西交通控股集團有限公司所屬監(jiān)理集團社會招聘30人考試參考題庫及答案解析
- 2026年哈爾濱市香坊第二幼兒園招聘保育員1人筆試備考題庫及答案解析
- 2026年上半年黑龍江事業(yè)單位聯考省衛(wèi)生健康委員會招聘125人考試備考題庫及答案解析
- 2026陜西西北工業(yè)大學材料學院功能密封材料團隊招聘1人參考考試題庫及答案解析
- 2026年度東營市東營港經濟開發(fā)區(qū)事業(yè)單位公開招聘工作人員(4人)參考考試題庫及答案解析
- 2026山東事業(yè)單位統考濟南市中區(qū)招聘初級綜合類崗位63人備考考試試題及答案解析
- 企業(yè)員工的職業(yè)道德培訓內容
- 2025年度法院拍賣合同模板:法院拍賣拍賣保證金退還合同
- 青少年無人機課程:第一課-馬上起飛
- 化工廠用電安全講課
- 部編版九年級語文上冊全冊書教案教學設計(含教學反思)
- 2023年魯迅美術學院附屬中學(魯美附中)中考招生語文試卷
- 工廠網絡設計方案
- 福建省泉州市2023-2024學年高一上學期期末教學質量監(jiān)測政治試題
- 日文常用漢字表
- QC003-三片罐206D鋁蓋檢驗作業(yè)指導書
- 高血壓達標中心標準要點解讀及中心工作進展-課件
評論
0/150
提交評論