程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> VB編程根底課教程

VB編程根底課教程

編輯:VB綜合教程

VB編程根底課教程。本站提示廣大學習愛好者:(VB編程根底課教程)文章只能為提供參考,不一定能成為您想要的結果。以下是VB編程根底課教程正文


VB編程根底課
什麼是API API文本旅游器 
API函數聲明 數據類型與"類型平安" 
常 數 結 構 
小 結 一些API函數集: 控件與音訊函數、硬件與零碎函數、菜單函數、繪圖函數 
什麼是API  
首先,有必要向大家講一講,什麼是API。所謂API原本是為C和C++順序員寫的。API說來說去,就是一種函數,他們包括在一個附加名為DLL的靜態銜接庫文件中。用規范的定義來講,API就是Windows的32位使用順序編程接口,是一系列很復雜的函數,音訊和構造,它使編程人員可以用不同類型的編程言語編制出的運轉在Windows95和Windows NT操作零碎上的使用順序。可以說,假如你已經學過VC,那麼API對你來說不是什麼問題。但是假如你沒有學過VC,或許你對Windows95的構造體系不熟習,那麼可以說,學習API將是一件很辛勞的事情。
假如你翻開WINDOWS的SYSTEM文件夾,你可以發現其中有很多附加名為DLL的文件。一個DLL中包括的API函數並不只是一個,數十個,甚至是數百個。我們能都掌握它嘛?答復能否定的∶不能夠掌握。但實踐上,我們真的沒必要都掌握,只需重點掌握Windos零碎自身自帶的API函數就可以了。但,在其中還該當拋開掉同VB自身自有的函數反復的函數。如,VB
的etAttr命令可以取得文件屬性,SetAttr可以設置文件屬性。對API來講也有對應的函數
GetFileAttributes和SetFileAttributes,功能都差不多。如此地一算,剩上去的也就5、600個。是的,也不少。但,我可以敢跟你說,只需你熟習地掌握100個,那麼你的編程程度比如今高出至多要兩倍。雖然人們說VB和WINDOWS具有親密的關系,但我以為,API更接近
WINDOWS。假如你學會了API,首要的播種便是對WINDOWS體系構造的看法。這個播種是來自不易的。
假如你不依托API會怎樣樣?我可以跟你說,絕大多是初級編程書本(當然這不是書的名程叫初級而初級的,而是在一開端的《本書內容》中指明《本書的閱讀對象是具有一定VB根底的讀者》的那些書),首先提的問題普通大都是從API開端。因而可以說,你不學API,你大約將停留在初級程度,無法往上攀爬。獨一的途徑也許就是向他人求救∶我快死了,快來救救我呀,這個怎樣辦,那個怎樣辦?煩不煩呢?當然,如今網上壞人太多(包括我在內,嘻嘻),但,你該當明白,經過此途徑,你的手中出不了好的作品。這是由於缺乏這些知識你的腦子裡基本行不成一種總體的設計構思。 
API文本旅游器 [前往]
很多API函數都是很長很長的。想看什麼樣子嗎?如下就是作為例子的API DdeClientTransaction函數∶
Declare Function DdeClientTransaction Lib "user32" (pData As Byte, ByVal cbData As Long, ByVal hConv As Long, ByVal hszItem As Long, ByVal wFmt As Long, ByVal wType As Long, ByVal dwTimeout As Long, pdwResult As Long) As Long
哇!這麼長?假如你歷來沒有接觸過API,我想你一定被嚇住了。你也許思索,該不該持續學下去。不過不要擔憂,僥幸的是Microsoft的設計家們為我們提供了有用的工具,這便是API
文本檢查器。
經過API文本檢查器,我們可以方便地查找順序所需求的函數聲明、構造類型和常數,然後將它復制到剪貼板,最後再粘貼到VB順序的代碼段中。在大少數狀況下,只需我們確定了順序所需求的函數、構造和常數這三個方面後,就可以經過對API文本旅游器的以上操作將他們參加到順序段中,從而順序中可以運用這些函數了。這些是學習API最根本的知識問題,它遠遠占不到API的龐大的體系內容。今後我們把精神糜費(這絕不是糜費)在哪裡呢?那就是∶
什麼時分運用什麼函數,什麼時分運用什麼構造類型,什麼時分運用什麼常數。 
API函數聲明 
讓我們回想一下。在VB中,如何聲明函數呢?我想,假如你正在看此文,那麼你相對可以答復得出這個問題。以下便是你應該很熟習的函數聲明∶
Function SetFocus (ByVal hwnd As Long) As Long
即,這行代碼定義了名為SetFocus的函數,此函數具有一個Long型數據類型的參數,並按值傳遞(ByVal),函數執行後將前往一個Long型數據。
API函數的聲明也很相似,如,API中的SetFocus 函數是這樣寫的∶
Declare Function SetFocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long) As Long
有點復雜了一些。是的,是復雜了點。但我可以通知你,除了這些多出來的局部,其他局部還是和你以前學到的東西是一樣的。函數在順序中的調用也是一樣。如:
Dim dl As Long
dl&=SetFoucs(Form1.Hwnd)
但,一點是清楚的。它不象你自己寫的順序那樣可以看到外面的運轉機理,也不像VB
自帶的函數那樣,可以從VB的聯機協助中查到其用法。獨一的辦法就是去學、查VB以外的材料。
Declare 語句用於在模塊級別中聲明對靜態鏈接庫 (DLL) 中內部進程的援用。對此,你只需記住任何API函數聲明都必需寫這個語句就可以了。
Iib 指明包括所聲明進程或函數的靜態鏈接庫或代碼資源。也就是說,它闡明的是,函數或進程從何而來的問題。
如在上例中,SetFocus Lib "user32"闡明 函數 SetFocus 來自 user32.dll文件。次要的dll靜態銜接庫文件有∶
user32.dll Windows管理。生成和管理使用順序的用戶接口。
GDI32.dll 圖形設備接口。發生Windows設備的圖形輸入
Kernel32.dll 零碎服務。訪問操作零碎的計算機資源。
留意,當DLL文件不在Windows或System文件夾中的時分,必需在函數中闡明其出處(
途徑)。如,SetFocus Lib "c:\Mydll\user32"
函數聲明中的Alias 是可選的。表示將被調用的進程在靜態鏈接庫 (DLL) 中還有另外的稱號(別名)。如,Alias "SetFocus" ,闡明SetFocus函數在User32.dll中的另外一個稱號是,
SetFocus。怎樣兩個名都一樣呢?當然,也可以是不同的。在很多狀況下,Alias闡明的函數名,即別名最後一個字符常常是字符A,如SetWindowsText函數的另一個稱號是
SetWindowsTextA,表示為Alias "SetWindowsTextA"。這個A只不過是設計家們的習氣的命名商定,表示函數屬於ANSI版本。
那麼,別名終究有什麼用處呢?從實際上講,別名提供了用另一個名子調用API的函數辦法。假如你指明了別名,那麼 雖然我們按Declare語句前面的函數來調用該函數,但在函數的實踐調用上是以別名作為首要選擇的。如,以下兩個函數(Function,ABCD)聲明都是無效的,他們調用的是同一個 SetFocus函數∶
Declare Function SetFocus Lib "user32" "SetFocus" (ByVal hwnd As Long) As Long
Declare ABCD SetFocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long) As Long
需求留意的是,選用Alias的時分,應留意別名的大小寫;假如不選用Alias 時的時分,函數名必需留意大小寫,而且不能改動。當然,在很多狀況下,由於函數聲明是直接從API
文本旅游器中拷貝過去的,所以這種錯誤的發作時機是很少的,但您有必要知道這一點。
最後提示你一句,API聲明(包括構造、常數)必需放在窗體或模塊的"通用(General Declarations)段。 
數據類型與"類型平安" 
API函數中運用的數據類型根本上和VB中的一樣。但作為WIN32的API函數中,不存在Integer
數據類型。另外一點是在API函數中看不到Boolean數據類型。 Variant數據類型在API函數中是以Any的方式呈現,如Data As Any。雖然其含義是允許恣意參數類型作為一個該API函數的參數傳遞,但這樣做存在一定的缺陷。其緣由是,這將會使得對目的參數的一切類型反省都會被封閉。這自然會給各品種型的參數調用帶來了發生錯誤的時機。
為了強迫執行嚴厲的類型反省,並防止下面提到的問題,一個方法是在函數裡運用下面提到到Alias技術。如對API函數 GetDIBits 可停止另外一種聲明辦法。如下∶
GetDIBits函數的原型∶
Public Declare Function GetDIBits Lib "gdi32" Alias "GetDIBits" (ByVal aHDC As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long
GetDIBits函數的改型∶
Public Declare Function GetDIBitsLong Lib "gdi32" Alias "GetDIBits" (ByVal aHDC As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Long, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long
經過本課程後面所學到的知識,我們曾經可以得知原型 GetDIBits函數也好,改型 GetDIBitsLong函數也好,實踐將調用的都是Alias所指定的 GetDIBits原函數。但你該當看到,兩者的區別在於,我們在改型的函數中強迫指定lpBits參數為Long形。這樣就會使得函數調用中發作的錯誤機率增加到了最小。這種辦法叫做"平安類型"聲明。
API函數中常常看到的數據類型有∶Long,String,Byte,Any....(也就這些吧。) 
常 數 
關於API常數來講,沒有什麼太特別的學問。請看VB中的以下代碼∶
Msg = MsgBox("您好", vbOKCancel)
我們知道, vbOKCancel這個常數的值等於1。對下面的代碼我們完全可以這樣寫,而不會影響代碼的功用∶
Msg = MsgBox("您好", 1)
但你大約不太情願選擇後一種,由於這會使得看懂代碼費力起來。這種辦法也被API采取了。只是API常數必需在事情之前做好初始化聲明VB自身是看不懂的。其內容依然來自與API
文本旅游器。詳細方式如上等等∶
Public Const ABM_ACTIVATE = &H6 
Public Const RIGHT_CTRL_PRESSED = &H4 
Public Const RPC_E_SERVER_DIED = &H80010007
Private Const RPC_S_CALL_FAILED_DNE = 1727& 
在常數的初始化中,有些順序運用Global,如Global Const ABM_ACTIVATE = &H6,但我以為Public完全可以替代它。過來我也用過Global,但如今不大用了。一會兒用這個,一會兒用那個,各順序之間不能堅持分歧性了,最少看起來別扭。 
結 構 [前往]
構造是C和C++言語中的說法。在VB中普通稱為自定義數據類型。想必很多冤家都曾經看法它。在API范疇裡,我更喜歡把它叫做構造,由於API各種構造類型基本不是我定義(
自定義)的。
在VB中,API構造異樣由TYPE.......END TYPE語句來定義。如,在API中,點(Point)構造的定義辦法如下:
Public Type POINTAPI
X As Long '點在X坐標(橫坐標)上的坐標值
Y As Long '點在Y坐標(縱坐標)上的坐標值
End Type
又如,API中矩形(Rect)構造的定義如下∶
Public Type RECT
Left As Long '矩形左上角的X坐標
Top As Long '矩形左上角的Y坐標
Right As Long '矩形右下角的X坐標
Bottom As Long '矩形右下角的Y坐標
End Type
這些內容異樣可以從API文本旅游器中拷貝過去。這些構造中的變量名可隨意改動,而不會影響構造自身。也就是說,這些成員變量都是虛擬的。如,POINTAPI構造可改為如下∶
Public Type POINTAPI
MyX As Long '點在X坐標(橫坐標)上的坐標值
MyY As Long '點在Y坐標(縱坐標)上的坐標值
End Type
不過,普通來講,是沒有這種必要的。構造自身是一種數據類型,因而,運用時必需聲明詳細變量為該構造型,才干在順序中真正運用到該構造。構造的聲明辦法和其他數據的聲明辦法一樣,如,以下語句把變MyPoint聲明為POINTAPI構造類型∶
MyPoint As POINTAPI
援用構造中的成員變量也非常復雜,在構造名前面加上一個".",然後緊接著寫要援用的成員變量即可。這很象VB中的援用一個對象的某個屬性。如,假設我們把下面曾經聲明的MyPoint構造中的X變量的值賦給變量Temp&
則代碼如下∶
Temp&=MyPoint.X
但,特別留意的是,你千萬不要以為上例中的MyPoint是一個值。它不是值,而是地址(
指針)。值和地址是完全不同的概念。構造要求按援用傳遞給WINDOWS函數,即一切API
函數中,構造都是按ByRef傳遞的(在Declare語句 中ByRef是默許型)。關於構造的傳遞,你不要試圖采用ByVal,你將一無所獲。由於構造名實踐上就是指向這個構造的指針(這個構造的首地址),所以,你也就傳送特定的構造名就可以了(參見小結,我用白色字體來突出了這種傳遞方式)。
由於構造傳送的是指針,所以函數將直接對構造停止讀寫操作。這種特性很合適於把函數執行的後果裝載在構造之中。 
小 結 [前往]
以下的順序是為了總結本課中學到的內容而給出的。啟動VB,新建一個項目,添加一個命令按鈕,並把上面的代碼拷貝到代碼段中,運轉它。 
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI '定義點(Point)構造
X As Long '點在X坐標(橫坐標)上的坐標值
Y As Long '點在Y坐標(縱坐標)上的坐標值
End Type
Sub PrintCursorPos( )
Dim dl AS Long
Dim MyPoint As POINTAPI
dl&= GetCursorPos(MyPoint) '調用函數,獲取屏幕鼠標坐標
Debug.Print "X=" & Str(MyPoint.X) & " and " & "Y=" & Str(MyPoint.Y)
End Sub
Private Sub Command1_Click()
PrintCursorPos
End Sub
輸入後果為(每次運轉都能夠失掉不同的後果,這得由函數調用時鼠標指針在屏幕中所處的地位而決議)∶
X= 240 and Y= 151
順序中,GetCursorPos函數用來獲取鼠標指針在屏幕上的地位。
以上例子中,你可以發現,以參數傳遞的MyPpint構造的內容在函數調用後發作了本質性變化。這是由於構造是按ByRef傳遞的緣由。 
一些API函數集 [前往]
Windows API
1.控件與音訊函數 
AdjustWindowRect 給定一種窗口款式,計算取得目的客戶區矩形所需的窗口大小 
AnyPopup 判別屏幕上能否存在任何彈出式窗口 
ArrangeIconicWindows 陳列一個父窗口的最小化子窗口 
AttachThreadInput 銜接線程輸出函數 
BeginDeferWindowPos 啟動構建一系列新窗口地位的進程 
BringWindowToTop 將指定的窗口帶至窗口列表頂部 
CascadeWindows 以層疊方式陳列窗口 
ChildWindowFromPoint 前往父窗口中包括了指定點的第一個子窗口的句柄 
ClientToScreen 判別窗口內以客戶區坐標表示的一個點的屏幕坐標 
CloseWindow 最小化指定的窗口 
CopyRect 矩形內容復制 
DeferWindowPos 該函數為特定的窗口指定一個新窗口地位 
DestroyWindow 肅清指定的窗口以及它的一切子窗口 
DrawAnimatedRects 描畫一系列靜態矩形 
EnableWindow 指定的窗口裡允許或制止一切鼠標及鍵盤輸出 
EndDeferWindowPos 同時更新DeferWindowPos調用時指定的一切窗口的地位及形態
EnumChildWindows 為指定的父窗口枚舉子窗口 
EnumThreadWindows 枚舉與指定義務相關的窗口 
EnumWindows 枚舉窗口列表中的一切父窗口 
EqualRect 判別兩個矩形構造能否相反 
FindWindow 尋覓窗口列表中第一個契合指定條件的頂級窗口 
FindWindowEx 在窗口列表中尋覓與指定條件相符的第一個子窗口 
FlashWindow 閃爍顯示指定窗口 
GetActiveWindow 取得活動窗口的句柄 
GetCapture 取得一個窗口的句柄,這個窗口位於以後輸出線程,且擁有鼠標捕捉(鼠標活動由它接納) 
GetClassInfo 獲得WNDCLASS構造(或WNDCLASSEX構造)的一個正本,構造中包括了與指定類有關的信息 
GetClassLong 獲得窗口類的一個Long變量條目 
GetClassName 為指定的窗口獲得類名 
GetClassWord 為窗口類獲得一個整數變量 
GetClientRect 前往指定窗口客戶區矩形的大小 
GetDesktopWindow 取得代表整個屏幕的一個窗口(桌面窗口)句柄 
GetFocus 取得擁有輸出焦點的窗口的句柄
GetForegroundWindow 取得前台窗口的句柄 
GetLastActivePopup 取得在一個給定父窗口中最近激活過的彈出式窗口的句柄 
GetLastError 針對之前調用的api函數,用這個函數獲得擴展錯誤信息 
GetParent 判別指定窗口的父窗口 
GetTopWindow 搜索外部窗口列表,尋覓從屬於指定窗口的頭一個窗口的句柄 
GetUpdateRect 取得一個矩形,它描敘了指定窗口中需求更新的那一局部 
GetWindow 取得一個窗口的句柄,該窗口與某源窗口有特定的關系 
GetWindowContextHelpId 獲得與窗口關聯在一同的協助場景ID 
GetWindowLong 從指定窗口的構造中獲得信息 
GetWindowPlacement 取得指定窗口的形態及地位信息 
GetWindowRect 取得整個窗口的范圍矩形,窗口的邊框、標題欄、滾動條及菜單等都在這個矩形內 
GetWindowText 獲得一個窗體的標題(caption)文字,或許一個控件的內容 
GetWindowTextLength 調查窗口標題文字或控件內容的長短 
GetWindowWord 取得指定窗口構造的信息 
InflateRect 增大或減小一個矩形的大小 
IntersectRect 這個函數在lpDestRect裡載入一個矩形,它是lpSrc1Rect與lpSrc2Rect兩個矩形的交集
InvalidateRect 屏蔽一個窗口客戶區的全部或局部區域 
IsChild 判別一個窗口能否為另一窗口的子或從屬窗口
IsIconic 判別窗口能否已最小化 
IsRectEmpty 判別一個矩形能否為空 
IsWindow 判別一個窗口句柄能否無效 
IsWindowEnabled 判別窗口能否處於活動形態 
IsWindowUnicode 判別一個窗口能否為Unicode窗口。這意味著窗口為一切基於文本的音訊都接納Unicode文字 
IsWindowVisible 判別窗口能否可見 
IsZoomed 判別窗口能否最大化 
LockWindowUpdate 鎖定指定窗口,制止它更新 
MapWindowPoints 將一個窗口客戶區坐標的點轉換到另一窗口的客戶區坐標零碎 
MoveWindow 改動指定窗口的地位和大小 
OffsetRect 經過使用一個指定的偏移,從而讓矩形挪動起來 
OpenIcon 恢復一個最小化的順序,並將其激活 
PtInRect 判別指定的點能否位於矩形外部 
RedrawWindow 重畫全部或局部窗口
ReleaseCapture 為以後的使用順序釋放鼠標捕捉 
ScreenToClient 判別屏幕上一個指定點的客戶區坐標 
ScrollWindow 滾動窗口客戶區的全部或一局部 
ScrollWindowEx 依據附加的選項,滾動窗口客戶區的全部或局部 
SetActiveWindow 激活指定的窗口 
SetCapture 將鼠標捕捉設置到指定的窗口 
SetClassLong 為窗口類設置一個Long變量條目 
SetClassWord 為窗口類設置一個條目 
SetFocusAPI 將輸出焦點設到指定的窗口。如有必要,會激活窗口 
SetForegroundWindow 將窗口設為零碎的前台窗口 
SetParent 指定一個窗口的新父 
SetRect 設置指定矩形的內容 
SetRectEmpty 將矩形設為一個空矩形 
SetWindowContextHelpId 為指定的窗口設置協助場景(上下文)ID 
SetWindowLong 在窗口構造中為指定的窗口設相信息 
SetWindowPlacement 設置窗口形態和地位信息
SetWindowPos 為窗口指定一個新地位和形態 
SetWindowText 設置窗口的標題文字或控件的內容 
SetWindowWord 在窗口構造中為指定的窗口設相信息 
ShowOwnedPopups 顯示或隱藏由指定窗口一切的全部彈出式窗口 
ShowWindow 控制窗口的可見性 
ShowWindowAsync 與ShowWindow類似 
SubtractRect 裝載矩形lprcDst,它是在矩形lprcSrc1中減去lprcSrc2失掉的後果 
TileWindows 以平鋪順序陳列窗口 
UnionRect 裝載一個lpDestRect目的矩形,它是lpSrc1Rect和lpSrc2Rect結合起來的後果 
UpdateWindow 強迫立刻更新窗口 
ValidateRect 校驗窗口的全部或局部客戶區 
WindowFromPoint 前往包括了指定點的窗口的句柄。疏忽屏蔽、隱藏以及通明窗口
2.硬件與零碎函數
ActivateKeyboardLayout 激活一個新的鍵盤規劃。鍵盤規劃定義了按鍵在一種物感性鍵盤上的地位與含義 
Beep 用於生成復雜的聲響 
CharToOem 將一個字串從ANSI字符集轉換到OEM字符集 
ClipCursor 將指針限制到指定區域 
ConvertDefaultLocale 將一個特殊的中央標識符轉換成真實的中央ID 
CreateCaret 依據指定的信息創立一個拔出符(光標),並將它選定為指定窗口的默許拔出符 
DestroyCaret 肅清(毀壞)一個拔出符 
EnumCalendarInfo 枚舉在指定“中央”環境中可用的日歷信息 
EnumDateFormats 羅列指定的“外地”設置中可用的長、短日期格式 
EnumSystemCodePages 枚舉零碎中已裝置或支持的代碼頁 
EnumSystemLocales 枚舉零碎曾經裝置或提供支持的“中央”設置 
EnumTimeFormats 枚舉一個指定的中央適用的時間格式 
ExitWindowsEx 加入windows,並用特定的選項重新啟動 
ExpandEnvironmentStrings 擴大環境字串 
FreeEnvironmentStrings 翻譯指定的環境字串塊 
GetACP 判別目前正在失效的ANSI代碼頁
GetAsyncKeyState 判別函數調用時指定虛擬鍵的形態 
GetCaretBlinkTime 判別拔出符光標的閃爍頻率 
GetCaretPos 判別拔出符的以後地位 
GetClipCursor 獲得一個矩形,用於描繪目前為鼠標指針規則的剪切區域 
GetCommandLine 取得指向以後命令行緩沖區的一個指針 
GetComputerName 獲得這台計算機的稱號 
GetCPInfo 獲得與指定代碼頁有關的信息 
GetCurrencyFormat 針對指定的“中央”設置,依據貨幣格式格式化一個數字 
GetCursor 獲取目前選擇的鼠標指針的句柄 
GetCursorPos 獲取鼠標指針的以後地位 
GetDateFormat 針對指定的“外地”格式,對一個零碎日期停止格式化 
GetDoubleClickTime 判別延續兩次鼠標單擊之間會被處置成雙擊事情的距離時間 
GetEnvironmentStrings 為包括了以後環境字串設置的一個內存塊分配和前往一個句柄 
GetEnvironmentVariable 獲得一個環境變量的值 
GetInputState 判別能否存在任何待決(等候處置)的鼠標或鍵盤事情 
GetKBCodePage 由GetOEMCP取代,兩者功用完全相反
GetKeyboardLayout 獲得一個句柄,描繪指定使用順序的鍵盤規劃 
GetKeyboardLayoutList 取得零碎適用的一切鍵盤規劃的一個列表 
GetKeyboardLayoutName 獲得以後活動鍵盤規劃的稱號 
GetKeyboardState 獲得鍵盤上每個虛擬鍵以後的形態 
GetKeyboardType 理解與正在運用的鍵盤有關的信息 
GetKeyNameText 在給出掃描碼的前提下,判別鍵名 
GetKeyState 針對已處置過的按鍵,在最近一次輸出信息時,判別指定虛擬鍵的形態 
GetLastError 針對之前調用的api函數,用這個函數獲得擴展錯誤信息 
GetLocaleInfo 獲得與指定“中央”有關的信息 
GetLocalTime 獲得本地日期和時間 
GetNumberFormat 針對指定的“中央”,按特定的格式格式化一個數字 
GetOEMCP 判別在OEM和ANSI字符集間轉換的windows代碼頁 
GetQueueStatus 判別使用順序音訊隊列中待決(等候處置)的音訊類型 
GetSysColor 判別指定windows顯示對象的顏色 
GetSystemDefaultLangID 獲得零碎的默許言語ID 
GetSystemDefaultLCID 獲得以後的默許零碎“中央”
GetSystemInfo 獲得與底層硬件平台有關的信息 
GetSystemMetrics 前往與windows環境有關的信息 
GetSystemPowerStatus 取得與以後零碎電源形態有關的信息 
GetSystemTime 獲得以後零碎時間,這個時間采用的是“協同世界時間”(即UTC,也叫做GMT)格式 
GetSystemTimeAdjustment 使外部零碎時鐘與一個內部的時鐘信號源同步 
GetThreadLocale 獲得以後線程的中央ID 
GetTickCount 用於獲取自windows啟動以來閱歷的時間長度(毫秒) 
GetTimeFormat 針對以後指定的“中央”,按特定的格式格式化一個零碎時間 
GetTimeZoneInformation 獲得與零碎時區設置有關的信息 
GetUserDefaultLangID 為以後用戶獲得默許言語ID 
GetUserDefaultLCID 獲得以後用戶的默許“中央”設置 
GetUserName 獲得以後用戶的名字 
GetVersion 判別以後運轉的Windows和DOS版本 
GetVersionEx 獲得與平台和操作零碎有關的版本信息 
HideCaret 在指定的窗口隱藏拔出符(光標) 
IsValidCodePage 判別一個代碼頁能否無效
IsValidLocale 判別中央標識符能否無效 
keybd_event 這個函數模仿了鍵盤舉動 
LoadKeyboardLayout 載入一個鍵盤規劃 
MapVirtualKey 依據指定的映射類型,執行不同的掃描碼和字符轉換 
MapVirtualKeyEx 依據指定的映射類型,執行不同的掃描碼和字符轉換 
MessageBeep 播放一個零碎聲響。零碎聲響的分配方案是在控制面板裡決議的 
mouse_event 模仿一次鼠標事情 
OemKeyScan 判別OEM字符集中的一個ASCII字符的掃描碼和Shift鍵形態 
OemToChar 將OEM字符集的一個字串轉換到ANSI字符集 
SetCaretBlinkTime 指定拔出符(光標)的閃爍頻率 
SetCaretPos 指定拔出符的地位 
SetComputerName 設置新的計算機名 
SetCursor 將指定的鼠標指針設為以後指針 
SetCursorPos 設置指針的地位 
SetDoubleClickTime 設置延續兩次鼠標單擊之間能使零碎以為是雙擊事情的距離時間 
SetEnvironmentVariable 將一個環境變量設為指定的值
SetKeyboardState 設置每個虛擬鍵以後在鍵盤上的形態 
SetLocaleInfo 改動用戶“中央”設相信息 
SetLocalTime 設置以後中央時間 
SetSysColors 設置指定窗口顯示對象的顏色 
SetSystemCursor 改動任何一個規范零碎指針 
SetSystemTime 設置以後零碎時間 
SetSystemTimeAdjustment 定時添加一個校准值使外部零碎時鐘與一個內部的時鐘信號源同步 
SetThreadLocale 為以後線程設置中央 
SetTimeZoneInformation 設置零碎時區信息 
ShowCaret 在指定的窗口裡顯示拔出符(光標) 
ShowCursor 控制鼠標指針的可視性 
SwapMouseButton 決議能否互換鼠標左右鍵的功用 
SystemParametersInfo 獲取和設置數量眾多的windows零碎參數 
SystemTimeToTzSpecificLocalTime 將零碎時間轉換成中央時間 
ToAscii 依據以後的掃描碼和鍵盤信息,將一個虛擬鍵轉換成ASCII字符 
ToUnicode 依據以後的掃描碼和鍵盤信息,將一個虛擬鍵轉換成Unicode字符
UnloadKeyboardLayout 卸載指定的鍵盤規劃 
VkKeyScan 針對Windows字符集中一個ASCII字符,判別虛擬鍵碼和Shift鍵的形態 

3.菜單函數
AppendMenu 在指定的菜單裡添加一個菜單項 
CheckMenuItem 復選或吊銷復選指定的菜單條目 
CheckMenuRadioItem 指定一個菜單條目被復選成“單選”項目 
CreateMenu 創立新菜單 
CreatePopupMenu 創立一個空的彈出式菜單 
DeleteMenu 刪除指定的菜單條目 
DestroyMenu 刪除指定的菜單 
DrawMenuBar 為指定的窗口重畫菜單 
EnableMenuItem 允許或制止指定的菜單條目 
GetMenu 獲得窗口中一個菜單的句柄 
GetMenuCheckMarkDimensions 前往一個菜單復選符的大小 
GetMenuContextHelpId 獲得一個菜單的協助場景ID 
GetMenuDefaultItem 判別菜單中的哪個條目是默許條目 
GetMenuItemCount 前往菜單中條目(菜單項)的數量 
GetMenuItemID 前往位於菜單中指定地位處的條目的菜單ID 
GetMenuItemInfo 獲得(接納)與一個菜單條目有關的特定信息
GetMenuItemRect 在一個矩形中裝載指定菜單條目的屏幕坐標信息 
GetMenuState 獲得與指定菜單條目形態有關的信息 
GetMenuString 獲得指定菜單條目的字串 
GetSubMenu 獲得一個彈出式菜單的句柄,它位於菜單中指定的地位 
GetSystemMenu 獲得指定窗口的零碎菜單的句柄 
HiliteMenuItem 控制頂級菜單條目的加亮顯示形態 
InsertMenu 在菜單的指定地位處拔出一個菜單條目,並依據需求將其他條目向下挪動 
InsertMenuItem 拔出一個新菜單條目 
IsMenu 判別指定的句柄能否為一個菜單的句柄 
LoadMenu 從指定的模塊或使用順序實例中載入一個菜單 
LoadMenuIndirect 載入一個菜單 
MenuItemFromPoint 判別哪個菜單條目包括了屏幕上一個指定的點 
ModifyMenu 改動菜單條目 
RemoveMenu 刪除指定的菜單條目 
SetMenu 設置窗口菜單 
SetMenuContextHelpId 設置一個菜單的協助場景ID
SetMenuDefaultItem 將一個菜單條目設為默許條目 
SetMenuItemBitmaps 設置一幅特定位圖,令其在指定的菜單條目中運用,替代規范的復選符號(√) 
SetMenuItemInfo 為一個菜單條目設置指定的信息 
TrackPopupMenu 在屏幕的恣意中央顯示一個彈出式菜單 
TrackPopupMenuEx 與TrackPopupMenu類似,只是它提供了額定的功用 

以下是幾個關於菜單函數的類型定義 
MENUITEMINFO 這個構造包括了菜單條目的信息 
TPMPARAMS 這個構造用於TrackPopupMenuEx函數以支持額定的功用
4.繪圖函數
AbortPath 丟棄選入指定設備場景中的一切途徑。也取消目前正在停止的任何途徑的創立任務 
AngleArc 用一個銜接弧畫一條線 
Arc 畫一個圓弧 
BeginPath 啟動一個途徑分支 
CancelDC 取消另一個線程裡的長時間繪圖操作 
Chord 畫一個弦 
CloseEnhMetaFile 封閉指定的加強型圖元文件設備場景,並將新建的圖元文件前往一個句柄 
CloseFigure 描畫到一個途徑時,封閉以後翻開的圖形 
CloseMetaFile 封閉指定的圖元文件設備場景,並向新建的圖元文件前往一個句柄 
CopyEnhMetaFile 制造指定加強型圖元文件的一個正本(拷貝) 
CopyMetaFile 制造指定(規范)圖元文件的一個正本 
CreateBrushIndirect 在一個LOGBRUSH數據構造的根底上創立一個刷子 
CreateDIBPatternBrush 用一幅與設備有關的位圖創立一個刷子,以便指定刷子款式(圖案) 
CreateEnhMetaFile 創立一個加強型的圖元文件設備場景 
CreateHatchBrush 創立帶有暗影圖案的一個刷子 
CreateMetaFile 創立一個圖元文件設備場景
CreatePatternBrush 用指定了刷子圖案的一幅位圖創立一個刷子 
CreatePen 用指定的款式、寬度和顏色創立一個畫筆 
CreatePenIndirect 依據指定的LOGPEN構造創立一個畫筆 
CreateSolidBrush 用純色創立一個刷子 
DeleteEnhMetaFile 刪除指定的加強型圖元文件 
DeleteMetaFile 刪除指定的圖元文件 
DeleteObject 刪除GDI對象,對象運用的一切零碎資源都會被釋放 
DrawEdge 用指定的款式描畫一個矩形的邊框 
DrawEscape 換碼(Escape)函數將數據直接發至顯示設備驅動順序 
DrawFocusRect 畫一個焦點矩形 
DrawFrameControl 描畫一個規范控件 
DrawState 為一幅圖象或繪圖操作使用各式各樣的效果 
Ellipse 描畫一個橢圓,由指定的矩形圍繞 
EndPath 中止定義一個途徑 
EnumEnhMetaFile 針對一個加強型圖元文件,羅列其中獨自的圖元文件記載 
EnumMetaFile 為一個規范的windows圖元文件枚舉獨自的圖元文件記載
EnumObjects 枚舉可伴隨指定設備場景運用的畫筆和刷子 
ExtCreatePen 創立一個擴展畫筆(裝飾或幾何) 
ExtFloodFill 在指定的設備場景裡,用以後選擇的刷子填充一個區域 
FillPath 封閉途徑中任何翻開的圖形,並用以後刷子填充 
FillRect 用指定的刷子填充一個矩形 
FlattenPath 將一個途徑中的一切曲線都轉換成線段 
FloodFill 用以後選定的刷子在指定的設備場景中填充一個區域 
FrameRect 用指定的刷子圍繞一個矩形畫一個邊框 
GdiComment 為指定的加強型圖元文件設備場景添加一條正文信息 
GdiFlush 執行任何未決的繪圖操作 
GdiGetBatchLimit 判別有多少個GDI繪圖命令位於隊列中 
GdiSetBatchLimit 指定有多少個GDI繪圖命令可以進入隊列 
GetArcDirection 畫圓弧的時分,判別以後采用的繪圖方向 
GetBkColor 獲得指定設備場景以後的背景顏色 
GetBkMode 針對指定的設備場景,獲得以後的背景填充形式 
GetBrushOrgEx 判別指定設備場景中以後選定刷子終點
GetCurrentObject 取得指定類型的以後選定對象 
GetCurrentPositionEx 在指定的設備場景中獲得以後的畫筆地位 
GetEnhMetaFile 獲得磁盤文件中包括的一個加強型圖元文件的圖元文件句柄 
GetEnhMetaFileBits 將指定的加強型圖元文件復制到一個內存緩沖區裡 
GetEnhMetaFileDescription 前往對一個加強型圖元文件的闡明 
GetEnhMetaFileHeader 獲得加強型圖元文件的圖元文件頭 
GetEnhMetaFilePaletteEntries 獲得加強型圖元文件的全部或局部調色板 
GetMetaFile 獲得包括在一個磁盤文件中的圖元文件的圖元文件句柄 
GetMetaFileBitsEx 將指定的圖元文件復制到一個內存緩沖區 
GetMiterLimit 獲得設備場景的斜率限制(Miter)設置 
GetNearestColor 依據設備的顯示才能,獲得與指定顏色最接近的一種純色 
GetObjectAPI 獲得對指定對象停止闡明的一個構造 
GetObjectType 判別由指定句柄援用的GDI對象的類型 
GetPath 獲得對以後途徑停止定義的一系列數據 
GetPixel 在指定的設備場景中獲得一個像素的RGB值 
GetPolyFillMode 針對指定的設備場景,取得多邊形填充形式
GetROP2 針對指定的設備場景,獲得以後的繪圖形式 
GetStockObject 獲得一個固有對象(Stock) 
GetSysColorBrush 為任何一種規范零碎顏色獲得一個刷子 
GetWinMetaFileBits 經過在一個緩沖區中填充用於規范圖元文件的數據,將一個加強型圖元文件轉換成規范windows圖元文件 
InvertRect 經過反轉每個像素的值,從而反轉一個設備場景中指定的矩形 
LineDDA 枚舉指定線段中的一切點 
LineTo 用以後畫筆畫一條線,從以後地位連到一個指定的點
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved