路徑問題
很多程序員在打開文件、調用程序時喜歡使用絕對文件路徑,結果在另一台計算機上運行時便會遇到路徑不對或需要重新拷貝到該目錄的問題。其實,只要使用相對路徑,就完全可以避免這個問題。在Windows下,某個程序一旦運行,除非特別指定了工作目錄,一般該程序文件所在的目錄就是工作目錄,其他目錄可以用工作目錄為參照系。在編程中"App.Path"即為當前工作目錄。另外,用安裝程序向導制作安裝盤時,只要在步驟"文件小結"中添加某文件時指定"文件詳細資料"的路徑即可安裝該文件到指定的目錄下。
生成透明窗體
利用API函數可做出透明窗體。以下為一種方法:
Me.AutoRedraw=True
hBitmap=CreateCompatibleBitmap(Me.hdc,0,0)
SelectObjectMe.hdc,hBitmap
調用BitbltAPI函數
在編程中我們經常遇到需要拷貝圖形的問題,一般利用API函數Bitblt或Stretchblt(後者可縮放).
DeclareFunctionBitBltLib"gdi32"Alias"BitBlt"(ByValhDestDC
AsLong,ByValxAsLong,ByValyAsLong,ByValnWidthAsLong,
ByValnHeightAsLong,ByValhSrcDCAsLong,ByValxSrcAsLong,
ByValySrcAsLong,ByValdwRopAsLong)AsLong
DeclareFunctionStretchBltLib"gdi32"Alias"StretchBlt"(ByVal
hdcAsLong,ByValxAsLong,ByValyAsLong,ByValnWidthAsLong,
ByValnHeightAsLong,ByValhSrcDCAsLong,ByValxSrcAsLong,
ByValySrcAsLong,ByValnSrcWidthAsLong,ByValnSrcHeightAs
Long,ByValdwRopAsLong)AsLong
當所拷貝的圖形為畫圖語句所創建時,有時就會出現拷貝不上去的毛病,這時不用著急,請確認在拷貝之前對所畫的圖形進行刷新,即調用Refresh方法.
Findwindow()函數用法
要使用此函數,先從APIVIEW中拷貝如下的FindWindow()函數的聲明:
DeclareFunctionFindWindowLib"user32"Alias"FindWindowA"(ByVal
lpClassNameAsString,ByVallpWindowNameAsString)AsLong
這個函數有兩個參數,第一個是要找的窗口的類,第二個是要找的窗口的標題。在搜索的時候不一定兩者都知道,但至少要知道其中的一個。有的窗口的標題是比較容易得到的,所以應使用標題進行搜索。但有些軟件的標題是不固定的,如一些MDI程序,如果打開的文件不同,窗口標題也不同,這時使用窗口類來搜索就比較方便。如果找到了滿足條件的窗口,這個函數會返回該窗口的句柄,否則返回0。前面提到的VB的FindWindow()函數的聲明將兩個參數都定義為String類型,而在實際使用過程中,如果我們要忽略某個參數,應將該參數的定義由
AsString改為AsAny。這裡的AsAny相當於C語言中的強制類型轉換。例如,如果我們忽略窗口的類,應將定義修改如下:
DeclareFunctionFindWindowLib"user32"Alias"FindWindowA"(ByVal
lpClassNameAsAny,ByVallpWindowNameAsString)AsLong
然後,在調用時使用如下語句:
hwndCalc=FindWindow(0&,"abc")
這裡的0&就表示忽略類名。
防止運行多個實例
在程序開始部分添加如下代碼:
IfApp.PreInstance=Truethen
End
EndIf
為應用程序創建快捷方式
一般來說,軟件在安裝時都會創建一個快捷方式來方便用戶使用,我們也可為自己的應用程序在桌面上創建一個快捷方式。安裝MicrosoftVisualBasic4.0後,將會有一個SetupKit工具,其所帶的STKIT432.DLL文件中提供了一個API函數fCreateShellLink可供用戶來為應用程序創建快捷方式。下來舉例說明其使用方法。
在這裡我們為NOTEPAD創建一個快捷方式。
1、在VB4.0中打開一個新工程文件,在FORM1上添加一個命令按鈕Command1。
2、雙擊窗體,在GeneralDeclarations中輸入下面代碼:
PrivateDeclareFunctionfCreateShellLinkLib″STKIT432.DLL"″
(ByVal_lpstrFolderNameAsString,ByVallpstrLinkNameAsString,
ByVal_lpstrLinkPathAsString,ByVallpstrLinkArgsAsString)AsLong
3、雙擊Command1命令按鈕,寫如下代碼:
SubCommand1_Click()
DimlReturnAsLong
lReturn=fCreateShellLink("..。.Desktop",_"快捷方式Notepad","c:win95
otepad.exe","")
lReturn=fCreateShellLink("","快捷方式Notepad",_"c:win95
otepad.exe","")
lReturn=fCreateShellLink("startup","快捷方式Notepad",_"c:win95
otepad.exe","")
EndSub
4、按F5運行,單擊命令按鈕command1,如果沒有輸入錯誤的話,桌面上就會出現NOTEPAD的快捷方式。運行環境:VB4.0(32),中文WINDOWS95。->