控件與消息函數

此文檔著作權屬於原作者，由老貓(wjiachun@263.net)收集整理為chm格式。
文檔主要內容：
控件與消息函數
硬體與系統函數
設備場景函數、繪圖函數
位圖、圖標和光柵運算函數
選單函數
文本和字體函數
列印函數
文件處理函數
Windows消息函數
網絡函數
進程和線程函數
同步函數（包括互斥體，信號機和事件函數）
老貓不敢說這是最好的幫助文檔，但是可以說這是目前最全的中文API幫助了，如果我的工作給你編程帶來一點方便，那麼就足夠了。有誰需要它，請代為廣泛傳播。


控件和消息類1

控件與消息函數：共六頁。第一頁， 第二頁 ， 第三頁 ， 第四頁 ， 第五頁 ， 第六頁
AdjustWindowRect | 給定一種窗口樣式，計算獲得目標客戶區矩形所需的窗口大小
AnyPopup | 判斷屏幕上是否存在任何彈出式窗口
ArrangeIconicWindows | 排列一個父窗口的最小化子窗口
AttachThreadInput | 連接線程輸入函數
BeginDeferWindowPos | 啟動構建一系列新窗口位置的過程
BringWindowToTop | 將指定的窗口帶至窗口列表頂部
CascadeWindows | 以層疊方式排列窗口
ChildWindowFromPoint | 返回父窗口中包含了指定點的第一個子窗口的句柄
ClientToScreen | 判斷窗口內以客戶區坐標表示的一個點的屏幕坐標
CloseWindow | 最小化指定的窗口
CopyRect | 矩形內容複製
DeferWindowPos | 該函數為特定的窗口指定一個新窗口位置
DestroyWindow | 清除指定的窗口以及它的所有子窗口
DrawAnimatedRects | 描繪一系列動態矩形
EnableWindow | 指定的窗口裡允許或禁止所有滑鼠及鍵盤輸入
EndDeferWindowPos | 同時更新DeferWindowPos調用時指定的所有窗口的位置及狀態


AdjustWindowRect

AdjustWindowRect,AdjustWindowRectEx
VB聲明
Declare Function AdjustWindowRect Lib "user32" Alias "AdjustWindowRect" (lpRect As RECT, ByVal dwStyle As Long, ByVal bMenu As Long) As Long Declare Function AdjustWindowRectEx Lib "user32" Alias "AdjustWindowRectEx" (lpRect As RECT, ByVal dsStyle As Long, ByVal bMenu As Long, ByVal dwEsStyle As Long) As Long
BOOL AdjustWindowRect( LPRECT lpRect, // pointer to client-rectangle structure DWORD dwStyle, // window styles BOOL bMenu // menu-present flag );
說明
在給定一種窗口樣式的前提下，計算獲得目標客戶區矩形所需的窗口大小
返回值
Long，如執行成功，則返回非零值；如失敗，返回零值。會設置GetLastError
參數表
參數 | 類型及說明
lpRect | RECT，最初包含要求的客戶區。由函數設為目標窗口矩形大小
dwStyle | Long，窗口樣式
bMenu | Long，如窗口有選單，則設為TRUE（非零）
dwEsStyle | Long，擴展窗口樣式（只適用於AdjustWindowRectEx）
註解
在調用本函數前，先用GetWindowLong取得一個窗體的樣式。如選單佔用兩行以上的空間，則函數不能正確計算大小。如程序使用了多行標題，則應使用GetSystemMetrics

Top


AnyPopup
VB聲明
Declare Function AnyPopup Lib "user32" Alias "AnyPopup" () As Long
說明
判斷屏幕上是否存在任何彈出式窗口
返回值
Long，如存在彈出式選單，則返回TRUE（非零）
註解
對該函數來說，彈出式選單包含所有可見的包容頂級窗口，無論彈出式還是重疊窗口


ArrangeIconicWindows
VB聲明
Declare Function ArrangeIconicWindows Lib "user32" Alias "ArrangeIconicWindows" (ByVal hwnd As Long) As Long
說明
排列一個父窗口的最小化子窗口（在vb裡使用：用於在桌面排列圖標，用GetDesktopWindow函數獲得桌面窗口的一個句柄）
返回值
Long，圖標行的高度；如失敗，則返回零。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，父窗口的句柄
註解
也可將該函數用於包含了圖標化子窗口的的定制控件


AttachThreadInput
VB聲明
Declare Function AttachThreadInput Lib "user32" Alias "AttachThreadInput" (ByVal idAttach As Long, ByVal idAttachTo As Long, ByVal fAttach As Long) As Long
說明
通常，系統內的每個線程都有自己的輸入隊列。本函數（既「連接線程輸入函數」）允許線程和進程共享輸入隊列。連接了線程後，輸入焦點、窗口激活、滑鼠捕獲、鍵盤狀態以及輸入隊列狀態都會進入共享狀態
返回值
Long，非零表示成功，零表示失敗，會設置會GetLastError
參數表
參數 | 類型及說明
idAttach | Long，欲連接線程的標識符（ID）
idAttachTo | Long，與idAttach線程連接的另一個線程的標識符
fAttach | Long，TRUE（非零）連接，FALSE撤消連接
註解
調用這個函數時，會重設鍵盤狀態


BeginDeferWindowPos
VB聲明
Declare Function BeginDeferWindowPos Lib "user32" Alias "BeginDeferWindowPos" (ByVal nNumWindows As Long) As Long
說明
啟動構建一系列新窗口位置的過程（以便同時更新）。該函數會向一個內部結果返回一個句柄，這個結構容納了與窗口位置有關的信息。隨後，該結構會由對DeferWindowPos函數的調用填充。準備好更新所有窗口位置以後，對EndDeferWindowPos的一個調用可同時更新結構內所有窗口的位置
返回值
Long，內部結構的句柄。零表示失敗
參數表
參數 | 類型及說明
nNumWindows | Long，在結構中欲為其分配空間的初始窗口數量。在每次DeferWindowPos調用期間結構的大小會根據情況自動調節


BringWindowToTop
VB聲明
Declare Function BringWindowToTop Lib "user32" Alias "BringWindowToTop" (ByVal hwnd As Long) As Long
說明
將指定的窗口帶至窗口列表頂部。倘若它部分或全部隱藏於其他窗口下面，則將隱藏的部分完全顯示出來。該函數也對彈出式窗口、頂級窗口以及MDI子窗口產生作用
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，欲帶至頂部的那個窗口的句柄
註解
這個函數也許能隨同子窗口使用。函數對一個特定的輸入線程來說是「本地的」——換言之，倘若某窗口並非前台應用程序的一部分，那麼一旦隨同該窗口調用本函數，仍會將窗口帶至它自己那個應用程序的窗口列表頂部。但是，不會同時使那個應用成為前台應用程序。這意味著在調用了本函數後，窗口仍會保持隱藏狀態


CascadeWindows

CascadeWindows,CascadeWindowsBynum
VB聲明
Declare Function CascadeWindows% Lib "user32" (ByVal hwndParent As Long, ByVal wHow As Long, lpRect As RECT, ByVal cKids As Long, lpKids As Long) Declare Function CascadeWindowsBynum% Lib "user32" Alias "CascadeWindows" (ByVal hwndParent As Long, ByVal wHow As Long, ByVal lpRect As Long, ByVal cKids As Long, ByVal lpKids As Long)
說明
以層疊方式排列窗口（在vb裡使用：位於頂部或被所有的窗口沒有問題。原文：No problem for top level windows or owned windows.）
返回值
Integer，排列成功的窗口數量，零表示失敗
參數表
參數 | 類型及說明
hwndParent | Long，指定一個父窗口；準備對它的子窗口進行排列。用GetDesktopWindow函數獲得頂級窗口的句柄
wHow | Long，MDITILE_SKIPDISABLED——不排列已被禁用的MDI子窗口
lpRect | RECT，指定一個矩形，矩形區域中的窗口才會層疊處理。可設為NULL，表示使用整個客戶區
cKids | Long，在lpKids數組中指定的子窗口數量
lpKids | Long，子窗口列表中準備排列的第一個元素。如傳遞NULL（注意將參數定義成ByVal）。Long，則表示排列所有的子窗口（原文：Long--First element in list of child windows to arrange. Pass NULL (be sure to define parameter as ByVal - Long, to arrange all child windows.）
註解
在正式的win32文檔裡，對這個函數的說明是不正確的。這兒的參數建立在實際的win32 C 頭文件基礎上。函數不能對諸如控件的子窗口產生——只對頂級窗口及MDI子有用。注意在MDI窗體的情況下，指定的父窗口應是MDIClient窗口的句柄，不應是MDI窗體本身的窗口句柄。可用api函數GetParent獲得正確的句柄


ChildWindowFromPoint

ChildWindowFromPoint,ChildWindowFromPointEx
VB聲明
Declare Function ChildWindowFromPoint Lib "user32" Alias "ChildWindowFromPoint" (ByVal hWnd As Long, ByVal xPoint As Long, ByVal yPoint As Long) As Long Declare Function ChildWindowFromPointEx Lib "user32" Alias "ChildWindowFromPointEx" (ByVal hWnd As Long, ByVal pt As POINTAPI, ByVal un As Long) As Long
說明
返回父窗口中包含了指定點的第一個子窗口的句柄
返回值
Long，發現包含了指定點的第一個子窗口的句柄。如未發現任何窗口，則返回hWnd（父窗口的句柄）。如指定點位於父窗口外部，則返回零
參數表
參數 | 類型及說明
hWnd | Long，父窗口的句柄
xPoint | Long，點的X坐標，以像素為單位
yPoint | Long，點的Y坐標，以像素為單位
pt | POINTAPI，點的坐標，以像素為單位
un | Long，（只適用於ChildWindowFromPointEx）控制對窗口的搜索。參見下表
 | CWP_ALL | 測試所有窗口
 | CWP_SKIPINVISIBLE | 忽略不可見窗口
 | CWP_SKIPDISABLED | 忽略已屏蔽的窗口
 | CWP_SKIPTRANSPARENT | 忽略透明窗口


ClientToScreen
VB聲明
Declare Function ClientToScreen Lib "user32" Alias "ClientToScreen" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
說明
判斷窗口內以客戶區坐標表示的一個點的屏幕坐標
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hwnd | Long，判斷客戶區坐標時那個窗口的句柄
lpPoint | POINTAPI，用hwnd窗口的客戶區坐標表示的點，這個參數會包含屏幕坐標系統中相同的點


CloseWindow
VB聲明
Declare Function CloseWindow Lib "user32" Alias "CloseWindow" (ByVal hwnd As Long) As Long
說明
最小化指定的窗口。窗口不會從內存中清除
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，欲最小化的那個窗口的句柄


CopyRect
VB聲明
Declare Function CopyRect Lib "user32" Alias "CopyRect" (lpDestRect As RECT, lpSourceRect As RECT) As Long
說明
將矩形的lpSourceRect內容複製給矩形lpDestRect
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpDestRect | RECT，目標矩形結構
lpSourceRect | RECT，源矩形


DeferWindowPos
VB聲明
Declare Function DeferWindowPos Lib "user32" Alias "DeferWindowPos" (ByVal hWinPosInfo As Long, ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
說明
該函數為特定的窗口指定一個新窗口位置，並將其輸入由BeginDeferWindowPos創建的結構，以便在EndDeferWindowPos函數執行期間更新
返回值
Long，返回一個新句柄，它指向的結構包含了位置更新信息。這個句柄應在對DeferWindowPos的後續調用以及對EndDeferWindowPos的結束調用中用到。如出錯，則返回零值
參數表
參數 | 類型及說明
hWinPosInfo | Long，由BeginDeferWindowPos為後續對DeferWindowPos的調用返回的句柄
hwnd | Long，欲定位的窗口
hWndInsertAfter | Long，窗口句柄。在窗口列表中，窗口hwnd會排列於這個窗口後面。也可用下述值之一：
 | HWND_BOTTOM | 將窗口置於窗口列表底部
 | HWND_TOP | 將窗口置於Z序列頂部；Z序列是窗口針對分級結構中一個給定級別顯示的順序
 | HWND_TOPMOST | 將窗口置於列表頂部，位於任何最頂級窗口的前面（請參考WS_EX_TOPMOST樣式位）
 | HWND_NOTOPMOST | 將窗口置於列表頂部，位於任何最頂級窗口的後面
x | Long，窗口新的x坐標。如hwnd是個子窗口，那麼x用父窗口的客戶區坐標表示
y | Long，窗口新的y坐標。如hwnd是個子窗口，那麼y用父窗口的客戶區坐標表示
cx | Long，指定新窗口寬度
cy | Long，指定新窗口高度
wFlags | Long，包含了旗標的一個整數，如下所示：
 | SWP_DRAWFRAME | 圍繞窗口畫一個框
 | SWP_HIDEWINDOW | 隱藏窗口
 | SWP_NOACTIVATE | 不激活窗口
 | SWP_NOMOVE | 保持當前位置（x和y設定將被忽略）
 | SWP_NOREDRAW | 窗口不自動重畫
 | SWP_NOSIZE | 保持當前大小（cx和cy會被忽略）
 | SWP_NOZORDER | 保持在窗口列表的當前位置（hWndInsertAfter會被忽略）
 | SWP_SHOWWINDOW | 顯示窗口
 | SWP_NOOWNERZORDER | 不改變Z序列的所有者
 | SWP_NOSENDCHANGING | 窗口不發出WM_WINDOWPOSCHANGING消息
註解
請參考對SetWindowPos函數的註解。同時參考BeginDeferWindowPos和EndDeferWindowPos


DestroyWindow
VB聲明
Declare Function DestroyWindow Lib "user32" Alias "DestroyWindow" (ByVal hwnd As Long) As Long
說明
破壞（即清除）指定的窗口以及它的所有子窗口（在vb裡使用：用處不大。原文：it is unlikely to be of much use.）
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，欲清除的窗口的句柄


DrawAnimatedRects
VB聲明
Declare Function DrawAnimatedRects Lib "user32" Alias "DrawAnimatedRects" (ByVal hwnd As Long, ByVal idAni As Long, lprcFrom As Rect, lprcTo As Rect) As Long
說明
在lprcFrom和lprcTo之間描繪一系列動態矩形
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hwnd | Long，要在其中描繪矩形的窗口。如設為零，表示以桌面為背景
idAni | Long，windows 95要設為0
lprcFrom | Rect，原始矩形
lprcTo | Rect，目標矩形
註解
我的理解——這個函數用於在窗口縮放時產生動畫效果


EnableWindow
VB聲明
Declare Function EnableWindow Lib "user32" Alias "EnableWindow" (ByVal hwnd As Long, ByVal fEnable As Long) As Long
說明
在指定的窗口裡允許或禁止所有滑鼠及鍵盤輸入（在vb裡使用：在vb窗體和控件中使用Enabled屬性）
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，窗口句柄
fEnable | Long，非零允許窗口，零禁止


EndDeferWindowPos
VB聲明
Declare Function EndDeferWindowPos Lib "user32" Alias "EndDeferWindowPos" (ByVal hWinPosInfo As Long) As Long
說明
同時更新DeferWindowPos調用時指定的所有窗口的位置及狀態
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hWinPosInfo | Long，由對DeferWindowPos最近一次調用返回的結構句柄


控件和消息類2

控件與消息函數：共六頁。 第一頁 ，第二頁， 第三頁 ， 第四頁 ， 第五頁 ， 第六頁
EnumChildWindows | 為指定的父窗口枚舉子窗口
EnumThreadWindows | 枚舉與指定任務相關的窗口
EnumWindows | 枚舉窗口列表中的所有父窗口
EqualRect | 判斷兩個矩形結構是否相同
FindWindow | 尋找窗口列表中第一個符合指定條件的頂級窗口
FindWindowEx | 在窗口列表中尋找與指定條件相符的第一個子窗口
FlashWindow | 閃爍顯示指定窗口
GetActiveWindow | 獲得活動窗口的句柄
GetCapture | 獲得一個窗口的句柄，這個窗口位於當前輸入線程，且擁有滑鼠捕獲（滑鼠活動由它接收）
GetClassInfo | 取得WNDCLASS結構（或WNDCLASSEX結構）的一個副本，結構中包含了與指定類有關的信息
GetClassLong | 取得窗口類的一個Long變量條目
GetClassName | 為指定的窗口取得類名
GetClassWord | 為窗口類取得一個整數變量
GetClientRect | 返回指定窗口客戶區矩形的大小
GetDesktopWindow | 獲得代表整個屏幕的一個窗口（桌面窗口）句柄
GetFocus | 獲得擁有輸入焦點的窗口的句柄


EnumChildWindows
VB聲明
Declare Function EnumChildWindows Lib "user32" Alias "EnumChildWindows" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
說明
為指定的父窗口枚舉子窗口
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hWndParent | Long，欲枚舉子窗口的父窗口的句柄
lpEnumFunc | Long，為每個子窗口調用的函數的指針。用AddressOf運算符獲得函數在一個標準模塊中的地址
lParam | Long，在枚舉期間，傳遞給dwcbkd32.ocx定制控件之EnumWindows事件的值。這個值的含義是由程序員規定的。（原文：Value that is passed to the EnumWindows event of the dwcbkd32.ocx custom control during enumeration. The meaning of this value is defined by the programmer.）
註解
在vb4下要求dwcbkd32.ocx定制控件。子窗口下屬的子窗口也可由這個函數枚舉


EnumThreadWindows
VB聲明
Declare Function EnumThreadWindows Lib "user32" Alias "EnumThreadWindows" (ByVal dwThreadId As Long, ByVal lpfn As Long, ByVal lParam As Long) As Long
說明
枚舉與指定任務相關的窗口
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
dwThreadId | Long，某線程的標識符，它的窗口將被枚舉
lpfn | Long，指向一個函數的指針，要求為每個子窗口都調用這個函數。用AddressOf運算符獲得函數在標準模式下的地址
lParam | Long，在枚舉期間，傳遞給dwcbkd32d.ocx定制控件之EnumWindows事件的值。這個值的含義是由程序員規定的
註解
子窗口下屬的其他子窗口也可由這個函數枚舉


EnumWindows
VB聲明
Declare Function EnumWindows& Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long)
說明
枚舉窗口列表中的所有父窗口（頂級和被所有窗口）
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
lpEnumFunc | Long，指向為每個子窗口都調用的一個函數的指針。用AddressOf運算符獲得函數在標準模式下的地址
lParam | Long，在枚舉期間，傳遞給dwcbkd32.ocx定制控件之EnumWindows事件的值。這個值的含義是由程序員規定的
註解
我的理解——在隨vb5同時提供的api32.txt文件中，找不到這個函數


EqualRect
VB聲明
Declare Function EqualRect Lib "user32" Alias "EqualRect" (lpRect1 As RECT, lpRect2 As RECT) As Long
說明
判斷兩個矩形結構是否相同
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpRect1 | RECT，要比較的矩形
lpRect2 | RECT，要比較的矩形


FindWindow
VB聲明
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
說明
尋找窗口列表中第一個符合指定條件的頂級窗口（在vb裡使用：FindWindow最常見的一個用途是獲得ThunderRTMain類的隱藏窗口的句柄；該類是所有運行中vb執行程序的一部分。獲得句柄後，可用api函數GetWindowText取得這個窗口的名稱；該名也是應用程序的標題）
返回值
Long，找到窗口的句柄。如未找到相符窗口，則返回零。會設置GetLastError
參數表
參數 | 類型及說明
lpClassName | String，指向包含了窗口類名的空中止（C語言）字串的指針；或設為零，表示接收任何類
lpWindowName | String，指向包含了窗口文本（或標籤）的空中止（C語言）字串的指針；或設為零，表示接收任何窗口標題
註解

很少要求同時按類與窗口名搜索。為向自己不準備參數傳遞一個零，最簡便的辦法是傳遞vbNullString常數

示例
Dim hw&, cnt&
Dim rttitle As String * 256
hw& = FindWindow("ThunderRT5Main", vbNullString) ' ThunderRTMain under VB4
cnt = GetWindowText(hw&, rttitle, 255)
MsgBox Left$(rttitle, cnt), 0, "RTMain title"


FindWindowEx
VB聲明
Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
說明
在窗口列表中尋找與指定條件相符的第一個子窗口
返回值
Long，找到的窗口的句柄。如未找到相符窗口，則返回零。會設置GetLastError
參數表
參數 | 類型及說明
hWnd1 | Long，在其中查找子的父窗口。如設為零，表示使用桌面窗口（通常說的頂級窗口都被認為是桌面的子窗口，所以也會對它們進行查找）
hWnd2 | Long，從這個窗口後開始查找。這樣便可利用對FindWindowEx的多次調用找到符合條件的所有子窗口。如設為零，表示從第一個子窗口開始搜索
lpsz1 | String，欲搜索的類名。零表示忽略
lpsz2 | String，欲搜索的類名。零表示忽略


FlashWindow
VB聲明
Declare Function FlashWindow Lib "user32" Alias "FlashWindow" (ByVal hwnd As Long, ByVal bInvert As Long) As Long
說明
閃爍顯示指定窗口。這意味著窗口的標題和說明文字會發生變化，似乎從活動切換到非活動狀態、或反向切換。通常對不活動的窗口應用這個函數，引起用戶的注意
返回值
Long，如窗口在調用前處於活動狀態，則返回TRUE（非零）
參數表
參數 | 類型及說明
hwnd | Long，要閃爍顯示的窗口的句柄
bInvert | Long，TRUE（非零）表示切換窗口標題；FALSE返回最初狀態
註解
該函數通常與一個計數器組合使用，生成連續的閃爍效果。在windows nt及windows for workgroup中，bInvert參數會被忽略。但在windows 95中不會忽略


GetActiveWindow
VB聲明
Declare Function GetActiveWindow Lib "user32" Alias "GetActiveWindow" () As Long
說明
獲得活動窗口的句柄
返回值
Long，活動窗口的句柄，如沒有窗口處於活動狀態，則返回零值


GetCapture
VB聲明
Declare Function GetCapture Lib "user32" Alias "GetCapture" () As Long
說明
獲得一個窗口的句柄，這個窗口位於當前輸入線程，且擁有滑鼠捕獲（滑鼠活動由它接收）
返回值
Long，擁有捕獲的窗口的句柄。倘若當前線程中沒有窗口擁有捕獲，則返回零值


GetClassInfo

GetClassInfo,GetClassInfoEx
VB聲明
Declare Function GetClassInfo& Lib "user32" Alias "GetClassInfoA" (ByVal hInstance As Long, ByVal lpClassName As String, lpWndClass As WNDCLASS) Declare Function GetClassInfoEx& Lib "user32" Alias "GetClassInfoExA" (ByVal hInstance As Long, ByVal lpClassName As String, lpWndClassEx As WNDCLASSEX)
說明
取得WNDCLASS結構（或WNDCLASSEX結構）的一個副本，結構中包含了與指定類有關的信息
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hInstance | Long，指向擁有類的那個實例的一個句柄。如設為NULL，則獲得與標準windows類有關的信息
lpClassName | String，欲查找的類名。也可能是個Long值，其中的低字是包含類名的一個全局（共用）原子
lpWndClass | WNDCLASS，（GetClassInfo）用於包含結果信息的結構
lpWndClassEx | WNDCLASSEX，（GetClassInfoEx）用於包含結果信息的結構
註解
如為這個函數使用了WNDCLASSEX參數，請務必設置其中的cbSize字段


GetClassLong
VB聲明
Declare Function GetClassLong Lib "user32" Alias "GetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
說明
取得窗口類的一個Long變量條目
返回值
Long，由nIndex決定。零表示出錯。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | 要為其獲得類信息的窗口的句柄
nIndex | 欲取得的信息，可能是下述任何一個常數：（正數表示一個字節偏移，用於取得在額外字節中為這個類分配的類信息）
 | GCL_CBCLSEXTRA | 這個類結構中分配的額外字節數
 | GCL_CBWNDEXTRA | 窗口結構裡為這個類中每個窗口分配的額外字節數
 | GCL_HBRBACKGROUND | 描繪這個類每個窗口的背景時，使用的默認刷子的句柄
 | GCL_HCURSOR | 指向這個類窗口默認光標的句柄
 | GCL_HICON | 這個類中窗口默認圖標的句柄
 | GCL_HICONSM | 這個類的小圖標
 | GCL_HMODULE | 這個類的模塊的句柄
 | GCL_MENUNAME | 為類選單取得名稱或資源ID
 | GCL_STYLE | 這個類的樣式
 | GCL_WNDPROC | 取得類窗口函數（該類窗口的默認窗口函數）的地址


GetClassName
VB聲明
Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
說明
為指定的窗口取得類名
返回值
Long，以字節數表示的類名長度；排除最後的空中止字符。零表示出錯。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，欲獲得類名的那個窗口的句柄
lpClassName | String，隨同類名載入的緩衝區。預先至少必須分配nMaxCount+1個字符
nMaxCount | Long，由lpClassName提供的緩衝區長度


GetClassWord
VB聲明
Declare Function GetClassWord Lib "user32" Alias "GetClassWord" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
說明
為窗口類取得一個整數變量
返回值
Long，由nIndex決定。零表示出錯。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，欲獲得類信息的那個窗口的句柄
nIndex | Long，類信息的正偏移量；這些信息是該類的額外字節中分配的
註解
我的迷惑：在某參考書上是這樣聲明的：Declare Function GetClassWord% Lib "user32" (ByVal hwnd As Long, ByVal nIndex As Long)，即函數的返回值為Integer，而從vb自帶的api查看器中得到的聲明表明返回值是個Long類型


GetClientRect
VB聲明
Declare Function GetClientRect Lib "user32" Alias "GetClientRect" (ByVal hwnd As Long, lpRect As RECT) As Long
說明
返回指定窗口客戶區矩形的大小
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，欲計算大小的目標窗口
lpRect | RECT，指定一個矩形，用客戶區域的大小載入（以像素為單位）
註解
lpRect的左側及頂部區域肯定會被這個函數設為零
函數功能：該函數獲取窗口客戶區的坐標。客戶區坐標指定客戶區的左上角和右下角。由於客戶區坐標是相對子窗口客戶區的左上角而言的，因此左上角坐標為（0，0） 函數原型：BOOL GetClientRect（HWND hWnd，LPRECT lpRect）； 參數： GetLastError 函數。 備註：Windows CE：命令條包含在客戶區中。 速查：Windows NT: 3.1以上版本：Windows：95以上版本： Windows CE：1.0以上版本：頭文件：winuser.h；庫文件：user32.lib


GetDesktopWindow
VB聲明
Declare Function GetDesktopWindow Lib "user32" Alias "GetDesktopWindow" () As Long
說明
獲得代表整個屏幕的一個窗口（桌面窗口）句柄
返回值
Long，桌面窗口的句柄
註解

所有桌面圖標都在這個窗口裡拒絕。它也用於各類屏幕保護程序


GetFocus
VB聲明
Declare Function GetFocus Lib "user32" Alias "GetFocus" () As Long
說明
獲得擁有輸入焦點的窗口的句柄
返回值
Long，擁有焦點的那個窗口的句柄。如沒有窗口擁有輸入焦點，則返回零


控件和消息類3

控件與消息函數：共六頁。 第一頁 ， 第二頁 ，第三頁， 第四頁 ， 第五頁 ， 第六頁
GetForegroundWindow | 獲得前台窗口的句柄
GetLastActivePopup | 獲得在一個給定父窗口中最近激活過的彈出式窗口的句柄
GetParent | 判斷指定窗口的父窗口
GetTopWindow | 搜索內部窗口列表，尋找隸屬於指定窗口的頭一個窗口的句柄
GetUpdateRect | 獲得一個矩形，它描敘了指定窗口中需要更新的那一部分
GetWindow | 獲得一個窗口的句柄，該窗口與某源窗口有特定的關係
GetWindowContextHelpId | 取得與窗口關聯在一起的幫助場景ID
GetWindowLong | 從指定窗口的結構中取得信息
GetWindowPlacement | 獲得指定窗口的狀態及位置信息
GetWindowRect | 獲得整個窗口的範圍矩形，窗口的邊框、標題欄、滾動條及選單等都在這個矩形內
GetWindowText | 取得一個窗體的標題（caption）文字，或者一個控件的內容
GetWindowTextLength | 調查窗口標題文字或控件內容的長短
GetWindowWord | 獲得指定窗口結構的信息
InflateRect | 增大或減小一個矩形的大小
IntersectRect | 這個函數在lpDestRect裡載入一個矩形，它是lpSrc1Rect與lpSrc2Rect兩個矩形的交集
InvalidateRect | 屏蔽一個窗口客戶區的全部或部分區域


GetForegroundWindow
VB聲明
Declare Function GetForegroundWindow Lib "user32" Alias "GetForegroundWindow" () As Long
說明
獲得前台窗口的句柄。這裡的「前台窗口」是指前台應用程序的活動窗口
返回值
Long，前台窗口的句柄
註解

windows nt支持多個桌面，它們相互間是獨立的。每個桌面都有自己的前台窗口


GetLastActivePopup
VB聲明
Declare Function GetLastActivePopup Lib "user32" Alias "GetLastActivePopup" (ByVal hwndOwnder As Long) As Long
說明
獲得在一個給定父窗口中最近激活過的彈出式窗口的句柄（在vb裡使用：vb應用程序不用彈出式窗口，所以這個函數並非特別有用）
返回值
Long，指向最近用過的彈出式窗口的句柄。如未發現彈出窗口。則返回hwndOwnder
參數表
參數 | 類型及說明
hwndOwnder | Long，父窗口


GetParent
VB聲明
Declare Function GetParent Lib "user32" Alias "GetParent" (ByVal hwnd As Long) As Long
說明
判斷指定窗口的父窗口
返回值
Long，父窗口的句柄。如窗口沒有父，或遇到錯誤，則返回零。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，欲測試的窗口的句柄


GetTopWindow
VB聲明
Declare Function GetTopWindow Lib "user32" Alias "GetTopWindow" (ByVal hwnd As Long) As Long
說明
搜索內部窗口列表，尋找隸屬於指定窗口的頭一個窗口的句柄
返回值
Long，位於指定窗口內部的頂級子窗口的句柄
參數表
參數 | 類型及說明
ByVal | Long，想在其中搜尋頂級子的窗口。零表示尋找位於桌面的頂級窗口
註解
Z序列中的頂級窗口也是內部窗口列表的第一個窗口


GetUpdateRect
VB聲明
Declare Function GetUpdateRect Lib "user32" Alias "GetUpdateRect" (ByVal hwnd As Long, lpRect As RECT, ByVal bErase As Long) As Long
說明
獲得一個矩形，它描敘了指定窗口中需要更新的那一部分（在vb裡使用：到一個vb窗體或控件裡發生paint事件的時候，更新區域已被清除了。所以這個函數對於vb來說是沒有意義的。然而，可用一個子類模塊攔截一個窗體或控件的WM_PAINT消息，在vb自行清除之前瞭解更新區域在哪裡）
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hwnd | Long，欲在其中調查更新區域的那個窗口
lpRect | RECT，隨同更新坐標載入的矩形
bErase | Long，設置TRUE（非零），清除更新區域
註解
如窗口類樣式擁有CS_OWNDC集，且窗口映射模式不是MM_TEXT，那麼更新矩形會用邏輯坐標表示


GetWindow
VB聲明
Declare Function GetWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
說明
獲得一個窗口的句柄，該窗口與某源窗口有特定的關係
返回值
Long，由wCmd決定的一個窗口的句柄。如沒有找到相符窗口，或者遇到錯誤，則返回零值。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，源窗口
wCmd | Long，指定結果窗口與源窗口的關係，它們建立在下述常數基礎上：
 | GW_CHILD | 尋找源窗口的第一個子窗口
 | GW_HWNDFIRST | 為一個源子窗口尋找第一個兄弟（同級）窗口，或尋找第一個頂級窗口
 | GW_HWNDLAST | 為一個源子窗口尋找最後一個兄弟（同級）窗口，或尋找最後一個頂級窗口
 | GW_HWNDNEXT | 為源窗口尋找下一個兄弟窗口
 | GW_HWNDPREV | 為源窗口尋找前一個兄弟窗口
 | GW_OWNER | 尋找窗口的所有者
註解
兄弟或同級是指在整個分級結構中位於同一級別的窗口。如某個窗口有五個子窗口，那五個窗口就是兄弟窗口。儘管GetWindow可用於枚舉窗口，但倘若要在枚舉過程中重新定位、創建和清除窗口，那麼EnumWindows和EnumChildWindows更為可靠


GetWindowContextHelpId
VB聲明
Declare Function GetWindowContextHelpId Lib "user32" Alias "GetWindowContextHelpId" (ByVal hWnd As Long) As Long
說明
取得與窗口關聯在一起的幫助場景ID
返回值
Long，幫助場景ID（如果有的話），否則返回零
參數表
參數 | 類型及說明
hWnd | Long，欲獲取幫助場景的那個窗口的句柄
註解
在vb環境中，這個函數不能取得一個vb窗體或控件的幫助場景的ID集


GetWindowLong
VB聲明
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
說明
從指定窗口的結構中取得信息
返回值
Long，由nIndex決定。零表示出錯。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，欲為其獲取信息的窗口的句柄
nIndex | Long，欲取回的信息，可以是下述任何一個常數：
 | GWL_EXSTYLE | 擴展窗口樣式
 | GWL_STYLE | 窗口樣式
 | GWL_WNDPROC | 該窗口的窗口函數的地址
 | GWL_HINSTANCE | 擁有窗口的實例的句柄
 | GWL_HWNDPARENT | 該窗口之父的句柄。不要用SetWindowWord來改變這個值
 | GWL_ID | 對話框中一個子窗口的標識符
 | GWL_USERDATA | 含義由應用程序規定
 | DWL_DLGPROC | 這個窗口的對話框函數地址
 | DWL_MSGRESULT | 在對話框函數中處理的一條消息返回的值
 | DWL_USER | 含義由應用程序規定


GetWindowPlacement
VB聲明
Declare Function GetWindowPlacement Lib "user32" Alias "GetWindowPlacement" (ByVal hwnd As Long, lpwndpl As WINDOWPLACEMENT) As Long
說明
獲得指定窗口的狀態及位置信息
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，欲獲取信息的那個窗口的句柄
lpwndpl | WINDOWPLACEMENT，包含的窗口位置和狀態信息的結構
註解
在調用這個函數之前，請務必設置WINDOWPLACEMENT結構的長度字段


GetWindowRect
VB聲明
Declare Function GetWindowRect Lib "user32" Alias "GetWindowRect" (ByVal hwnd As Long, lpRect As RECT) As Long
說明
獲得整個窗口的範圍矩形，窗口的邊框、標題欄、滾動條及選單等都在這個矩形內
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，想獲得範圍矩形的那個窗口的句柄
lpRect | RECT，屏幕坐標中隨同窗口裝載的矩形
註解
如將它與通過GetDesktopWindow獲得的句柄聯合使用，可獲得對整個可視顯示區域（桌面）進行說明的矩形


GetWindowText
VB聲明
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
說明
取得一個窗體的標題（caption）文字，或者一個控件的內容（在vb裡使用：使用vb窗體或控件的caption或text屬性）
返回值
Long，複製到lpString的字串長度；不包括空中止字符。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，欲獲取文字的那個窗口的句柄
lpString | String，預定義的一個緩衝區，至少有cch+1個字符大小；隨同窗口文字載入
cch | Long，lpString緩衝區的長度
註解
不能用它從另一個應用程序的編輯控件中獲取文字


GetWindowTextLength
VB聲明
Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
說明
調查窗口標題文字或控件內容的長短（在vb裡使用：直接使用vb窗體或控件的caption或text屬性）
返回值
Long，字串長度，不包括空中止字符
參數表
參數 | 類型及說明
hwnd | Long，想調查文字長度的窗口的句柄


GetWindowWord
VB聲明
Declare Function GetWindowWord Lib "user32" Alias "GetWindowWord" (ByVal hwnd As Long, ByVal nIndex As Long) As Integer
說明
獲得指定窗口結構的信息
返回值
Long，由nIndex決定
參數表
參數 | 類型及說明
hwnd | Long，想獲取信息的那個窗口的句柄
nIndex | Long，正偏移值，指出在窗口額外字節分配的空間中取得的信息


InflateRect
VB聲明
Declare Function InflateRect Lib "user32" Alias "InflateRect" (lpRect As RECT, ByVal x As Long, ByVal y As Long) As Long
說明
這個函數用於增大或減小一個矩形的大小。x加在右側區域，並從左側區域減去；如x為正，則能增大矩形的寬度；如x為負，則能減小它。y對頂部與底部區域產生的影響是是類似的
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpRect | RECT，欲修改的矩形
x | Long，用這個數字修改寬度
y | Long，用這個數字修改高度
註解
注意寬度和高度的實際改變量是x及y參數值的兩倍


IntersectRect
VB聲明
Declare Function IntersectRect Lib "user32" Alias "IntersectRect" (lpDestRect As RECT, lpSrc1Rect As RECT, lpSrc2Rect As RECT) As Long
說明
這個函數在lpDestRect裡載入一個矩形，它是lpSrc1Rect與lpSrc2Rect兩個矩形的交集。如兩個源矩形根本未發生重疊，則lpDestRect會被設為一個空矩形
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpDestRect | RECT，目標矩形，用於包含lpSrc1Rect與lpSrc2Rect兩個矩形的重合部分
lpSrc1Rect | RECT，第一個源矩形
lpSrc2Rect | RECT，第二個源矩形


InvalidateRect

InvalidateRect,InvalidateRectBynum
VB聲明
Declare Function InvalidateRect& Lib "user32" (ByVal hwnd As Long, lpRect As RECT, ByVal bErase As Long) Declare Function InvalidateRectBynum& Lib "user32" Alias "InvalidateRect" (ByVal hwnd As Long, ByVal lpRect As Long, ByVal bErase As Long)
說明
這個函數屏蔽一個窗口客戶區的全部或部分區域。這會導致窗口在事件期間部分重畫
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hwnd | Long，待屏蔽窗口的句柄
lpRect | RECT，用於描述待屏蔽矩形部分的一個矩形結構。可用InvalidateRectBynum函數，同時將lpRect設為零（Long數據類型），從而屏蔽（或禁用）整個窗口
bErase | Long，TRUE（非零）導致指定的區域在重畫前先刪除
註解
一旦系統有些更新屏幕的閒置時間可用，windows就會重畫窗口


控件和消息類4

控件與消息函數：共六頁。 第一頁 ， 第二頁 ， 第三頁 ，第四頁， 第五頁 ， 第六頁
IsChild | 判斷一個窗口是否為另一窗口的子或隸屬窗口
IsIconic | 判斷窗口是否已最小化
IsRectEmpty | 判斷一個矩形是否為空
IsWindow | 判斷一個窗口句柄是否有效
IsWindowEnabled | 判斷窗口是否處於活動狀態
IsWindowUnicode | 判斷一個窗口是否為Unicode窗口。這意味著窗口為所有基於文本的消息都接收Unicode文字
IsWindowVisible | 判斷窗口是否可見
IsZoomed | 判斷窗口是否最大化
LockWindowUpdate | 鎖定指定窗口，禁止它更新
MapWindowPoints | 將一個窗口客戶區坐標的點轉換到另一窗口的客戶區坐標系統
MoveWindow | 改變指定窗口的位置和大小
OffsetRect | 通過應用一個指定的偏移，從而讓矩形移動起來
OpenIcon | 恢復一個最小化的程序，並將其激活
PtInRect | 判斷指定的點是否位於矩形內部
RedrawWindow | 重畫全部或部分窗口
ReleaseCapture | 為當前的應用程序釋放滑鼠捕獲


IsChild
VB聲明
Declare Function IsChild Lib "user32" Alias "IsChild" (ByVal hWndParent As Long, ByVal hwnd As Long) As Long
說明
判斷一個窗口是否為另一窗口的子或隸屬窗口
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hWndParent | Long，父窗口的句柄
hwnd | Long，欲測試的窗口的句柄


IsIconic
VB聲明
Declare Function IsIconic Lib "user32" Alias "IsIconic" (ByVal hwnd As Long) As Long
說明
判斷窗口是否已最小化
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hwnd | Long，待檢測窗口的句柄


IsRectEmpty
VB聲明
Declare Function IsRectEmpty Lib "user32" Alias "IsRectEmpty" (lpRect As RECT) As Long
說明
判斷一個矩形是否為空
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpRect | RECT，要檢查的矩形


IsWindow
VB聲明
Declare Function IsWindow Lib "user32" Alias "IsWindow" (ByVal hwnd As Long) As Long
說明
判斷一個窗口句柄是否有效
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hwnd | Long，待檢查窗口的句柄
註解
如在一個程序變量裡容納了窗口句柄，為瞭解它是否仍然有效，就可考慮使用這個函數


IsWindowEnabled
VB聲明
Declare Function IsWindowEnabled Lib "user32" Alias "IsWindowEnabled" (ByVal hwnd As Long) As Long
說明
判斷窗口是否處於活動狀態（在vb裡使用：針對vb窗體和控件，請用enabled屬性）
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hwnd | Long，待檢測窗口的句柄


IsWindowUnicode
VB聲明
Declare Function IsWindowUnicode Lib "user32" Alias "IsWindowUnicode" (ByVal hwnd As Long) As Long
說明
判斷一個窗口是否為Unicode窗口。這意味著窗口為所有基於文本的消息都接收Unicode文字
返回值
Long，如是個Unicode窗口則返回非零值，如是個ANSI窗口則返回零
參數表
參數 | 類型及說明
hwnd | Long，窗口句柄
註解
在vb裡無須擔心這方面的問題，windows會自動轉換引用了文本的消息，以滿足窗口接收消息的需要


IsWindowVisible
VB聲明
Declare Function IsWindowVisible Lib "user32" Alias "IsWindowVisible" (ByVal hwnd As Long) As Long
說明
判斷窗口是否可見
返回值
Long，如窗口可見則返回TRUE（非零）
參數表
參數 | 類型及說明
hwnd | Long，要測試的那個窗口的句柄
註解
窗口可能處於可見狀態，同時仍被位於它頂部的其他可見窗口（排在內部窗口列表的前面）隱藏起來


IsZoomed
VB聲明
Declare Function IsZoomed Lib "user32" Alias "IsZoomed" (ByVal hwnd As Long) As Long
說明
判斷窗口是否最大化
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hwnd | Long，欲測試的窗口的句柄


LockWindowUpdate
VB聲明
Declare Function LockWindowUpdate Lib "user32" Alias "LockWindowUpdate" (ByVal hwndLock As Long) As Long
說明
鎖定指定窗口，禁止它更新。同時只能有一個窗口處於鎖定狀態
返回值
Long，非零表示成功，零表示失敗（比如另外已有一個窗口鎖定）
參數表
參數 | 類型及說明
hwndLock | Long，欲鎖定窗口的句柄。如設為零，則對窗口解鎖
註解
windows會跟蹤鎖定窗口的區域，並會在窗口解鎖後重畫它們。可用GetDCEx獲得一個特殊的設備場景，令其與鎖定窗口協同工作，從而描繪一個加鎖的窗口。這種技術的一個應用場合是創建跟蹤矩形（比如用於改變窗口大小的矩形）


MapWindowPoints
VB聲明
Declare Function MapWindowPoints& Lib "user32" (ByVal hwndFrom As Long, ByVal hwndTo As Long, lppt As POINTAPI, ByVal cPoints As Long)
說明
將一個窗口客戶區坐標的點轉換到另一窗口的客戶區坐標系統（在vb裡使用：無論向函數傳遞單獨一個點，還是傳遞數組中的第一個POINTAPI結構，都要特別謹慎。數組中的條目數量至少等於由cPoints參數指定的數量）
返回值
Long，低字代表映射過程中添加給每個點的水平偏移，高字則代表垂直偏移
參數表
參數 | 類型及說明
hwndFrom | Long，定義源坐標的窗口。用零或桌面窗口句柄指定屏幕坐標
hwndTo | Long，定義目標坐標的窗口。用零或桌面窗口句柄指定屏幕坐標
lppt | POINTAPI，點結構中待轉換的第一個條目。注意RECT結構在內存中組織成兩個連續的POINTAPI結構。這樣就可為該函數創建一個別名，並使用RECT結構；而不是POINTAPI結構。如這樣做時，注意將cPoints的值加倍
cPoints | Long，欲轉換的點數
註解
在vb自帶的api查看器中複製的聲明為：Declare Function MapWindowPoints Lib "user32" Alias "MapWindowPoints" (ByVal hwndFrom As Long, ByVal hwndTo As Long, lppt As Any, ByVal cPoints As Long) As Long，請注意：lppt As Any


MoveWindow
VB聲明
Declare Function MoveWindow Lib "user32" Alias "MoveWindow" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
說明
改變指定窗口的位置和大小。頂級窗口可能受最大或最小尺寸的限制，那些尺寸優先於這裡設置的參數
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hwnd | Long，欲移動窗口的句柄
x | Long，窗口新的左側位置
y | Long，窗口新的頂部位置
nWidth | Long，窗口的新寬度
nHeight | Long，窗口的高寬度
bRepaint | Long，如窗口此時應重畫，則設為TRUE（非零）。FALSE（零）則表明應用程序會自己決定是否重畫窗口


OffsetRect
VB聲明
Declare Function OffsetRect Lib "user32" Alias "OffsetRect" (lpRect As RECT, ByVal x As Long, ByVal y As Long) As Long
說明
該函數通過應用一個指定的偏移，從而讓矩形移動起來。x會添加到右側和左側區域。y添加到頂部和底部區域。偏移方向則取決於參數是正數還是負數，以及採用的是什麼坐標系統
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpRect | RECT，欲移動的矩形
x | Long，水平偏移量
y | Long，垂直偏移量


OpenIcon
VB聲明
Declare Function OpenIcon Lib "user32" Alias "OpenIcon" (ByVal hwnd As Long) As Long
說明
恢復一個最小化的程序，並將其激活
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，欲恢復的窗口
註解
針對vb窗體，應使用vb的WindowState屬性


PtInRect
VB聲明
Declare Function PtInRect Lib "user32" Alias "PtInRect" (lpRect As RECT, pt As POINTAPI) As Long
說明
這個函數判斷指定的點是否位於矩形lpRect內部
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpRect | RECT，欲檢查的矩形
pt | POINTAPI，欲判斷的點
註解
如點位於矩形四邊之內，或矩形的頂部或左側邊線上，則認為它在矩形內部。如位於矩形的右側或底部邊線，則不認為它在矩形內部


RedrawWindow
VB聲明
Declare Function RedrawWindow Lib "user32" Alias "RedrawWindow" (ByVal hwnd As Long, lprcUpdate As RECT, ByVal hrgnUpdate As Long, ByVal fuRedraw As Long) As Long
說明
根據fuRedraw旗標的設置，重畫全部或部分窗口
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，要重畫的窗口的句柄。零表示更新桌面窗口
lprcUpdate | RECT，窗口中需要重畫的一個矩形區域
hrgnUpdate | Long，一個「區」的句柄，這個區描述了要重畫的窗口區域。「區」：Region
fuRedraw | Long，規定具體重畫操作的旗標。下列常數可組合使用，從而進行複雜的重畫行動
 | RDW_ERASE | 重畫前，先清除重畫區域的背景。也必須指定RDW_INVALIDATE
 | RDW_FRAME | 如非客戶區包含在重畫區域中，則對非客戶區進行更新。也必須指定RDW_INVALIDATE
 | RDW_INTERNALPAINT | 即使窗口並非無效，也向其投遞一條WM_PAINT消息
 | RDW_INVALIDATE | 禁用（屏蔽）重畫區域
 | RDW_NOERASE | 禁止刪除重畫區域的背景
 | RDW_NOFRAME | 禁止非客戶區域重畫（如果它是重畫區域的一部分）。也必須指定RDW_VALIDATE
 | RDW_NOINTERNALPAINT | 禁止內部生成或由這個函數生成的任何待決WM_PAINT消息。針對無效區域，仍會生成WM_PAINT消息
 | RDW_VALIDATE | 檢驗重畫區域
 | RDW_ERASENOW | 立即刪除指定的重畫區域
 | RDW_UPDATENOW | 立即更新指定的重畫區域
 | RDW_ALLCHILDREN | 重畫操作包括子窗口（前提是它們存在於重畫區域）
 | RDW_NOCHILDREN | 重畫操作排除子窗口（前提是它們存在於重畫區域）
註解
如針對桌面窗口應用這個函數，則應用程序必須用RDW_ERASE旗標重畫桌面


ReleaseCapture
VB聲明
Declare Function ReleaseCapture Lib "user32" Alias "ReleaseCapture" () As Long
說明
為當前的應用程序釋放滑鼠捕獲
返回值
Long，TRUE（非零）表示成功，零表示失敗
註解
我的理解：與SetCapture函數一起使用，用於判斷滑鼠離開（mouseleave）事件


控件和消息類5

控件與消息函數：共六頁。 第一頁 ， 第二頁 ， 第三頁 ， 第四頁 ，第五頁， 第六頁
ScreenToClient | 判斷屏幕上一個指定點的客戶區坐標
ScrollWindow | 滾動窗口客戶區的全部或一部分
ScrollWindowEx | 根據附加的選項，滾動窗口客戶區的全部或部分
SetActiveWindow | 激活指定的窗口
SetCapture | 將滑鼠捕獲設置到指定的窗口
SetClassLong | 為窗口類設置一個Long變量條目
SetClassWord | 為窗口類設置一個條目
SetFocusAPI | 將輸入焦點設到指定的窗口。如有必要，會激活窗口
SetForegroundWindow | 將窗口設為系統的前台窗口
SetParent | 指定一個窗口的新父
SetRect | 設置指定矩形的內容
SetRectEmpty | 將矩形設為一個空矩形
SetWindowContextHelpId | 為指定的窗口設置幫助場景（上下文）ID
SetWindowLong | 在窗口結構中為指定的窗口設置信息
SetWindowPlacement | 設置窗口狀態和位置信息
SetWindowPos | 為窗口指定一個新位置和狀態


ScreenToClient
VB聲明
Declare Function ScreenToClient Lib "user32" Alias "ScreenToClient" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
說明
判斷屏幕上一個指定點的客戶區坐標
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hwnd | Long，一個窗口的句柄，該窗口定義了要使用的客戶區坐標系統
lpPoint | POINTAPI，屏幕坐標系統中包含了屏幕點的結構。這個函數會隨同相應的客戶區坐標（由hwnd決定）載入結構


ScrollWindow
VB聲明
Declare Function ScrollWindow Lib "user32" Alias "ScrollWindow" (ByVal hWnd As Long, ByVal XAmount As Long, ByVal YAmount As Long, lpRect As RECT, lpClipRect As RECT) As Long
說明
滾動窗口客戶區的全部或一部分
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hWnd | Long，待滾動窗口的句柄
XAmount | Long，水平滾動的距離。正值向右滾動，負值向左滾動
YAmount | Long，垂直滾動的距離。正值向下滾動，負值向上滾動
lpRect | RECT，用客戶區坐標表示的一個矩形，它定義了客戶區要滾動的一個部分。如設為NULL，則滾動整個客戶區。在NULL的情況下，子窗口和控件的位置也會隨同任何無效區域移動。否則，子窗口和無效區域不會一起移動。因此，在滾動之前，如指定了lpRect，一個明智的做法是先調用UpdateWindow函數
lpClipRect | RECT，指定剪切區域。只有這個矩形的區域才可能滾動。該矩形優先於lpRect。可設為NULL


ScrollWindowEx
VB聲明
Declare Function ScrollWindowEx Lib "user32" Alias "ScrollWindowEx" (ByVal hwnd As Long, ByVal dx As Long, ByVal dy As Long, lprcScroll As RECT, lprcClip As RECT, ByVal hrgnUpdate As Long, lprcUpdate As RECT, ByVal fuScroll As Long) As Long
說明
根據附加的選項，滾動窗口客戶區的全部或部分
返回值
Long，常數值SIMPLEREGION，COMPLEXREGION，或NULLREGION，它們描述了無效區域的類型
參數表
參數 | 類型及說明
hwnd | Long，欲滾動的窗口的句柄
dx | Long，水平滾動的距離。正值向右滾動，負值向左滾動
dy | Long，垂直滾動的距離。正值向下滾動，負值向上滾動
lprcScroll | RECT，用客戶區坐標表示的一個矩形，它定義了客戶區要滾動的一個部分。如設為零，則滾動整個客戶區
lprcClip | RECT，指定一個剪切矩形。只有這個矩形的內容才可能滾動。該矩形優先於lpRect。可能為零，表示不進行剪切處理（原文：Clipping rectangle. Only the area within this rectangle may be scrolled. This rectangle takes priority over lpRect. May be zero, in which case no clipping takes place.）
hrgnUpdate | Long，滾動過程中隨同無效區域載入的一個「區」。可能是零
lprcUpdate | RECT，隨同一個矩形載入的矩形結構，該矩形定義了滾動過程中無效的區域。可能是零
fuScroll | Long，對滾動進行控制的旗標。可以是下述任何常數的組合
 | SW_ERASE | 清除新無效區域的背景
 | SW_INVALDATE | 使滾動時未覆蓋的區域無效
 | SW_SCROLLCHILDREN | 滾動區域內的子窗口進行等量移動。為避免得到無效的結果，在使用這個函數的時候，請確定子窗口或控件要麼完全在滾動區域中，要麼完全在滾動區域外


SetActiveWindow
VB聲明
Declare Function SetActiveWindow Lib "user32" Alias "SetActiveWindow" (ByVal hwnd As Long) As Long
說明
激活指定的窗口
返回值
Long，前一個活動窗口的句柄
參數表
參數 | 類型及說明
hwnd | Long，待激活窗口的句柄
註解
在vb裡使用這個函數要小心，它不會改變輸入焦點，所以焦點可能設向一個不活動窗口，最好換用SetFocusAPI函數來激活窗口。如指定的窗口不從屬於當前輸入線程，則沒有任何效果


SetCapture
VB聲明
Declare Function SetCapture Lib "user32" Alias "SetCapture" (ByVal hwnd As Long) As Long
說明
將滑鼠捕獲設置到指定的窗口。在滑鼠按鈕按下的時候，這個窗口會為當前應用程序或整個系統接收所有滑鼠輸入
返回值
Long，之前擁有滑鼠捕獲的窗口的句柄
參數表
參數 | 類型及說明
hwnd | Long，要接收所有滑鼠輸入的窗口的句柄
註解
我的理解：與ReleaseCapture函數一起使用，用於判斷滑鼠離開（mouseleave）事件


SetClassLong
VB聲明
Declare Function SetClassLong Lib "user32" Alias "SetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As ) As Long
說明
為窗口類設置一個Long變量條目
返回值
Long，由nIndex指定的的類信息的前一個值。零表示出錯。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，欲為其設置類信息的那個窗口的句柄
nIndex | Long，參考GetClassLong函數的nIndex參數說明
dwNewLong | Long，類信息的新值，具體取決於nIndex
註解
使用這個函數一定要小心。記住，這裡的變動會影響指定類的所有窗口，但除非窗口重畫，否則那個變動不會顯露出來


SetClassWord
VB聲明
Declare Function SetClassWord Lib "user32" Alias "SetClassWord" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal wNewWord As Long) As Long
說明
為窗口類設置一個條目
返回值
Long，由nIndex指定的類信息的前一個值。零表示出錯。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，欲為其獲得類信息的那個窗口的句柄
nIndex | Long，信息結構已分配額外空間的正偏移量
wNewWord | Long，由nIndex指定的類信息的新值
註解
使用這個函數一定要小心。記住，這裡的變動會影響指定類的所有窗口，但除非窗口重畫，否則那個變動不會顯露出來


SetFocusAPI
VB聲明
Declare Function SetFocusAPI& Lib "user32" Alias "SetFocus" (ByVal hwnd As Long)
說明
將輸入焦點設到指定的窗口。如有必要，會激活窗口
返回值
Long，前一個擁有焦點的窗口的句柄
參數表
參數 | 類型及說明
hwnd | Long，準備接收焦點的窗口的句柄
註解
在vb裡對窗體和控件最好使用SetFocus方法。如指定的窗口不屬於當前輸入線程，則該函數是沒有效果的。它用SetFocusAPI這個別名避免與vb的SetFocus方法發生衝突


SetForegroundWindow
VB聲明
Declare Function SetForegroundWindow Lib "user32" Alias "SetForegroundWindow" (ByVal hwnd As Long) As Long
說明
將窗口設為系統的前台窗口。這個函數可用於改變用戶目前正在操作的應用程序
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，帶到前台的窗口
註解
不應隨便使用它，因為一旦程序突然從後台進入前台，可能會使用戶產生迷惑


SetParent
VB聲明
Declare Function SetParent Lib "user32" Alias "SetParent" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
說明
指定一個窗口的新父（在vb裡使用：利用這個函數，vb可以多種形式支持子窗口。例如，可將控件從一個容器移至窗體中的另一個。用這個函數在窗體間移動控件是相當冒險的，但卻不失為一個有效的辦法。如真的這樣做，請在關閉任何一個窗體之前，注意用SetParent將控件的父設回原來的那個）
返回值
Long，前一個父窗口的句柄
參數表
參數 | 類型及說明
hWndChild | Long，子窗口的句柄
hWndNewParent | Long，hWndChild的新父
註解
可用這個函數在運行期將vb控件置入容器控件內部（比如將一個按鈕設成圖像或窗體控件的子窗口），或者將控件從一個容器控件移至另一個。控件移至另一個父後，它的位置將由新父的坐標系統決定。這樣一來，有必要重新規定控件的位置，使其能在目標位置顯示出來


SetRect
VB聲明
Declare Function SetRect Lib "user32" Alias "SetRect" (lpRect As RECT, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
說明
設置指定矩形的內容
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpRect | RECT，欲設置的矩形
X1 | Long，左側區域（Left）的值
Y1 | Long，頂部區域（Top）的值
X2 | Long，右側區域（Right）的值
Y2 | Long，底部區域（Bottom）的值


SetRectEmpty
VB聲明
Declare Function SetRectEmpty Lib "user32" Alias "SetRectEmpty" (lpRect As RECT) As Long
說明
將矩形lpRect設為一個空矩形（所有字段都為空）
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpRect | RECT，欲設為空的矩形


SetWindowContextHelpId
VB聲明
Declare Function SetWindowContextHelpId Lib "user32" Alias "SetWindowContextHelpId" (ByVal hWnd As Long, ByVal dw As Long) As Long
說明
為指定的窗口設置幫助場景（上下文）ID
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hWnd | Long，窗口句柄
dw | Long，新的幫助場景ID


SetWindowLong
VB聲明
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
說明
在窗口結構中為指定的窗口設置信息
返回值
Long，指定數據的前一個值
參數表
參數 | 類型及說明
hwnd | Long，欲為其取得信息的窗口的句柄
nIndex | Long，請參考GetWindowLong函數的nIndex參數的說明
dwNewLong | Long，由nIndex指定的窗口信息的新值


SetWindowPlacement
VB聲明
Declare Function SetWindowPlacement Lib "user32" Alias "SetWindowPlacement" (ByVal hwnd As Long, lpwndpl As WINDOWPLACEMENT) As Long
說明
設置窗口狀態和位置信息
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，欲設置位置信息的窗口的句柄
lpwndpl | WINDOWPLACEMENT，這個結構包含了窗口的位置與狀態信息


SetWindowPos
VB聲明
Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
說明
這個函數能為窗口指定一個新位置和狀態。它也可改變窗口在內部窗口列表中的位置。該函數與DeferWindowPos函數相似，只是它的作用是立即表現出來的（在vb裡使用：針對vb窗體，如它們在win32下屏蔽或最小化，則需重設最頂部狀態。如有必要，請用一個子類處理模塊來重設最頂部狀態
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，欲定位的窗口
hWndInsertAfter | Long，窗口句柄。在窗口列表中，窗口hwnd會置於這個窗口句柄的後面。也可能選用下述值之一：
 | HWND_BOTTOM | 將窗口置於窗口列表底部
 | HWND_TOP | 將窗口置於Z序列的頂部；Z序列代表在分級結構中，窗口針對一個給定級別的窗口顯示的順序
 | HWND_TOPMOST | 將窗口置於列表頂部，並位於任何最頂部窗口的前面
 | HWND_NOTOPMOST | 將窗口置於列表頂部，並位於任何最頂部窗口的後面
x | Long，窗口新的x坐標。如hwnd是一個子窗口，則x用父窗口的客戶區坐標表示
y | Long，窗口新的y坐標。如hwnd是一個子窗口，則y用父窗口的客戶區坐標表示
cx | Long，指定新的窗口寬度
cy | Long，指定新的窗口高度
wFlags | Long，包含了旗標的一個整數
 | SWP_DRAWFRAME | 圍繞窗口畫一個框
 | SWP_HIDEWINDOW | 隱藏窗口
 | SWP_NOACTIVATE | 不激活窗口
 | SWP_NOMOVE | 保持當前位置（x和y設定將被忽略）
 | SWP_NOREDRAW | 窗口不自動重畫
 | SWP_NOSIZE | 保持當前大小（cx和cy會被忽略）
 | SWP_NOZORDER | 保持窗口在列表的當前位置（hWndInsertAfter將被忽略）
 | SWP_SHOWWINDOW | 顯示窗口
 | SWP_FRAMECHANGED | 強迫一條WM_NCCALCSIZE消息進入窗口，即使窗口的大小沒有改變
註解
窗口成為最頂級窗口後，它下屬的所有窗口也會進入最頂級。一旦將其設為非最頂級，則它的所有下屬和物主窗口也會轉為非最頂級。Z序列用垂直於屏幕的一根假想Z軸量化這種從頂部到底部排列的窗口順序


控件和消息類6

控件與消息函數：共六頁。 第一頁 ， 第二頁 ， 第三頁 ， 第四頁 ， 第五頁 ，第六頁
SetWindowText | 設置窗口的標題文字或控件的內容
SetWindowWord | 在窗口結構中為指定的窗口設置信息
ShowOwnedPopups | 顯示或隱藏由指定窗口所有的全部彈出式窗口
ShowWindow | 控制窗口的可見性
ShowWindowAsync | 與ShowWindow相似
SubtractRect | 裝載矩形lprcDst，它是在矩形lprcSrc1中減去lprcSrc2得到的結果
TileWindows | 以平舖順序排列窗口
UnionRect | 裝載一個lpDestRect目標矩形，它是lpSrc1Rect和lpSrc2Rect聯合起來的結果
UpdateWindow | 強制立即更新窗口
ValidateRect | 校驗窗口的全部或部分客戶區
WindowFromPoint | 返回包含了指定點的窗口的句柄。忽略屏蔽、隱藏以及透明窗口
完


SetWindowText
VB聲明
Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
說明
設置窗口的標題文字或控件的內容（在vb裡使用：針對vb窗體，應使用caption或text屬性）
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，要設置文字的窗口的句柄
lpString | String，要設到hwnd窗口中的文字


SetWindowWord
VB聲明
Declare Function SetWindowWord Lib "user32" Alias "SetWindowWord" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal wNewWord As Long) As Long
說明
在窗口結構中為指定的窗口設置信息（在vb裡使用：使用時要謹慎）
返回值
Long，指定數據的前一個值
參數表
參數 | 類型及說明
hwnd | Long，欲為其設置信息的那個窗口的句柄
nIndex | Long，參考對GetWindowWord函數的nIndex參數的說明
wNewWord | Long，由nIndex指定的窗口信息的新值


ShowOwnedPopups
VB聲明
Declare Function ShowOwnedPopups Lib "user32" Alias "ShowOwnedPopups" (ByVal hwnd As Long, ByVal fShow As Long) As Long
說明
顯示或隱藏由指定窗口所有的全部彈出式窗口（在vb裡使用：並不特別有用，因為vb不用彈出式窗口）
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，父窗口的句柄
fShow | Long，TRUE（非零）表示顯示由hwnd所有的所有彈出式窗口；FALSE（零）則隱藏它們


ShowWindow
VB聲明
Declare Function ShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
說明
控制窗口的可見性（在vb裡使用：針對vb窗體及控件，請使用對應的vb屬性）
返回值
Long，如窗口之前是可見的，則返回TRUE（非零），否則返回FALSE（零）
參數表
參數 | 類型及說明
hwnd | Long，窗口句柄，要向這個窗口應用由nCmdShow指定的命令
nCmdShow | Long，為窗口指定可視性方面的一個命令。請用下述任何一個常數
 | SW_HIDE | 隱藏窗口，活動狀態給令一個窗口
 | SW_MINIMIZE | 最小化窗口，活動狀態給令一個窗口
 | SW_RESTORE | 用原來的大小和位置顯示一個窗口，同時令其進入活動狀態
 | SW_SHOW | 用當前的大小和位置顯示一個窗口，同時令其進入活動狀態
 | SW_SHOWMAXIMIZED | 最大化窗口，並將其激活
 | SW_SHOWMINIMIZED | 最小化窗口，並將其激活
 | SW_SHOWMINNOACTIVE | 最小化一個窗口，同時不改變活動窗口
 | SW_SHOWNA | 用當前的大小和位置顯示一個窗口，不改變活動窗口
 | SW_SHOWNOACTIVATE | 用最近的大小和位置顯示一個窗口，同時不改變活動窗口
 | SW_SHOWNORMAL | 與SW_RESTORE相同


ShowWindowAsync
VB聲明
Declare Function ShowWindowAsync Lib "user32" Alias "ShowWindowAsync" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
說明
與ShowWindow相似，只是這時的ShowWindow命令會投遞到指定的窗口，然後進行異步處理。這樣一來，就可控制從屬於另一個進程的窗口的可視情況。同時無須擔心另一個進程掛起的時候，自己的應用程序也會牽連其中
返回值
Long，如窗口之前是可見的，則返回TRUE（非零），否則返回FALSE（零）
參數表
參數 | 類型及說明
hWnd | Long，欲接收ShowWindow命令的窗口
nCmdShow | Long，與ShowWindow相同


SubtractRect
VB聲明
Declare Function SubtractRect Lib "user32" Alias "SubtractRect" (lprcDst As RECT, lprcSrc1 As RECT, lprcSrc2 As RECT) As Long
說明
這個函數會裝載矩形lprcDst，它是在矩形lprcSrc1中減去lprcSrc2得到的結果
返回值
Long，TRUE（非零）表示成功，零表示失敗
參數表
參數 | 類型及說明
lprcDst | RECT，準備包容lprcSrc1減lprcSrc2結果的目標矩形
lprcSrc1 | RECT，第一個源矩形
lprcSrc2 | RECT，第二個源矩形
註解
lprcSrc1與lprcSrc2這兩個矩形必須在水平或垂直方向完全相交。換句話說，倘若在lprcSrc1中拿掉與lprcSrc2相交的lprcDst部分，結果必須是個矩形


TileWindows
VB聲明
Declare Function TileWindows% Lib "user32" (ByVal hwndParent As Long, ByVal wHow As Long, lpRect As RECT, ByVal cKids As Long, lpKids As Long) Declare Function TileWindowsBynum% Lib "user32" Alias "TileWindows" (ByVal hwndParent As Long, ByVal wHow As Long, ByVal lpRect As Long, ByVal cKids As Long, ByVal lpKids As Long)
說明
以平舖順序排列窗口（在vb裡使用：對頂級窗口和MDI子窗口有效）
返回值
Integer，成功排列的窗口數量，零表示失敗
參數表
參數 | 類型及說明
hwndParent | Long，欲對其子窗口進行排列的父窗口。可用GetDesktopWindow函數獲得頂級窗口（桌面）的句柄
wHow | Long，MDITILE_HORIZONTAL或MDITILE_VERTICAL，用於設置平舖方向（水平或垂直）
lpRect | Long，要在其中平舖窗口的矩形，可設為NULL，表示用整個客戶區域
cKids | Long，lpKids數組中指定的子窗口數量
lpKids | Long，欲排列子窗口列表的第一個元素。如傳遞NULL（務必將參數定義成ByVal Long），可排列所有子窗口
註解
這個函數不能對諸如控件的子窗口產生作用——只對對頂級窗口和MDI子窗口有用。在MDI窗口的情況下，指定的父窗口應是MDIClient窗口的句柄，不應是MDI窗體本身的窗口句柄。可用GetParent獲得正確的句柄


UnionRect
VB聲明
Declare Function UnionRect Lib "user32" Alias "UnionRect" (lpDestRect As RECT, lpSrc1Rect As RECT, lpSrc2Rect As RECT) As Long
說明
這個函數會裝載一個lpDestRect目標矩形，它是lpSrc1Rect和lpSrc2Rect聯合起來的結果。目標矩形的所有點都同時位於兩個源矩形裡；也即是它們的一個交集
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpDestRect | RECT，用於容納lpSrc1Rect和lpSrc2Rect聯合運算結果的目標矩形
lpSrc1Rect | RECT，第一個源矩形
lpSrc2Rect | RECT，第二個源矩形


UpdateWindow
VB聲明
Declare Function UpdateWindow Lib "user32" Alias "UpdateWindow" (ByVal hwnd As Long) As Long
說明
強制立即更新窗口，窗口中以前屏蔽的所有區域都會重畫（在vb裡使用：如vb窗體或控件的任何部分需要更新，可考慮直接使用refresh方法
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hwnd | Long，欲更新窗口的句柄


ValidateRect
VB聲明
Declare Function ValidateRect& Lib "user32" (ByVal hwnd As Long, lpRect As RECT) Declare Function ValidateRectBynum& Lib "user32" Alias "ValidateRect" (ByVal hwnd As Long, ByVal lpRect As Long)
說明
校驗窗口的全部或部分客戶區。這樣便可告之windows指定的區域不需要重畫
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hwnd | Long，欲檢驗的窗口句柄
lpRect | RECT，指定一個矩形結構，用於描敘欲校驗的矩形部分。可使用ValidateRectBynum，同時將lpRect設為零（Long數據類型），從而對整個窗口進行校驗


硬體與系統類函數1

硬體與系統函數：共七頁。第一頁， 第二頁 ， 第三頁 ， 第四頁 ， 第五頁 ， 第六頁 ， 第七頁
ActivateKeyboardLayout | 激活一個新的鍵盤佈局。鍵盤佈局定義了按鍵在一種物理性鍵盤上的位置與含義
Beep | 用於生成簡單的聲音
CharToOem | 將一個字串從ANSI字符集轉換到OEM字符集
ClipCursor | 將指針限制到指定區域
ConvertDefaultLocale | 將一個特殊的地方標識符轉換成真實的地方ID
CreateCaret | 根據指定的信息創建一個插入符（光標），並將它選定為指定窗口的默認插入符
DestroyCaret | 清除（破壞）一個插入符
EnumCalendarInfo | 枚舉在指定「地方」環境中可用的日曆信息
EnumDateFormats | 列舉指定的「當地」設置中可用的長、短日期格式
EnumSystemCodePages | 枚舉系統中已安裝或支持的代碼頁
EnumSystemLocales | 枚舉系統已經安裝或提供支持的「地方」設置
EnumTimeFormats | 枚舉一個指定的地方適用的時間格式
ExitWindowsEx | 退出windows，並用特定的選項重新啟動
ExpandEnvironmentStrings | 擴充環境字串
FreeEnvironmentStrings | 翻譯指定的環境字串塊
GetACP | 判斷目前正在生效的ANSI代碼頁


ActivateKeyboardLayout
VB聲明
Declare Function ActivateKeyboardLayout Lib "user32" Alias "ActivateKeyboardLayout" (ByVal HKL As Long, ByVal flags As Long) As Long
說明
激活一個新的鍵盤佈局。鍵盤佈局定義了按鍵在一種物理性鍵盤上的位置與含義
返回值
Long，如執行成功，返回前一個鍵盤佈局的句柄；零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
HKL | Long，指定一個鍵盤佈局的句柄。這個佈局是隨同LoadKeyboardLayout 或 GetKeyboardLayoutList函數載入的。也可用HKL_NEXT常數激活下一個已裝載佈局；或用HKL_PREV載入前一個佈局
flags | Long，將指定的鍵盤移至內部鍵盤佈局列表的起始處


Beep
VB聲明
Declare Function Beep Lib "kernel32" Alias "Beep" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
說明
用於生成簡單的聲音
返回值
Long，TRUE（非零）表示成功，否則返回零。會設置GetLastError
參數表
參數 | 類型及說明
dwFreq | Long，聲音頻率（從37Hz到32767Hz）。在windows95中忽略
dwDuration | Long，聲音的持續時間，以毫秒為單位。如為-1，表示一直播放聲音，直到再次調用該函數為止。在windows95中會被忽略
註解
在windows95中，這個函數簡單的播放默認系統響鈴


CharToOem

CharToOem, CharToOemBuff
VB聲明
Declare Function CharToOem& Lib "user32" Alias "CharToOemA" (ByVal lpszSrc As String, ByVal lpszDst As String) Declare Function CharToOemBuff& Lib "user32" Alias "CharToOemBuffA" (ByVal lpszSrc As String, ByVal lpszDst As String, ByVal cchDstLength As Long)
說明
將一個字串從ANSI字符集轉換到OEM字符集。CharToOemBuff允許我們指定字串中需轉換的字符數量
返回值
Long，肯定是TRUE
參數表
參數 | 類型及說明
lpszSrc | String，欲轉換的字串
lpszDst | String，用於包含轉換結果的OEM字串。注意事先將字串初始化成合適的長度。可將相同的字串傳遞給這兩個參數，執行本地轉換（即在同一個字串中轉換）
cchDstLength | Long，在字串lpszSrc中想轉換的字符數量
註解
如用一個Win32類型庫訪問寬字符函數CharToOemW，則lpszSrc是一個Unicode字串，且lpszDst參數絕對不能與lpszSrc相同


ClipCursor

ClipCursor, ClipCursorBynum
VB聲明
Declare Function ClipCursor& Lib "user32" (lpRect As RECT) Declare Function ClipCursorBynum& Lib "user32" Alias "ClipCursor" (ByVal lpRect As Long)
說明
將指針限制到指定區域。ClipCursorBynum是一個別名，允許我們清除以前設置的指針剪切區域
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpRect | RECT，指定一個矩形，用像素屏幕坐標系統表示。滑鼠指針必須在這個區域內運動。如使用函數的ClipCursorBynum形式，則可將參數設為Long值，用它傳遞一個0，禁止指針剪切，恢復常規運作狀態
註解
指針剪切後，按Ctrl+Alt+Del可簡單的清除剪切區域


ConvertDefaultLocale
VB聲明
Declare Function ConvertDefaultLocale Lib "KERNEL32" Alias "ConvertDefaultLocale" (ByVal Locale As Long) As Long
說明
將一個特殊的地方標識符轉換成真實的地方ID
返回值
Long，如執行成功，返回實際的地方ID。如失敗則返回傳遞給Locale參數的值
參數表
參數 | 類型及說明
Locale | Long，如設為常數LOCALE_SYSTEM_DEFAULT和LOCALE_USER_DEFAULT，可分別接收默認的系統或用戶地方設置。如設為零，則取得語言方面的地方設置。主語言ID用於接收採用了默認子語言的地方信息
註解
用LOCALE_SYSTEM_DEFAULT和LOCALE_USER_DEFAULT這兩個值調用函數時，得到的結果與GetSystemDefaultLCID 和 GetUserDefaultLCID函數是一樣的


CreateCaret
VB聲明
Declare Function CreateCaret Lib "user32" Alias "CreateCaret" (ByVal hwnd As Long, ByVal hBitmap As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
說明
根據指定的信息創建一個插入符（光標），並將它選定為指定窗口的默認插入符。插入符可以是一根短線、一個方塊或者一幅位圖。通常用插入符指示文字在文字框中的插入位置
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，擁有插入符的那個窗口的句柄
hBitmap | Long，用作插入符的一幅位圖的句柄。可以是0或1；在這種情況下，插入符可通過nWidth和nHeight參數創建。如設為1，則新插入符以灰色顯示；而不是傳統的黑色
nWidth | Long，採用邏輯單位的插入符的寬度
nHeight | Long，採用邏輯單位的插入符的高度
註解
如創建一個插入符，會同時清除原先的插入符；效果等同於DestroyCaret函數。在vb的LostFocus事件期間，不要試圖用DestroyCaret函數清除一個插入符。這是由於vb的LostFocus事件不會接收DestroyCaret直到另一個窗口已經有焦點。因此，倘若在那個時候調用DestroyCaret，會破壞其他窗口的插入符。如果準備自己管理插入符，可以（而且應該）在WM_KILLFOCUS消息期間清除插入符
在vb裡使用
可以使用。但在應用程序切換時，標準的vb文本控件不能處理GotFocus 和 LostFocus事件。因此，很難知道何時為一個控件設置插入符。此外，vb假設插入符為一根短豎線，並據此定義它的位置，所以其他形式的插入符可能無法正確定位


DestroyCaret
VB聲明
Declare Function DestroyCaret Lib "user32" Alias "DestroyCaret" () As Long
說明
清除（破壞）一個插入符
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
註解

參考CreateCaret函數的註解


EnumCalendarInfo
VB聲明
Declare Function EnumCalendarInfo Lib "kernel32" Alias "EnumCalendarInfoA" (ByVal lpCalInfoEnumProc As Long, ByVal Locale As Long, ByVal Calendar As Long, ByVal CalType As Long) As Long
說明
枚舉在指定「地方」環境中可用的日曆信息
返回值
Long，TRUE（非零）表示成功，零表示失敗。會將GetLastError設置設為下述某個常數：ERROR_BADDB，ERROR_INVALID_FLAGS，ERROR_INVALID_PARAMETER
參數表
參數 | 類型及說明
lpCalInfoEnumProc | Long，指向為每個日曆都調用的一個函數的指針。用Addressof運算符得到位於一個標準模塊中的函數的地址
Locale | Long，用於決定具體枚舉日曆的「地方」設置
Calendar | Long，如設為常數ENUM_ALL_CALANDARS，表示枚舉所有日曆；如設為1，枚舉本地羅馬日曆，2枚舉英國羅馬日曆，3枚舉日本日曆，4枚舉中國日曆，5枚舉朝鮮日曆
CalType | Long，CAL_函數之一，指示欲枚舉的信息類型


EnumDateFormats
VB聲明
Declare Function EnumDateFormats Lib "KERNEL32" Alias "EnumDateFormats" (ByVal lpDateFmtEnumProc As Long, ByVal Locale As Long, ByVal dwFlags As Long) As Long
說明
列舉指定的「當地」設置中可用的長、短日期格式
返回值
Long，TRUE（非零）表示成功，零表示失敗。會將GetLastError設置設為下述某個常數：ERROR_BADDB，ERROR_INVALID_FLAGS，ERROR_INVALID_PARAMETER
參數表
參數 | 類型及說明
lpDateFmtEnumProc | Long，指向為每種日期格式都調用的一個函數的指針。用Addressof運算符得到位於一個標準模塊中的函數的地址
Locale | Long，用於決定具體枚舉格式的「地方」的設置
dwFlags | Long，DATE_SHORTDATE 或 DATE_LONGDATE常數之一，分別用於枚舉短或長日期格式


EnumSystemCodePages
VB聲明
Declare Function EnumSystemCodePages Lib "KERNEL32" Alias "EnumSystemCodePages" (ByVal lpCodePageEnumProc As Long, ByVal dwFlags As Long) As Long
說明
枚舉系統中已安裝或支持的代碼頁
返回值
Long，TRUE（非零）表示成功，零表示失敗。會將GetLastError設置設為下述某個常數：ERROR_BADDB，ERROR_INVALID_FLAGS，ERROR_INVALID_PARAMETER
參數表
參數 | 類型及說明
lpCodePageEnumProc | Long，指向為每個代碼頁都調用的一個函數的指針。用Addressof運算符得到位於一個標準模塊中的函數的地址
dwFlags | Long，常數CP_INSTALLED表示枚舉已安裝的所有代碼頁，CP_SUPPORTED表示枚舉所有支持的代碼頁


EnumSystemLocales
VB聲明
Declare Function EnumSystemLocales Lib "KERNEL32" Alias "EnumSystemLocales" (ByVal lpLocaleEnumProc As Long, ByVal dwFlags As Long) As Long
說明
枚舉系統已經安裝或提供支持的「地方」設置
返回值
Long，TRUE（非零）表示成功，零表示失敗。會將GetLastError設置設為下述某個常數：ERROR_BADDB，ERROR_INVALID_FLAGS，ERROR_INVALID_PARAMETER
參數表
參數 | 類型及說明
lpLocaleEnumProc | Long，指向為每個「地方」都調用的一個函數的指針。用Addressof運算符得到位於一個標準模塊中的函數的地址
dwFlags | Long，常數LCID_INSTALLED表示枚舉已安裝的所有地方；LCID_SUPPORTED則枚舉所有支持的地方


EnumTimeFormats
VB聲明
Declare Function EnumTimeFormats Lib "KERNEL32" Alias "EnumTimeFormats" (ByVal lpTimeFmtEnumProc As Long, ByVal Locale As Long, ByVal dwFlags As Long) As Long
說明
枚舉一個指定的地方適用的時間格式
返回值
Long，TRUE（非零）表示成功，零表示失敗。會將GetLastError設置設為下述某個常數：ERROR_BADDB，ERROR_INVALID_FLAGS，ERROR_INVALID_PARAMETER
參數表
參數 | 類型及說明
lpTimeFmtEnumProc | Long，指向為每種時間格式都調用的一個函數的指針。用Addressof運算符得到位於一個標準模塊中的函數的地址
Locale | Long，用於決定具體枚舉格式的「地方」設置
dwFlags | Long，未用，設為零


ExitWindowsEx
VB聲明
Declare Function ExitWindowsEx Lib "user32" Alias "ExitWindowsEx" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
說明
退出windows，並用特定的選項重新啟動
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
uFlags | Long，指定下述一個或多個標誌（用OR運算符合併到一起）
 | EWX_FORCE | 強迫中止沒有響應的進程
 | EWX_LOGOFF | 中止進程，然後註銷
 | EWX_SHUTDOWN | 關掉系統電源（如果可能的話，ATX電源就可以）
 | EWX_REBOOT | 重新引導系統
 | EWX_SHUTDOWN | 關閉系統
dwReserved | Long，保留，設為零
註解
這個函數調用後會立刻返回，系統關閉過程是在後台進行的。注意先中止自己的應用程序，使關閉過程更顯平順。當然，您的進程必須有足夠的優先權，否則也不能執行這種操作


ExpandEnvironmentStrings
VB聲明
Declare Function ExpandEnvironmentStrings Lib "kernel32" Alias "ExpandEnvironmentStringsA" (ByVal lpSrc As String, ByVal lpDst As String, ByVal nSize As Long) As Long
說明
擴充環境字串。具體操作過程與命令行處理的所為差不多。也就是說，將由百分號封閉起來的環境變量名轉換成那個變量的內容。比如，「%path%」會擴充成完整路徑。在vb裡經常用於為新進程創建一個環境塊
返回值
Long，lpDst要求的緩衝區的大小。如nSize小於這個數字（也就是說，緩衝區太小，以至不能全容下擴充過後的字串），那麼lpDst不會被載入。可利用這個結果改變字串的大小。零表示遇到錯誤。會設置GetLastError
參數表
參數 | 類型及說明
lpSrc | String，欲擴充的字串
lpDst | String，擴充過後的字串
nSize | Long，lpDst的長度。注意預先對lpDst進行初始化，使其與這個長度相符
示例
Dim s$, dl& Dim y As String * 5□ s$ = "%PATH%" dl& = ExpandEnvironmentStrings(s$, y, 499) Print y


FreeEnvironmentStrings
VB聲明
Declare Function FreeEnvironmentStrings& Lib "kernel32" Alias "FreeEnvironmentStringsA" (ByVal lpsz As Long)
說明
翻譯指定的環境字串塊
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpsz | Long，指向一個內存塊的句柄；那個內存塊是以前通過GetEnvironmentStrings函數獲得的
註解
開頭的聲明來自於我的資料，而在vb自帶的api文本查看器中的聲明為：Declare Function FreeEnvironmentStrings Lib "kernel32" Alias "FreeEnvironmentStringsA" (ByVal lpsz As String) As Long，lpsz的類型為String，不知是誰的錯了


GetACP
VB聲明
Declare Function GetACP Lib "kernel32" Alias "GetACP" () As Long
說明
判斷目前正在生效的ANSI代碼頁
返回值
Long，目前活動ANSI代碼頁的標識符。針對一種特定的語言，可能存在多個這樣的代碼頁。可能的代碼頁包括下面這些：
874 | 泰語 | 932 | 日語
936 | 中文（簡體） | 949 | 朝鮮語
950 | 中文（台灣和香港繁體） | 1200 | Unicode
1250 | 東歐語言 | 1251 | 西裡爾語
1252 | 美國和西歐語言 | 1253 | 希臘語
1254 | 土耳其語 | 1255 | 希伯來語
1256 | 阿拉伯語 | 1257 | 波羅的語
註解
不要混淆ANSI代碼頁與OEM代碼頁的概念！ANSI代碼頁為不同版本的windows定義標準的ANSI 8位字符集。而OEM代碼頁指定基礎DOS代碼頁，由系統及鍵盤使用


硬體與系統類函數2

硬體與系統函數：共七頁。 第一頁 ，第二頁， 第三頁 ， 第四頁 ， 第五頁 ， 第六頁 ， 第七頁
GetAsyncKeyState | 判斷函數調用時指定虛擬鍵的狀態
GetCaretBlinkTime | 判斷插入符光標的閃爍頻率
GetCaretPos | 判斷插入符的當前位置
GetClipCursor | 取得一個矩形，用於描述目前為滑鼠指針規定的剪切區域
GetCommandLine | 獲得指向當前命令行緩衝區的一個指針
GetComputerName | 取得這台計算機的名稱
GetCPInfo | 取得與指定代碼頁有關的信息
GetCurrencyFormat | 針對指定的「地方」設置，根據貨幣格式格式化一個數字
GetCursor | 獲取目前選擇的滑鼠指針的句柄
GetCursorPos | 獲取滑鼠指針的當前位置
GetDateFormat | 針對指定的「當地」格式，對一個系統日期進行格式化
GetDoubleClickTime | 判斷連續兩次滑鼠單擊之間會被處理成雙擊事件的間隔時間
GetEnvironmentStrings | 為包含了當前環境字串設置的一個內存塊分配和返回一個句柄
GetEnvironmentVariable | 取得一個環境變量的值
GetInputState | 判斷是否存在任何待決（等待處理）的滑鼠或鍵盤事件
GetKBCodePage | 由GetOEMCP取代，兩者功能完全相同


GetAsyncKeyState
VB聲明
Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer
說明
判斷函數調用時指定虛擬鍵的狀態
返回值
Long，自對GetAsyncKeyState函數的上一次調用以來，如鍵已被按過，則位0設為1；否則設為0。如鍵目前處於按下狀態，則位15設為1；如抬起，則為0。微軟的win32手冊指出：倘若輸入焦點從屬於與調用函數的輸入線程不同的另一個輸入線程，則返回值為0（例如，一旦另一個程序擁有焦點，則它應返回零）。證據顯示，函數實際是在整個系統的範圍內工作的
參數表
參數 | 類型及說明
vKey | Long，欲測試的虛擬鍵的鍵碼
註解
如指定了VK_LBUTTON 或 VK_RBUTTON，按鈕的狀態就會根據實際的按鈕報告——無論是否曾用SwapMouseButton函數對滑鼠的位置進行了交換。win32提供了額外的一些虛擬鍵碼，比如VK_LSHIFT 和 VK_RSHIFT，以便在兩個完全一樣的鍵中區分出左右（也包括Ctrl 和 Alt）


GetCaretBlinkTime
VB聲明
Declare Function GetCaretBlinkTime Lib "user32" Alias "GetCaretBlinkTime" () As Long
說明
判斷插入符光標的閃爍頻率
返回值
Long，插入符連續兩次閃爍間隔的時間，以毫秒為單位。零表示函數調用失敗。會設置GetLastError


GetCaretPos
VB聲明
Declare Function GetCaretPos Lib "user32" Alias "GetCaretPos" (lpPoint As POINTAPI) As Long
說明
判斷插入符的當前位置
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpPoint | POINTAPI，這個結構會隨同插入符在窗口客戶坐標系統中的位置載入；那個窗口是插入符的父窗口


GetClipCursor
VB聲明
Declare Function GetClipCursor Lib "user32" Alias "GetClipCursor" (lprc As RECT) As Long
說明
取得一個矩形，用於描述目前為滑鼠指針規定的剪切區域；該區域是由SetClipCursor函數定義的
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lprc | RECT，在屏幕坐標系統中隨同當前剪切矩形載入的一個矩形。倘若沒有活動的剪切，這個矩形會反映出整個顯示屏幕的大小


GetCommandLine
VB聲明
Declare Function GetCommandLine Lib "kernel32" Alias "GetCommandLineA" () As String
說明
獲得指向當前命令行緩衝區的一個指針
返回值
Long，命令行緩衝區在內存中的地址
註解

Visual Basic Command函數更易獲取參數，但它未提供可執行的名稱。使用這個函數時，要求進行內存複製操作


GetComputerName
VB聲明
Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
說明
取得這台計算機的名稱
返回值
Long，TRUE（非零）表示成功，否則返回零。會設置GetLastError
參數表
參數 | 類型及說明
lpBuffer | String，隨同計算機名載入的字串緩衝區
nSize | Long，緩衝區的長度。這個變量隨同返回計算機名的實際長度載入
註解
注意nSize參數並不是按值傳遞的。參考api32.txt，瞭解MAX_COMPUTER_NAME常數的值
示例
Dim s$ s$ = String$(MAX_COMPUTERNAME_LENGTH+1,0) Dim dl& Dim sz& sz& = MAX_COMPUTERNAME_LENGTH+1 dl& = GetComputerName(s$, sz)
其他
也許你會發現，MAX_COMPUTERNAME_LENGTH常數在vb自帶的api文本查看器中找不到。的確，我也沒有找到。但我有一個工具：Listapi，這個常數在它那裡可以找到


GetCPInfo
VB聲明
Declare Function GetCPInfo Lib "kernel32" Alias "GetCPInfo" (ByVal CodePage As Long, lpCPInfo As CPINFO) As Long
說明
取得與指定代碼頁有關的信息
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
CodePage | Long，欲為其載入信息的代碼頁的標識符。可能是一個ANSI或OEM代碼頁
lpCPInfo | CPINFO，用於容納代碼頁信息的一個結構


GetCurrencyFormat

GetCurrencyFormat, GetCurrencyFormatBynum
VB聲明
Declare Function GetCurrencyFormat& Lib "kernel32" Alias "GetCurrencyFormatA" (ByVal Locale As Long, ByVal dwFlags As Long, ByVal lpValue As String, lpFormat As CURRENCYFMT, ByVal lpCurrencyStr As String, ByVal cchCurrency As Long) Declare Function GetCurrencyFormatBynum& Lib "kernel32" Alias "GetCurrencyFormatA" (ByVal Locale As Long, ByVal dwFlags As Long, ByVal lpValue As String, ByVal lpFormat As Long, ByVal lpCurrencyStr As String, ByVal cchCurrency As Long)
說明
針對指定的「地方」設置，根據貨幣格式格式化一個數字
返回值
Long，格式化過後的字串的長度。零表示出錯。會將GetLastError設置為下述值之一：ERROR_INSUFFICIENT_BUFFER，ERROR_INVALID_FLAGS，ERROR_INVALID_PARAMETER
參數表
參數 | 類型及說明
Locale | Long，用於決定格式的地方ID。lpFormat參數中指定的任何信息（倘若不是NULL）都優先於特定於地方的信息
dwFlags | Long，如指定了lpFormat，那麼該參數應該為零。否則，可設為LOCALE_NOUSEROVERRIDE，強制使用系統地方參數——即使它們已由用戶取代
lpValue | String，指定欲格式化的數字。可以只有數位、一個前綴「-」號以及一個小數點
lpFormat | CURRENCYFMT，可設為NULL，使用特定於不同地方的值（用GetCurrencyFormatBynum，則可通過ByVal As Long形式傳遞這個參數）。否則，可引用一個CURRENCYFMT結構，其中包含所有必要的字段，可填入需要用到的信息
lpCurrencyStr | String，指定一個緩衝區，用於容納格式化過後的字串。注意事先對字串進行初始化
cchCurrency | Long，lpCurrencyStr緩衝區的長度。如為零，表示函數會返回需要緩衝區的大小
註解
在vb裡，如使用一個別名，其中的lpFormat設為NULL，則可以正常使用。CURRENCYFMT結構的正確預初始化非常具有挑戰性


GetCursor
VB聲明
Declare Function GetCursor Lib "user32" Alias "GetCursor" () As Long
說明
獲取目前選擇的滑鼠指針的句柄
返回值
Long，目前使用的指針的句柄。倘若不存在指針，則返回零
註解

這個函數返回的是當前線程的指針——不能獲取其他應用程序的指針


GetCursorPos
VB聲明
Declare Function GetCursorPos Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) As Long
說明
獲取滑鼠指針的當前位置
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpPoint | POINTAPI，隨同指針在屏幕像素坐標中的位置載入的一個結構


GetDateFormat
VB聲明
Declare Function GetDateFormat Lib "kernel32" Alias "GetDateFormatA" (ByVal Locale As Long, ByVal dwFlags As Long, lpDate As SYSTEMTIME, ByVal lpFormat As String, ByVal lpDateStr As String, ByVal cchDate As Long) As Long
說明
針對指定的「當地」格式，對一個系統日期進行格式化
返回值
Long，格式化過後的字串的長度。零表示出錯，會將GetLastError設置為下述值之一：ERROR_INSUFFICIENT_BUFFER，ERROR_INVALID_FLAGS，ERROR_INVALID_PARAMETER
參數表
參數 | 類型及說明
Locale | Long，用於決定格式的地方ID。lpFormat參數中指定的任何信息（倘若不是NULL）都優先於特定於地方的信息
dwFlags | Long，如指定了lpFormat，那麼該參數應該為零。否則，可設為LOCALE_NOUSEROVERRIDE，強制使用系統地方參數——即使它們已由用戶取代。用DATE_SHORTDATE 或 DATE_LONGDATE選擇不同的日期格式
lpDate | SYSTEMTIME，包含了一個系統日期的結構
lpFormat | String，可設為NULL，使用特定於不同地方的值（用vbNullString傳遞一個NULL）。否則包含一個日期格式字串。對d,dd,ddd,dddd,m,mm,mmm,mmmm,y,yy,yyyy這樣的代碼，它們的用法與在vb格式命令中的用法是相同的。注意用gg指定一個「紀元」
lpDateStr | String，指定一個緩衝區，用於容納格式化過後的字串。注意事先對字串進行初始化
cchDate | Long，lpDateStr緩衝區的長度。如為零，表示函數會返回需要緩衝區的大小


GetDoubleClickTime
VB聲明
Declare Function GetDoubleClickTime Lib "user32" Alias "GetDoubleClickTime" () As Long
說明
判斷連續兩次滑鼠單擊之間會被處理成雙擊事件的間隔時間
返回值
Long，以毫秒表示的雙擊時間


GetEnvironmentStrings
VB聲明
Declare Function GetEnvironmentStrings& Lib "kernel32" Alias "GetEnvironmentStringsA" ()
說明
為包含了當前環境字串設置的一個內存塊分配和返回一個句柄。這個內存塊包含了所有環境字串。各字串間用一個NULL分隔；連續兩個NULL標誌著列表的結尾
返回值
Long，指向包含了環境字串的一個內存塊的地址。零表示失敗。會設置GetLastError
註解

注意一定要用FreeEnvironmentStrings函數釋放這個內存塊

其他
請看從vb的api文本查看器複製的聲明：Declare Function GetEnvironmentStrings Lib "kernel32" Alias "GetEnvironmentStringsA" () As String，與前面的聲明返回值不同


GetEnvironmentVariable
VB聲明
Declare Function GetEnvironmentVariable Lib "kernel32" Alias "GetEnvironmentVariableA" (ByVal lpName As String, ByVal lpBuffer As String, ByVal nSize As Long) As Long
說明
取得一個環境變量的值
返回值
Long，載入的環境變量的長度。如指定的環境字串不存在，就返回零。如lpBuffer的長度不足以全部容下字串，則返回字串的全長。隨後可用這個長度分配一個足夠大的緩衝區
參數表
參數 | 類型及說明
lpName | String，欲讀入的環境字串的名稱
lpBuffer | String，隨同字串裝載的一個緩衝區。注意預先將其初始化到合適的長度
nSize | Long，lpBuffer的長度


GetInputState
VB聲明
Declare Function GetInputState Lib "user32" Alias "GetInputState" () As Long
說明
判斷是否存在任何待決（等待處理）的滑鼠或鍵盤事件
返回值
Long，非零表示成功，零表示失敗
註解

在win32下，這個函數只返回當前輸入線程的狀態


GetKBCodePage
VB聲明
Declare Function GetKBCodePage Lib "user32" Alias "GetKBCodePage" () As Long
說明
由GetOEMCP取代，兩者功能完全相同


硬體與系統類函數3

硬體與系統函數：共七頁。 第一頁 ， 第二頁 ，第三頁， 第四頁 ， 第五頁 ， 第六頁 ， 第七頁
GetKeyboardLayout | 取得一個句柄，描述指定應用程序的鍵盤佈局
GetKeyboardLayoutList | 獲得系統適用的所有鍵盤佈局的一個列表
GetKeyboardLayoutName | 取得當前活動鍵盤佈局的名稱
GetKeyboardState | 取得鍵盤上每個虛擬鍵當前的狀態
GetKeyboardType | 瞭解與正在使用的鍵盤有關的信息
GetKeyNameText | 在給出掃瞄碼的前提下，判斷鍵名
GetKeyState | 針對已處理過的按鍵，在最近一次輸入信息時，判斷指定虛擬鍵的狀態
GetLastError | 針對之前調用的api函數，用這個函數取得擴展錯誤信息
GetLocaleInfo | 取得與指定「地方」有關的信息
GetLocalTime | 取得本地日期和時間
GetNumberFormat | 針對指定的「地方」，按特定的格式格式化一個數字
GetOEMCP | 判斷在OEM和ANSI字符集間轉換的windows代碼頁
GetQueueStatus | 判斷應用程序消息隊列中待決（等待處理）的消息類型
GetSysColor | 判斷指定windows顯示對象的顏色
GetSystemDefaultLangID | 取得系統的默認語言ID
GetSystemDefaultLCID | 取得當前的默認系統「地方」


GetKeyboardLayout
VB聲明
Declare Function GetKeyboardLayout Lib "user32" Alias "GetKeyboardLayout" (ByVal dwLayout As Long) As Long
說明
取得一個句柄，描述指定應用程序的鍵盤佈局
返回值
Long，鍵盤佈局的句柄
參數表
參數 | 類型及說明
dwLayout | Long，欲檢查的線程的標識符


GetKeyboardLayoutList
VB聲明
Declare Function GetKeyboardLayoutList Lib "user32" Alias "GetKeyboardLayoutList" (ByVal nBuff As Long, lpList As Long) As Long
說明
獲得系統適用的所有鍵盤佈局的一個列表
返回值
Long，裝載到內存的鍵盤佈局的數量
參數表
參數 | 類型及說明
nBuff | Long，lpList數組中的條目數量。如設為零，表示獲取可用鍵盤佈局的數量
lpList | Long，指定一個數組，它的元素數量至少應有nBuff規定的元素那麼多。這個數組會隨同句柄載入可用的鍵盤佈局


GetKeyboardLayoutName
VB聲明
Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
說明
取得當前活動鍵盤佈局的名稱
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
pwszKLID | String，長度為 KL_NAMELENGTH 個字符的字串
註解
在NT中，鍵盤佈局與特定的應用程序有關。而在windows95中，它取決於特定的線程


GetKeyboardState
VB聲明
Declare Function GetKeyboardState Lib "user32" Alias "GetKeyboardState" (pbKeyState As Byte) As Long
說明
取得鍵盤上每個虛擬鍵當前的狀態
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
pbKeyState | Long，總共含256個條目的字節數組中的第一個項目。每個字節都會附帶載入與虛擬鍵對應的狀態。如開關鍵打開，則位0設為1（開關鍵包括CapsLock， NumLock， ScrollLock）；如某個鍵當時按下，則位7為1；如已經抬起，則為0
註解
虛擬鍵碼常數 VK_? 作為數組的索引使用。這個函數相應於取得按鍵狀態於一瞬間的「快照」——鍵按下或鬆開以後，數組不會自動更新。在win32中注意用一個字節數組避免由於vb向Unicode的內部轉換而導致錯誤


GetKeyboardType
VB聲明
Declare Function GetKeyboardType Lib "user32" Alias "GetKeyboardType" (ByVal nTypeFlag As Long) As Long
說明
瞭解與正在使用的鍵盤有關的信息
返回值
Long，零表示出錯。否則返回下述值之一
nTypeFlag=0 | 1——PC或兼容的83鍵鍵盤；2——Olivetti102鍵鍵盤；3——AT或兼容84鍵鍵盤；4——增強型（IBM）101或102鍵鍵盤；5——Nokia1050鍵盤；6——Nokia9140鍵盤；7——日文鍵盤
nTypeFlag=1 | 任何值，由廠商決定
nTypeFlag=2 | 1——10個功能鍵（即 F? 鍵）；2——12或18個功能鍵；3——10個功能鍵；4——12個功能鍵；5——10個功能鍵；6——24個功能鍵；7——由廠商決定
參數表
參數 | 類型及說明
nTypeFlag | Long，可設為下述值之一
 | 0——返回鍵盤類型
 | 1——返回鍵盤子類型
 | 2——返回鍵盤上的功能鍵數量


GetKeyNameText
VB聲明
Declare Function GetKeyNameText Lib "user32" Alias "GetKeyNameTextA" (ByVal lParam As Long, ByVal lpBuffer As String, ByVal nSize As Long) As Long
說明
在給出掃瞄碼的前提下，判斷鍵名
返回值
Long，lpBuffer中載入的鍵名的實際長度
參數表
參數 | 類型及說明
lParam | Long，位0到5=0；位16到23=按鍵的掃瞄碼；位24=增強型鍵盤上的擴展位；位25=如設為1，表示忽略左右Shift和Ctrl鍵的區別
lpBuffer | String，字串預先初始化成至少nSize+1字節，以便隨同鍵名載入
nSize | Long，字串的最大長度


GetKeyState
VB聲明
Declare Function GetKeyState Lib "user32" Alias "GetKeyState" (ByVal nVirtKey As Long) As Integer
說明
針對已處理過的按鍵，在最近一次輸入信息時，判斷指定虛擬鍵的狀態
返回值
Integer，如開關鍵打開，則位0設為1（開關鍵包括CapsLock， NumLock，ScrollLock）；如某個鍵當時正處於按下狀態，則位15為1；如已經抬起，則為0
參數表
參數 | 類型及說明
nVirtKey | Long，欲測試的虛擬鍵鍵碼。對字母、數字字符（A-Z、a-z、0-9），用它們實際的ASCII值


GetLastError
VB聲明
Declare Function GetLastError Lib "kernel32" Alias "GetLastError" () As Long
說明
針對之前調用的api函數，用這個函數取得擴展錯誤信息（在vb裡使用：在vb中，用Err對象的GetLastError屬性獲取GetLastError的值。這樣做是必要的，因為在api調用返回以及vb調用繼續執行期間，vb有時會重設GetLastError的值）
返回值
Long，由api函數決定。請參考api32.txt文件，其中列出了一系列錯誤常數；都以ERROR_前綴起頭。常用的錯誤代碼見下表
ERROR_INVALID_HANDLE | 無效的句柄作為一個參數傳遞
ERROR_CALL_NOT_IMPLEMENTED | 在win 95下調用專為win nt設計的win32 api函數
ERROR_INVALID_PARAMETER | 函數中有個參數不正確
註解
GetLastError返回的值通過在api函數中調用SetLastError或SetLastErrorEx設置。函數並無必要設置上一次錯誤信息，所以即使一次GetLastError調用返回的是零值，也不能擔保函數已成功執行。只有在函數調用返回一個錯誤結果時，這個函數指出的錯誤結果才是有效的。通常，只有在函數返回一個錯誤結果，而且已知函數會設置GetLastError變量的前提下，才應訪問GetLastError；這時能保證獲得有效的結果。SetLastError函數主要在對api函數進行模擬的dll函數中使用，所以對vb應用程序來說是沒有意義的


GetLocaleInfo
VB聲明
Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
說明
取得與指定「地方」有關的信息
返回值
Long，裝載到緩衝區的字符數，或者cchData要求的緩衝區長度。零表示出錯。會將GetLastError設為下述值之一：ERROR_INSUFFICIENT_BUFFER，ERROR_INVALID_FLAGS，ERROR_INVALID_PARAMETER
參數表
參數 | 類型及說明
Locale | Long，欲為其獲得信息的地方ID
LCType | Long，要取回的信息類型。參考api32.txt文件中帶 LOCALE_ 前綴的常數。用OR運算符合併LOCALE_NOUSEROVERRIDE，從而強制使用系統默認信息——即使當前用戶已修改了相關設置
lpLCData | String，指定一個緩衝區，用於裝載要求的信息。注意預先將字串格式化成合適的長度
cchData | Long，lpLCData緩衝區的長度；如設為零，表示獲取必要的緩衝區長度


GetLocalTime
VB聲明
Declare Sub GetLocalTime Lib "kernel32" Alias "GetLocalTime" (lpSystemTime As SYSTEMTIME)
說明
在lpSystemTime結構中裝載本地日期和時間
參數表
參數 | 類型及說明
lpSystemTime | SYSTEMTIME，用於裝載本地時間的結構


GetNumberFormat

GetNumberFormat,GetNumberFormatBynum
VB聲明
Declare Function GetNumberFormat& Lib "kernel32" Alias "GetNumberFormatA" (ByVal Locale As Long, ByVal dwFlags As Long, ByVal lpValue As String, lpFormat As NUMBERFMT, ByVal lpNumberStr As String, ByVal cchNumber As Long) Declare Function GetNumberFormatBynum& Lib "kernel32" Alias "GetNumberFormatA" (ByVal Locale As Long, ByVal dwFlags As Long, ByVal lpValue As String, ByVal lpFormat As Long, ByVal lpNumberStr As String, ByVal cchNumber As Long)
說明
針對指定的「地方」，按特定的格式格式化一個數字
返回值
Long，格式化過後的字串的長度。零表示出錯。會將GetLastError設為下述值之一：ERROR_INSUFFICIENT_BUFFER，ERROR_INVALID_FLAGS，ERROR_INVALID_PARAMETER
參數表
參數 | 類型及說明
Locale | Long，決定了具體格式的地方ID。lpFormat參數（如果不為NULL）指定的任何信息都優先於各「地方」不同的特定信息
dwFlags | Long，如指定了lpFormat，這個參數應為零。否則，可設為LOCALE_NOUSEROVERRIDE，強制使用系統地方參數——無論用戶是否已作出相應的修改
lpValue | String，欲格式化的數字。數字可以只有數位、加在前面的一個「-」號以及一個小數點
lpFormat | NUMBERFMT，可設為NULL，表示使用本地特有的值（倘若用GetNumberFormatBynum，則可將這個參數以ByVal As Long的形式傳遞）。否則，可引用一個NUMBERFMT結構，其中的各個字段載入欲使用的格式信息
lpNumberStr | String，指定一個緩衝區，用於裝載格式化過後的字串。注意先初始化成合適的長度
cchNumber | Long，lpNumberStr緩衝區的長度。如為零，函數會返回緩衝區必要的長度


GetOEMCP
VB聲明
Declare Function GetOEMCP Lib "kernel32" Alias "GetOEMCP" () As Long
說明
判斷在OEM和ANSI字符集間轉換的windows代碼頁
返回值
Long，目前處於活動狀態的OEM代碼頁的標識符。針對一種特定的語言，可能存在多個代碼頁。以下是可用代碼頁列表
437 | 默認：美國 | 708-720 | 阿拉伯代碼頁 | 737 | 希臘
775 | 波羅的 | 850 | 國際 | 852 | Slavic
855 | 西裡爾語 | 857 | 土耳其語 | 860 | 葡萄牙語
861 | 冰島語 | 862 | 希伯來語 | 863 | 加拿大法語
864 | 阿拉伯語 | 865 | 挪威/丹麥語 | 866 | 俄語
874 | 泰語 | 932 | 日語 | 936 | 中文（簡體）
949 | 朝鮮語 | 950 | 中文（台、港繁體） | 1361 | 朝鮮語


GetQueueStatus
VB聲明
Declare Function GetQueueStatus Lib "user32" Alias "GetQueueStatus" (ByVal fuFlags As Long) As Long
說明
判斷應用程序消息隊列中待決（等待處理）的消息類型
返回值
Long，高字是一個16位的旗標字，包含了待決的消息。其中的各個位是由為fuFlags參數定義的同樣的常數決定的。低字是一個對應的旗標字。其中各個位指出自上次調用這個函數以來，或自消息上一次處理以來，新加入的待處理消息
參數表
參數 | 類型及說明
fuFlags | Long，一個標誌（旗標）字，指定要檢查的消息。標誌位是由下述常數定義的
 | QS_KEY | WM_CHAR消息（會造成vb KeyPressed事件）
 | QS_MOUSE | 任何滑鼠消息
 | QS_MOUSEMOVE | MouseMove消息或事件
 | QS_MOUSEBUTTON | 滑鼠按鈕消息或相關事件
 | QS_PAINT | 等待處理的Paint消息
 | QS_POSTMESSAGE | 投遞的其他消息
 | QS_SENDMESSAGE | 從另一個應用程序中發出的消息
 | QS_TIMER | 計時器消息
 | QS_HOTKEY | 隊列中的一條Hotkey消息
註解
在vb裡這個函數不特別有用（Use with VB:Not particularly useful.）


GetSysColor
VB聲明
Declare Function GetSysColor Lib "user32" Alias "GetSysColor" (ByVal nIndex As Long) As Long
說明
判斷指定windows顯示對象的顏色
返回值
Long，指定對象的RGB顏色
參數表
參數 |  | 類型及說明
nIndex |  | Long，一個常數，指出特定的windows顯示對像，如下表
Windows對像常數表
常數定義 | Windows對像 | 常數定義 | Windows對像
COLOR_ACTIVEBORDER | 活動窗口的邊框 | COLOR_ACTIVECAPTION | 活動窗口的標題
COLOR_APPWORKSPACE | MDI桌面的背景 | COLOR_BACKGROUND | windows桌面
COLOR_BTNFACE | 按鈕 | COLOR_BTNHIGHLIGHT | 按鈕的3D加亮區
COLOR_BTNSHADOW | 按鈕的3D陰影 | COLOR_BTNTEXT | 按鈕文字
COLOR_CAPTIONTEXT | 窗口標題中的文字 | COLOR_GRAYTEXT | 灰色文字；如使用了抖動技術則為零
COLOR_HIGHLIGHT | 選定的項目背景 | COLOR_HIGHLIGHTTEXT | 選定的項目文字
COLOR_INACTIVEBORDER | 不活動窗口的邊框 | COLOR_INACTIVECAPTION | 不活動窗口的標題
COLOR_INACTIVECAPTIONTEXT | 不活動窗口的文字 | COLOR_MENU | 選單
COLOR_MENUTEXT | 選單正文 | COLOR_SCROLLBAR | 滾動條
COLOR_WINDOW | 窗口背景 | COLOR_WINDOWFRAME | 窗框
COLOR_WINDOWTEXT | 窗口正文 | COLOR_3DDKSHADOW | 3D深陰影 *
COLOR_3DFACE | 3D陰影化對象的正面顏色 * | COLOR_3DHILIGHT | 3D加亮顏色（win95）
COLOR_3DLIGHT | 3D陰影化對象的淺色 * | COLOR_INFOBK | 工具提示的背景色 *
COLOR_INFOTEXT | 工具提示的文本色 * |  |
*：帶 * 號的常數未獲NT 3.51的支持


GetSystemDefaultLangID
VB聲明
Declare Function GetSystemDefaultLangID Lib "kernel32" Alias "GetSystemDefaultLangID" () As Integer
說明
取得系統的默認語言ID
返回值
Integer，系統的默認語言ID


GetSystemDefaultLCID
VB聲明
Declare Function GetSystemDefaultLCID Lib "kernel32" Alias "GetSystemDefaultLCID" () As Long
說明
取得當前的默認系統「地方」
返回值
Long，默認的系統地方ID


硬體與系統類函數4

硬體與系統函數：共七頁。 第一頁 ， 第二頁 ， 第三頁 ，第四頁， 第五頁 ， 第六頁 ， 第七頁
GetSystemInfo | 取得與底層硬體平台有關的信息
GetSystemMetrics | 返回與windows環境有關的信息
GetSystemPowerStatus | 獲得與當前系統電源狀態有關的信息
GetSystemTime | 取得當前系統時間，這個時間採用的是「協同世界時間」（即UTC，也叫做GMT）格式
GetSystemTimeAdjustment | 使內部系統時鐘與一個外部的時鐘信號源同步
GetThreadLocale | 取得當前線程的地方ID
GetTickCount | 用於獲取自windows啟動以來經歷的時間長度（毫秒）
GetTimeFormat | 針對當前指定的「地方」，按特定的格式格式化一個系統時間
GetTimeZoneInformation | 取得與系統時區設置有關的信息
GetUserDefaultLangID | 為當前用戶取得默認語言ID
GetUserDefaultLCID | 取得當前用戶的默認「地方」設置
GetUserName | 取得當前用戶的名字
GetVersion | 判斷當前運行的Windows和DOS版本
GetVersionEx | 取得與平台和操作系統有關的版本信息
HideCaret | 在指定的窗口隱藏插入符（光標）
IsValidCodePage | 判斷一個代碼頁是否有效


GetSystemInfo
VB聲明
Declare Sub GetSystemInfo Lib "kernel32" Alias "GetSystemInfo" (lpSystemInfo As SYSTEM_INFO)
說明
在一個SYSTEM_INFO結構中載入與底層硬體平台有關的信息
參數表
參數 | 類型及說明
lpSystemInfo | SYSTEM_INFO，指定一個結構，用於裝載適當的系統信息


GetSystemMetrics
VB聲明
Declare Function GetSystemMetrics Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
說明
返回與windows環境有關的信息
返回值
Long，取決於具體的常數索引
參數表
參數 | 類型及說明
nIndex | Long，常數，指定欲獲取的信息；如下表所示
nIndex常數設置
常數定義 | 取得信息
SM_ARRANGE | 設置windows如何排列最小化窗口的一個標誌。參考api32.txt中的ARW常數
SM_CLEANBOOT | 指定啟動模式。0=普通模式；1=帶網絡支持的安全模式
SM_CMETRICS | 可用系統環境的數量
SM_CMOUSEBUTTON | 滑鼠按鈕（按鍵）的數量。如沒有滑鼠，就為零
SM_CXBORDER, SM_CYBORDER | 尺寸不可變邊框的大小
SM_CXCURSOR, SM_CYCURSOR | 標準指針大小
SM_CXDLGFRAME, SM_CYDLGFRAME | 對話框邊框的大小
SM_CXDOUBLECLK, SM_CYDOUBLECLK | 雙擊區域的大小（參考註解）
SM_CXFRAME, SM_CYFRAME | 尺寸可變邊框的大小（在win95和nt 4.0中使用SM_C?FIXEDFRAME）
SM_CXFULLSCREEN, SM_CYFULLSCREEN | 最大化窗口客戶區的大小
SM_CXHSCROLL, SM_CYHSCROLL | 水平滾動條上的箭頭大小
SM_CXHTHUMB, SM_CYHTHUMB | 滾動塊在水平滾動條上的大小
SM_CXICON, SM_CYICON | 標準圖標的大小
SM_CXICONSPACING, SM_CYICONSPACING | 桌面圖標之間的間隔距離。在win95和nt 4.0中是指大圖標的間距
SM_CXMAXIMIZED, SM_CYMAXIMIZED | 最大化窗口的默認尺寸
SM_CXMAXTRACK, SM_CYMAXTRACK | 改變窗口大小時，最大的軌跡寬度
SM_CXMENUCHECK, SM_CYMENUCHECK | 選單復選號位圖的大小
SM_CXMENUSIZE, SM_CYMENUSIZE | 選單欄上的按鈕大小
SM_CXMIN, SM_CYMIN | 窗口的最小尺寸
SM_CXMINIMIZED, SM_CYMINIMIZED | 最小化的窗口必須填充進去的一個矩形小於或等於SM_C?ICONSPACING
SM_CXMINTRACK, SM_CYMINTRACK | 窗口的最小軌跡寬度
SM_CXSCREEN, SM_CYSCREEN | 屏幕大小
SM_CXSIZE, SM_CYSIZE | 標題欄位圖的大小
SM_CXSIZEFRAME, SM_CYSIZEFRAME | 具有WS_THICKFRAME樣式的窗口的大小
SM_CXSMICON, SM_CYSMICON | 小圖標的大小
SM_CXSMSIZE, SM_CYSMSIZE | 小標題按鈕的大小
SM_CXVSCROLL, SM_CYVSCROLL | 垂直滾動條中的箭頭按鈕的大小
SM_CYCAPTION | 窗口標題的高度
SM_CYKANJIWINDOW | Kanji窗口的大小（Height of Kanji window）
SM_CYMENU | 選單高度
SM_CYSMCAPTION | 小標題的高度
SM_CYVTHUMB | 垂直滾動條上滾動塊的高度
SM_DBCSENABLED | 如支持雙字節則為TRUE
SM_DEBUG | 如windows的調試版正在運行，則為TRUE
SM_MENUDROPALIGNMENT | 如彈出式選單對齊選單欄項目的左側，則為零
SM_MIDEASTENABLED | 允許了希伯來和阿拉伯語
SM_MOUSEPRESENT | 如安裝了滑鼠則為TRUE
SM_MOUSEWHEELPRESENT | 如安裝了帶輪滑鼠則為TRUE；只適用於nt 4.0
SM_NETWORK | 如安裝了網絡，則設置位0。其他位保留未用
SM_PENWINDOWS | 如裝載了支持筆窗口的DLL，則表示筆窗口的句柄
SM_SECURE | 如安裝了安全（保密）機制，則為TRUE
SM_SHOWSOUNDS | 強制視覺提示播放聲音
SM_SLOWMACHINE | 系統速度太慢，但仍在運行中（System is too slow for effective use but is being run anyway）
SM_SWAPBUTTON | 如左右滑鼠鍵已經交換，則為TRUE
註解
雙擊區域指定屏幕上一個特定的顯示區域，只有在這個區域內連續進行兩次滑鼠單擊，才有可能被當作雙擊事件處理
其他
常數 SM_ARRANGE, SM_CLEANBOOT, SM_CMETRICS, SM_C?MAXIMIZED, SM_C?MAXTRACK, SM_C?SIZEFRAME, SM_C?SMICON, SM_C?SMSIZE, SM_CYSMCAPTION, SM_SECURE, SM_SHOWSOUNDS, and SM_SLOWMACHINE 未獲 NT 3.51 及更早版本的支持


GetSystemPowerStatus
VB聲明
Declare Function GetSystemPowerStatus Lib "kernel32" Alias "GetSystemPowerStatus" (lpSystemPowerStatus As SYSTEM_POWER_STATUS) As Long
說明
獲得與當前系統電源狀態有關的信息。對便攜式計算機來說，這些信息特別有用。在那些地方，可用這個函數瞭解有關電源和電池組的情況
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
lpSystemPowerStatus | SYSTEM_POWER_STATUS，用於裝載電源狀態信息的結構
註解
結果的準確度取決於系統實際的電源管理能力


GetSystemTime
VB聲明
Declare Sub GetSystemTime Lib "kernel32" Alias "GetSystemTime" (lpSystemTime As SYSTEMTIME)
說明
在一個SYSTEMTIME中載入當前系統時間，這個時間採用的是「協同世界時間」（即UTC，也叫做GMT）格式
參數表
參數 | 類型及說明
lpSystemTime | SYSTEMTIME，隨同當前時間載入的結構


GetSystemTimeAdjustment
VB聲明
Declare Function GetSystemTimeAdjustment Lib "kernel32" Alias "GetSystemTimeAdjustment" (lpTimeAdjustment As Long, lpTimeIncrement As Long, lpTimeAdjustmentDisabled As Boolean) As Long
說明
Win32可使內部系統時鐘與一個外部的時鐘信號源同步，方法是定時添加一個校準值。這個函數指定的所有時間都以100ns（0.1ms）為單位遞增
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
lpTimeAdjustment | Long，添加到內部系統時鐘的時間量
lpTimeIncrement | Long，校準間隔時間。等於中斷時鐘時間
lpTimeAdjustmentDisabled | Boolean，如時間調校功能關閉，則為TRUE
示例
Dim lpTimeAdjustment&, lpTimeIncrement&, lpTimeAdjustmentDisabled& GetSystemTimeAdjustment lpTimeAdjustment, lpTimeIncrement, lpTimeAdjustmentDisabled Print "Time adjustment: " & lpTimeAdjustment & "Increment: " & lpTimeIncrement & "Adjustment Disabled: " & lpTimeAdjustmentDisabled


GetThreadLocale
VB聲明
Declare Function GetThreadLocale Lib "KERNEL32" Alias "GetThreadLocale" () As Long
說明
取得當前線程的地方ID
返回值
Long，地方標識符
註解

在vb下，除非從一個多線程EXE服務器調用，否則當前線程就是當前應用程序


GetTickCount
VB聲明
Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long
說明
用於獲取自windows啟動以來經歷的時間長度（毫秒）
返回值
Long，以毫秒為單位的windows運行時間


GetTimeFormat
VB聲明
Declare Function GetTimeFormat Lib "kernel32" Alias "GetTimeFormatA" (ByVal Locale As Long, ByVal dwFlags As Long, lpTime As SYSTEMTIME, ByVal lpFormat As String, ByVal lpTimeStr As String, ByVal cchTime As Long) As Long
說明
針對當前指定的「地方」，按特定的格式格式化一個系統時間
返回值
Long，格式化過後的字串的長度。零表示出錯。會將GetLastError設置為下述值之一：ERROR_INSUFFICIENT_BUFFER，ERROR_INVALID_FLAGS，ERROR_INVALID_PARAMETER
參數表
參數 | 類型及說明
Locale | Long，決定了具體格式的地方ID。lpFormat參數中指定的任何信息（倘若不是NULL）都要優先於各地方不同的特別信息
dwFlags | Long，如指定了lpFormat，那麼該參數應該為零。否則，可設為LOCALE_NOUSEROVERRIDE，表示強制使用系統地方參數——即使它們已由用戶更改。用DATE_SHORTDATE或DATE_LONGDATE選擇不同的日期格式
lpTime | SYSTEMTIME，用於包容系統時間的一個結構
lpFormat | String，可設為NULL，使用特定於不同地方的值（用vbNullString傳遞一個NULL）。否則包含一個時間格式字串。對h,hh,hhh,hhhh,m,mm,s,ss這樣的代碼來說，它們的用法與在vb格式命令中的用法是相同的。t和tt用於指定一個時間段標誌（A或AM，P或PM）
lpTimeStr | String，指定一個緩衝區，用於容納格式化過後的字串。注意事先對字串的長度進行正確的預初始化
cchTime | Long，lpTimeStr緩衝區的長度。如為零，表示函數會返回需要緩衝區的大小
註解
對於dwFlags參數的解釋可能翻譯有錯誤。原文為： If lpFormat is specified, this should be zero. Otherwise, may be set to LOCALE_NOUSEROVERRIDE to force the system locale parameters to be used even if they have been overridden by the user. Use the self-explanatory constants TIME_NOMINUITESORSECONDS, TIME_NOSECONDS, or TIME_FORCE24HOURFORMAT to choose between date formats. Constant TIME_NOMARKER removes the AM or PM marker.


GetTimeZoneInformation
VB聲明
Declare Function GetTimeZoneInformation Lib "kernel32" Alias "GetTimeZoneInformation" (lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long
說明
在一個TIME_ZONE_INFORMATION結構中載入與系統時區設置有關的信息
返回值
Long，下述常數之一：
TIME_ZONE_ID_INVALID | 函數執行失敗，會設置GetLastError
TIME_ZONE_ID_UNKNOWN | 時區未知（可能仍然指定了bias值）
TIME_ZONE_ID_STANDARD | 標準時間有效
TIME_ZONE_ID_DAYLIGHT | 夏令時有效
參數表
參數 | 類型及說明
lpTimeZoneInformation | TIME_ZONE_INFORMATION，用於載入時區信息的結構
註解
在lpTimeZoneInformation結構中為本地時間添加bias信息，從而獲得系統時間。TIME_ZONE_INFORMATION結構內部的DaylightName和StandardName字串肯定採用Unicode格式


GetUserDefaultLangID
VB聲明
Declare Function GetUserDefaultLangID Lib "kernel32" Alias "GetUserDefaultLangID" () As Integer
說明
為當前用戶取得默認語言ID
返回值
Long，當前用戶的語言ID


GetUserDefaultLCID
VB聲明
Declare Function GetUserDefaultLCID Lib "kernel32" Alias "GetUserDefaultLCID" () As Long
說明
取得當前用戶的默認「地方」設置
返回值
Long，針對當前用戶的默認地方ID


GetUserName
VB聲明
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
說明
取得當前用戶的名字
返回值
Long，TRUE（非零）表示成功，否則返回零。會設置GetLastError
參數表
參數 | 類型及說明
lpBuffer | String，一個字串緩衝區，預先初始化成由nSize指定的長度。它將用於容納用戶名
nSize | Long，初始化成lpBuffer的長度。返回以後，它會包含載入lpBuffer的字符數量
示例
Dim s$, cnt&, dl& cnt& = 199 s$ = String$(200,0) dl& = GetUserName(s$, cnt) Debug.Print Left$(s$, cnt); cnt


GetVersion
VB聲明
Declare Function GetVersion Lib "kernel32" Alias "GetVersion" () As Long
說明
判斷當前運行的Windows和DOS版本
返回值
Long，低16位包含了windows版本；低字節包含了主版本號（3代表windows 3.10，4代表nt 4.0）；高字節包含了兩個數位的輔助版本號（10代表windows 3.10，95代表windows 95）。高16位則包含了平台信息。針對windows NT，高位設為0；針對windows for workgroups上運行的Win32s，則高位為1
註解

在win32下，最好換用GetVersionEx函數。在win32下，高字不會返回DOS版本


GetVersionEx
VB聲明
Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (ByVal lpVersionInformation As OSVERSIONINFO) As Long
說明
在一個OSVERSIONINFO結構中載入與平台和操作系統有關的版本信息
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
lpVersionInformation | OSVERSIONINFO，用於裝載版本信息的結構。在正式調用函數之前，必須先將這個結構的dwOSVersionInfoSize字段設為結構的大小（148）


HideCaret
VB聲明
Declare Function HideCaret Lib "user32" Alias "HideCaret" (ByVal hwnd As Long) As Long
說明
在指定的窗口隱藏插入符（光標）
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，包含了插入符的窗口的句柄。可能是零；在這種情況下，只有包容了插入符的那個窗口由活動任務擁有時，插入符才會被隱藏
註解
針對插入符的顯示，windows維護著一個內部計數器；類似於ShowCursor函數使用的那個。所以對HideCaret 和 ShowCaret的調用必須進行一番權衡


IsValidCodePage
VB聲明
Declare Function IsValidCodePage Lib "kernel32" Alias "IsValidCodePage" (ByVal CodePage As Long) As Long
說明
判斷一個代碼頁是否有效
返回值
Long，如代碼頁有效，就返回TRUE（非零）；否則返回零
參數表
參數 | 類型及說明
CodePage | Long，一個代碼頁的標識符。參考GetACP和GetOEMCP函數


硬體與系統類函數5

硬體與系統函數：共七頁。 第一頁 ， 第二頁 ， 第三頁 ， 第四頁 ，第五頁， 第六頁 ， 第七頁
IsValidLocale | 判斷地方標識符是否有效
keybd_event | 這個函數模擬了鍵盤行動
LoadKeyboardLayout | 載入一個鍵盤佈局
MapVirtualKey | 根據指定的映射類型，執行不同的掃瞄碼和字符轉換
MapVirtualKeyEx | 根據指定的映射類型，執行不同的掃瞄碼和字符轉換
MessageBeep | 播放一個系統聲音。系統聲音的分配方案是在控制面板裡決定的
mouse_event | 模擬一次滑鼠事件
OemKeyScan | 判斷OEM字符集中的一個ASCII字符的掃瞄碼和Shift鍵狀態
OemToChar | 將OEM字符集的一個字串轉換到ANSI字符集
SetCaretBlinkTime | 指定插入符（光標）的閃爍頻率
SetCaretPos | 指定插入符的位置
SetComputerName | 設置新的計算機名
SetCursor | 將指定的滑鼠指針設為當前指針
SetCursorPos | 設置指針的位置
SetDoubleClickTime | 設置連續兩次滑鼠單擊之間能使系統認為是雙擊事件的間隔時間
SetEnvironmentVariable | 將一個環境變量設為指定的值


IsValidLocale
VB聲明
Declare Function IsValidLocale Lib "KERNEL32" Alias "IsValidLocale" (ByVal Locale As Long, ByVal dwFlags As Long) As Long
說明
判斷地方標識符是否有效
返回值
Long，根據測試條件，如指定的地方有效，就返回TRUE（非零）；否則返回零
參數表
參數 | 類型及說明
Locale | Long，要檢查的地方標識符
dwFlags | Long，下述常數之一：
 | LCID_SUPPORTED | 檢查「地方」是否能由系統支持
 | LCID_INSTALLED | 檢查「地方」是否已獲支持並安裝


keybd_event
VB聲明
Declare Sub keybd_event Lib "user32" Alias "keybd_event" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
說明
這個函數模擬了鍵盤行動
參數表
參數 | 類型及說明
bVk | Byte，欲模擬的虛擬鍵碼
bScan | Byte，鍵的OEM掃瞄碼
dwFlags | Long，零；或設為下述兩個標誌之一
 | KEYEVENTF_EXTENDEDKEY | 指出是一個擴展鍵，而且在前面冠以0xE0代碼
 | KEYEVENTF_KEYUP | 模擬鬆開一個鍵
dwExtraInfo | Long，通常不用的一個值。api函數GetMessageExtraInfo可取得這個值。允許使用的值取決於特定的驅動程序
註解
這個函數支持屏幕捕獲（截圖）。在win95和nt4.0下這個函數的行為不同


LoadKeyboardLayout
VB聲明
Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal flags As Long) As Long
說明
載入一個鍵盤佈局
返回值
Long，鍵盤佈局的句柄。零表示出錯
參數表
參數 | 類型及說明
pwszKLID | String，一個8字符字串，用於描述鍵盤佈局的名稱。參考註解
flags | Long，下述常數的任何一種組合
 | KLF_ACTIVATE | 載入和激活指定的佈局
 | KLF_NOTELLSHELL | 禁止一個外殼掛鉤進程（a shell hook procedure）接收到HSHELL_LANGUAGE通告。如準備載入一系列鍵盤佈局，就需要考慮設置這個標誌，從而改善性能（不要為最後一個載入的佈局設置該標誌）
 | KLF_REORDER | 將指定的活動佈局移至內部鍵盤佈局列表的起始處
 | KLF_REPLACELANG | 如指定語言的鍵盤佈局已經存在，則用這個將其替換。僅適用於win95
 | KLF_SUBSTITUTE_OK | 在註冊表中使用替換信息，為這個語言載入一個由用戶指定的替換鍵盤佈局（如果存在的話），而不是載入當前這個佈局
 | KLF_UNLOADPREVIOUS | 如KLF_ACTIVATE已經指定並成功，則卸載前一個佈局
註解
鍵盤佈局的名稱採用「ddddnnnn」的形式。其中，nnnn代表一個語言ID的字串形式，而dddd代表一個設備代碼的字串形式。標準的美國鍵盤名稱是「00000409」
其他
鍵盤佈局在win95中取決於特定的線程；在windows nt中，則在整個系統的範圍內有效


MapVirtualKey
VB聲明
Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
說明
根據指定的映射類型，執行不同的掃瞄碼和字符轉換
返回值
Long，取決於wMapType參數
參數表
參數 | 類型及說明
wCode | Long，欲轉換的源字符或掃瞄碼
wMapType | Long，控制映射類型，如下所示
 | 0—— wCode是個虛擬鍵碼。函數返回相應的掃瞄碼 1—— wCode是個掃瞄碼。函數返回相應的虛擬鍵碼 2—— wCode是個虛擬鍵碼。函數返回相應的ASCII值（未加Shift組合鍵）


MapVirtualKeyEx
VB聲明
Declare Function MapVirtualKeyEx Lib "user32" Alias "MapVirtualKeyExA" (ByVal uCode As Long, ByVal uMapType As Long, ByVal dwhkl As Long) As Long
說明
根據指定的映射類型，執行不同的掃瞄碼和字符轉換
返回值
Long，取決於uMapType參數
參數表
參數 | 類型及說明
uCode | Long，欲轉換的源字符或代碼
uMapType | Long，控制映射類型，如下所示
 | 0—— uCode是個虛擬鍵碼。函數返回相應的掃瞄碼 1—— uCode是個掃瞄碼。函數返回相應的虛擬鍵碼 2—— uCode是個虛擬鍵碼。函數返回相應的ASCII值（未加Shift組合鍵）。針對死鍵，高位設為1。如果出錯，返回NULL
dwhkl | Long，鍵盤佈局的句柄
註解
利用這個函數，可在掃瞄碼及附加的虛擬鍵碼間轉換。這些虛擬鍵碼包括VK_LSHIFT 和 VK_RSHIFT等。這樣一來，便可為表面上兩個完全一樣的鍵（也包括Ctrl 和 Alt）區分左鍵和右鍵


MessageBeep
VB聲明
Declare Function MessageBeep Lib "user32" Alias "MessageBeep" (ByVal wType As Long) As Long
說明
播放一個系統聲音。系統聲音的分配方案是在控制面板裡決定的
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
wType | Long，下述值之一
 | 0xffffffff | 標準響鈴
 | MB_ICONASTERISK | 系統星號聲（System asterisk sound）
 | MB_ICONEXCLAMATION | 系統驚歎聲
 | MB_ICONHAND | 系統指針聲（System hand sound）
 | MB_ICONQUESTION | 系統提問聲


mouse_event
VB聲明
Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
說明
模擬一次滑鼠事件
參數表
參數 | 類型及說明
dwFlags | Long，下述標誌的一個組合
 | MOUSEEVENTF_ABSOLUTE | dx和dy指定滑鼠坐標系統中的一個絕對位置。在滑鼠坐標系統中，屏幕在水平和垂直方向上均勻分割成65535×65535個單元
 | MOUSEEVENTF_MOVE | 移動滑鼠
 | MOUSEEVENTF_LEFTDOWN | 模擬滑鼠左鍵按下
 | MOUSEEVENTF_LEFTUP | 模擬滑鼠左鍵抬起
 | MOUSEEVENTF_RIGHTDOWN | 模擬滑鼠右鍵按下
 | MOUSEEVENTF_RIGHTUP | 模擬滑鼠右鍵按下
 | MOUSEEVENTF_MIDDLEDOWN | 模擬滑鼠中鍵按下
 | MOUSEEVENTF_MIDDLEUP | 模擬滑鼠中鍵按下
dx | Long，根據是否指定了MOUSEEVENTF_ABSOLUTE標誌，指定水平方向的絕對位置或相對運動
dy | Long，根據是否指定了MOUSEEVENTF_ABSOLUTE標誌，指定垂直方向的絕對位置或相對運動
cButtons | Long，未使用
dwExtraInfo | Long，通常未用的一個值。用GetMessageExtraInfo函數可取得這個值。可用的值取決於特定的驅動程序
註解
進行相對運動的時候，由SystemParametersInfo函數規定的系統滑鼠軌跡速度會應用於滑鼠運行的速度


OemKeyScan
VB聲明
Declare Function OemKeyScan Lib "user32" Alias "OemKeyScan" (ByVal wOemChar As Long) As Long
說明
判斷OEM字符集中的一個ASCII字符的掃瞄碼和Shift鍵狀態
返回值
Long，低字包含了掃瞄碼。高字包含了下述標誌：位0標誌著Shift已經按下；位1標誌著Ctrl鍵按下；位2標誌著Alt鍵按下。如兩個字都為-1，表明字符未在OEM字符集中得到定義
參數表
參數 | 類型及說明
wOemChar | Long，欲轉換的字符的ASCII值
註解
這個函數只能轉換那些單擊鍵就能生成的字符。倘若字符要通過「Alt+3數位」（比如Alt+255）才能出現，則不能用這個函數轉換 原文：This function only translates keys that can be typed with a single keystroke. Keys that are entered using the ALT + 3 digit entry cannot be converted with this function.


OemToChar

OemToChar, OemToCharBuff
VB聲明
Declare Function OemToChar& Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As String, ByVal lpszDst As String) Declare Function OemToCharBuff& Lib "user32" Alias "OemToCharBuffA" (ByVal lpszSrc As String, ByVal lpszDst As String, ByVal cchDstLength As Long)
說明
將OEM字符集的一個字串轉換到ANSI字符集。OemToCharBuff允許我們指定字串中欲轉換的字符數量
返回值
Long，肯定是TRUE
參數表
參數 | 類型及說明
lpszSrc | String，欲轉換的字串
lpszDst | String，用於容納ANSI轉換結果的一個字串。注意先將字串初始化成合適的長度。可將相同的字串傳遞給兩個參數，以便在同一個字串中進行轉換
cchDstLength | Long，字串中要轉換的字符數量
註解
如使用一個Win32類型庫訪問寬字符函數OemToCharW，那麼lpszSrc是個Unicode字串，而且lpszDst參數絕對不能與lpszSrc相同


SetCaretBlinkTime
VB聲明
Declare Function SetCaretBlinkTime Lib "user32" Alias "SetCaretBlinkTime" (ByVal wMSeconds As Long) As Long
說明
指定插入符（光標）的閃爍頻率
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
wMSeconds | Long，插入符新的閃爍間隔時間，以毫秒為單位
註解
插入符或插入標誌是一種共享資源，所以閃爍時間設定會對所有應用程序的插入符產生影響。可用GetCaretBlinkTime函數獲得最初的閃爍時間設置。以後在適當的時候，可用這個設置恢復最開始的值。參考CreateCaret函數的註解


SetCaretPos
VB聲明
Declare Function SetCaretPos Lib "user32" Alias "SetCaretPos" (ByVal x As Long, ByVal y As Long) As Long
說明
指定插入符的位置
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
x,y | Long，插入符在客戶區坐標系統中的X，Y位置
註解
插入符是一種共享資源。在更改插入符的位置之前，程序員應確定插入符位於由當前任務擁有的一個窗口內。參考CreateCaret函數的註解


SetComputerName
VB聲明
Declare Function SetComputerName Lib "kernel32" Alias "SetComputerNameA" (ByVal lpComputerName As String) As Long
說明
設置新的計算機名
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpComputerName | String，新的計算機名稱。最多可有MAX_COMPUTERNAME_LENGTH個字符
註解
windows95會將任何非法字符自動轉換到標準的字符集裡。windows nt則會報告出錯


SetCursor
VB聲明
Declare Function SetCursor Lib "user32" Alias "SetCursor" (ByVal hCursor As Long) As Long
說明
將指定的滑鼠指針設為當前指針
返回值
Long，前一個指針的值
參數表
參數 | 類型及說明
hCursor | Long，要設為當前指針的一個指針的句柄。如設為零，表示不顯示任何指針
註解
在vb裡這個函數不能很好的工作，因為vb習慣在不同的時間將指針變回原來的樣子


SetCursorPos
VB聲明
Declare Function SetCursorPos Lib "user32" Alias "SetCursorPos" (ByVal x As Long, ByVal y As Long) As Long
說明
設置指針的位置
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
x,y | 滑鼠指針在屏幕像素坐標系統中的X，Y位置


SetDoubleClickTime
VB聲明
Declare Function SetDoubleClickTime Lib "user32" Alias "SetDoubleClickTime" (ByVal wCount As Long) As Long
說明
設置連續兩次滑鼠單擊之間能使系統認為是雙擊事件的間隔時間
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
wCount | Long，新的DoubleClick間隔時間，以毫秒為單位
註解
雙擊時間設定的變化會影響整個系統


SetEnvironmentVariable
VB聲明
Declare Function SetEnvironmentVariable Lib "kernel32" Alias "SetEnvironmentVariableA" (ByVal lpName As String, ByVal lpValue As String) As Long
說明
將一個環境變量設為指定的值
返回值
Long，TRUE（非零）表示成功，否則返回零。會設置GetLastError
參數表
參數 | 類型及說明
lpName | String，欲設置的環境變量的名稱。如具有這個名稱的一個環境變量尚不存在，則函數會自動創建它
lpValue | String，欲為變量設置的新值。如為NULL，表示清除一個現成值（用vbNullString常數向這個函數傳遞一個NULL）


硬體與系統類函數6

硬體與系統函數：共七頁。 第一頁 ， 第二頁 ， 第三頁 ， 第四頁 ， 第五頁 ，第六頁， 第七頁
SetKeyboardState | 設置每個虛擬鍵當前在鍵盤上的狀態
SetLocaleInfo | 改變用戶「地方」設置信息
SetLocalTime | 設置當前地方時間
SetSysColors | 設置指定窗口顯示對象的顏色
SetSystemCursor | 改變任何一個標準系統指針
SetSystemTime | 設置當前系統時間
SetSystemTimeAdjustment | 定時添加一個校準值使內部系統時鐘與一個外部的時鐘信號源同步
SetThreadLocale | 為當前線程設置地方
SetTimeZoneInformation | 設置系統時區信息
ShowCaret | 在指定的窗口裡顯示插入符（光標）
ShowCursor | 控制滑鼠指針的可視性
SwapMouseButton | 決定是否互換滑鼠左右鍵的功能
SystemParametersInfo | 獲取和設置數量眾多的windows系統參數
SystemTimeToTzSpecificLocalTime | 將系統時間轉換成地方時間
ToAscii | 根據當前的掃瞄碼和鍵盤信息，將一個虛擬鍵轉換成ASCII字符
ToUnicode | 根據當前的掃瞄碼和鍵盤信息，將一個虛擬鍵轉換成Unicode字符


SetKeyboardState
VB聲明
Declare Function SetKeyboardState Lib "user32" Alias "SetKeyboardState" (lppbKeyState As Byte) As Long
說明
設置每個虛擬鍵當前在鍵盤上的狀態
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lppbKeyState | Byte，固定為256字符長度的一個字串。windows內部鍵盤狀態表中的每個字符都會根據這張表中對應的虛擬鍵設置。每個鍵的狀態與GetKeyboardState函數的結果是相同的
註解
可用這個函數設置CapsLock， NumLock 和 ScrollLock鍵的狀態


SetLocaleInfo
VB聲明
Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String) As Long
說明
改變用戶「地方」設置信息
返回值
Long，TRUE（非零）表示成功，否則返回零。會將GetLastError設置為下述值之一：ERROR_INVALID_ACCESS，ERROR_INVALID_FLAGS，ERROR_INVALID_PARAMETER
參數表
參數 | 類型及說明
Locale | Long，要為其改變信息的地方ID
LCType | Long，欲改變的信息類型。參考api32.txt，檢視那些帶 LOCALE_ 前綴的常數
lpLCData | String，這個地方信息項目的新設置
註解
這個函數不會改變系統地方設置


SetLocalTime
VB聲明
Declare Function SetLocalTime Lib "kernel32" Alias "SetLocalTime" (lpSystemTime As SYSTEMTIME) As Long
說明
設置當前地方時間
返回值
Long，TRUE（非零）表示成功，否則返回零。會設置GetLastError
參數表
參數 | 類型及說明
lpSystemTime | SYSTEMTIME，這個結構指定了新的地方時間。該結構中的wDayOfWeek條目會被忽略


SetSysColors
VB聲明
Declare Function SetSysColors Lib "user32" Alias "SetSysColors" (ByVal nChanges As Long, lpSysColor As Long, lpColorValues As Long) As Long
說明
設置指定窗口顯示對象的顏色
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
nChanges | Long，欲改變的對象的數量
lpSysColor | Long，按引用傳遞。這是一個整數數組（總共包含nChanges個元素）的第一個元素。每個條目都包含了一個常數，指定一個windows顯示對象。參考GetSysColor函數
lpColorValues | Long，按引用傳遞。這是RGB值數組的第一個元素；該數組用於設置lpSysColor數組中的對象顏色


SetSystemCursor
VB聲明
Declare Function SetSystemCursor Lib "user32" Alias "SetSystemCursor" (ByVal hcur As Long, ByVal id As Long) As Long
說明
改變任何一個標準系統指針
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hcur | Long，新指針
id | Long，以 OCR_ 前綴起頭的一個常數，用於指定標準系統指針
註解
不要破壞由hcur指定的指針——在必要的時候，它會由系統自行清除


SetSystemTime
VB聲明
Declare Function SetSystemTime Lib "kernel32" Alias "SetSystemTime" (lpSystemTime As SYSTEMTIME) As Long
說明
設置當前系統時間
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpSystemTime | SYSTEMTIME，這個結構指定了新的地方時間。其中的wDayOfWeek條目會被忽略


SetSystemTimeAdjustment
VB聲明
Declare Function SetSystemTimeAdjustment Lib "kernel32" Alias "SetSystemTimeAdjustment" (ByVal dwTimeAdjustment As Long, ByVal bTimeAdjustmentDisabled As Boolean) As Long
說明
Win32可使內部系統時鐘與一個外部的時鐘信號源同步，方法是定時添加一個校準值。這個函數指定的所有時間都以100ns（0.1ms）為單位遞增
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
dwTimeAdjustment | Long，每次時鐘中斷時添加到內部系統時鐘的時間量
bTimeAdjustmentDisabled | Boolean，TRUE用於禁止時間調校


SetThreadLocale
VB聲明
Declare Function SetThreadLocale Lib "kernel32" Alias "SetThreadLocale" (ByVal Locale As Long) As Long
說明
為當前線程設置地方
返回值
Long，TRUE（非零）表示成功，否則返回零。會設置GetLastError
參數表
參數 | 類型及說明
Locale | Long，這個線程使用的地方ID
註解
適用平台——Windows NT


SetTimeZoneInformation
VB聲明
Declare Function SetTimeZoneInformation Lib "kernel32" Alias "SetTimeZoneInformation" (lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long
說明
設置系統時區信息
返回值
Long，TRUE（非零）表示成功，否則返回零。會設置GetLastError
參數表
參數 | 類型及說明
lpTimeZoneInformation | TIME_ZONE_INFORMATION，要在其中設置當前時區信息的一個結構
註解
參考GetTimeZoneInformation


ShowCaret
VB聲明
Declare Function ShowCaret Lib "user32" Alias "ShowCaret" (ByVal hwnd As Long) As Long
說明
在指定的窗口裡顯示插入符（光標）
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，包含了插入符的窗口的句柄。可以為零；此時，只有在插入符包含於由活動任務擁有的一個窗口時，它才會顯示出來
註解
參考HideCaret函數


ShowCursor
VB聲明
Declare Function ShowCursor Lib "user32" Alias "ShowCursor" (ByVal bShow As Long) As Long
說明
控制滑鼠指針的可視性
返回值
Long，顯示計數（參考註解）
參數表
參數 | 類型及說明
bShow | Long，TRUE（非零）顯示指針，FALSE隱藏
註解
windows維持著一個內部顯示計數；倘若bShow為TRUE，那麼每調用一次這個函數，計數就會遞增1；反之，如bShow為FALSE，則計數遞減1。只有在這個計數大於或等於0的情況下，指針才會顯示出來


SwapMouseButton
VB聲明
Declare Function SwapMouseButton Lib "user32" Alias "SwapMouseButton" (ByVal bSwap As Long) As Long
說明
決定是否互換滑鼠左右鍵的功能
返回值
Long，TRUE（非零）表示滑鼠按鈕的功能在調用這個函數之前已經互換；否則返回零
參數表
參數 | 類型及說明
bSwap | Long，倘若為TRUE（非零），則互換兩個滑鼠按鈕的功能。FALSE則恢復正常狀態
註解
滑鼠是一種共享資源，所以這個函數會對系統中的所有應用程序造成影響


SystemParametersInfo

SystemParametersInfo, SystemParametersInfoByval
VB聲明
Declare Function SystemParametersInfo& Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long) Declare Function SystemParametersInfoByVal& Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Any, ByVal fuWinIni As Long)
說明
允許獲取和設置數量眾多的windows系統參數
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
uAction | Long，指定要設置的參數。參考uAction常數表
uParam | Long，參考uAction常數表
lpvParam | Any，按引用調用的Integer、Long和數據結構。對於String數據，請用SystemParametersInfoByval函數。具體用法參考uAction常數表
fuWinIni | Long，取決於不同的參數及操作系統，隨同這個函數設置的用戶配置參數保存在win.ini或註冊表裡，或同時保存在這兩個地方。這個參數規定了在設置系統參數的時候，是否應更新用戶設置參數。可以是零（禁止更新），或下述任何一個常數：
 | SPIF_UPDATEINIFILE | 更新win.ini和（或）註冊表中的用戶配置文件
 | SPIF_SENDWININICHANGE | 倘若也設置了SPIF_UPDATEINIFILE，將一條WM_WININICHANGE消息發給所有應用程序。否則沒有作用。這調消息告訴應用程序已經改變了用戶配置設置
註解
在調用這個函數之前，特別要注意將lpvParam參數定義成正確的數據類型


SystemTimeToTzSpecificLocalTime
VB聲明
Declare Function SystemTimeToTzSpecificLocalTime Lib "kernel32" Alias "SystemTimeToTzSpecificLocalTime" (lpTimeZoneInformation As TIME_ZONE_INFORMATION, lpUniversalTime As SYSTEMTIME, lpLocalTime As SYSTEMTIME) As Long
說明
將系統時間轉換成地方時間
返回值
Long，TRUE（非零）表示成功，否則返回零。會設置GetLastError
參數表
參數 | 類型及說明
lpTimeZoneInformation | TIME_ZONE_INFORMATION，包含了時區信息的結構
lpUniversalTime | SYSTEMTIME，包含系統時間的結構
lpLocalTime | SYSTEMTIME，用於裝載地方時間的結構
註解
適用平台：Windows NT


ToAscii

ToAscii, ToAsciiEx
VB聲明
Declare Function ToAscii& Lib "user32" (ByVal uVirtKey As Long, ByVal uScanCode As Long, lpbKeyState As Byte, lpwTransKey As Integer, ByVal fuState As Long) Declare Function ToAsciiEx& Lib "user32" (ByVal uVirtKey As Long, ByVal uScanCode As Long, lpKeyState As Byte, lpwTransKey As Integer, ByVal fuState As Long, ByVal dwhkl As Long)
說明
根據當前的掃瞄碼和鍵盤信息，將一個虛擬鍵轉換成ASCII字符
返回值
Long，負值表明按鍵是「死」的——不能自己將自己轉換成一個字符（重音鍵[accent keys]就是一個例子）。在給定當前鍵盤狀態的前提下，如按鍵不能被轉換（翻譯），則返回0。如單個字符已載入lpwTransKey，則返回1。如lpwTransKey裡已載入了兩個字符（需要把它分隔到兩個字節裡），那麼返回值是2。在當前字符集裡，倘若單獨一個字符不能表達鍵盤支持的死鍵或重音按鍵組合，就可能得到2的返回值
參數表
參數 | 類型及說明
uVirtKey | Long，欲轉換的虛擬鍵
uScanCode | Long，鍵的掃瞄碼。如鍵處於抬起狀態，會設置高位（設為1）；如按下，則清除高位（設為0）
lpbKeyState | Byte，描述了鍵盤狀態的一個256字符數組的第一個條目。參考GetKeyboardState函數，瞭解關於這個數組更多的情況
lpwTransKey | Integer，用於裝載轉換過後的字符的一個整數變量。可用 chr()函數將這個值轉換成一個字串
fuState | Long，如一個選單處於活動狀態，則設為1
dwhkl | Long，欲用於轉換的一個鍵盤佈局的句柄
註解
NumLock鍵的狀態會被忽略，因為虛擬鍵碼包括了哪個信息 在微軟的win32手冊裡，對ToAsciiEx函數的建議是將它的lpwTransKey參數設為Long，而不要設為Integer。這裡的函數聲明根據實際的C語言頭，它將參數定義成一個16位的字（既vb的整數）


ToUnicode
VB聲明
Declare Function ToUnicode Lib "user32" Alias "ToUnicode" (ByVal wVirtKey As Long, ByVal wScanCode As Long, lpKeyState As Byte, ByVal pwszBuff As String, ByVal cchBuff As Long, ByVal wFlags As Long) As Long
說明
根據當前的掃瞄碼和鍵盤信息，將一個虛擬鍵轉換成Unicode字符
返回值
Long，值-1表明按鍵是「死」的——不能自己將自己轉換成一個字符（重音鍵[accent keys]就是一個例子）。在給定當前鍵盤狀態的前提下，如按鍵不能被轉換（翻譯），則返回0。如單個字符已載入pwszBuff，則返回1。如pwszBuff裡已載入了兩個或更多的字符，那麼返回值是2。在當前字符集裡，倘若單獨一個字符不能表達鍵盤支持的死鍵或重音按鍵組合，就可能得到2的返回值
參數表
參數 | 類型及說明
wVirtKey | Long，欲轉換的虛擬鍵
wScanCode | Long，鍵的掃瞄碼。如鍵處於抬起狀態，會設置高位；如按下，則清除高位
lpKeyState | Byte，描述了鍵盤狀態的一個256字符數組的第一個條目。參考GetKeyboardState函數，瞭解關於這個數組更多的情況
pwszBuff | String，用於裝載Unicode字符的一個字串緩衝區。注意事先對這個字串進行正確的初始化
cchBuff | Long，pwszBuff字串緩衝區的長度
wFlags | Long，如一個選單處於活動狀態，則設為1
註解
適用平台：Windows NT


硬體與系統類函數7

硬體與系統函數：共七頁。 第一頁 ， 第二頁 ， 第三頁 ， 第四頁 ， 第五頁 ， 第六頁 ，第七頁
UnloadKeyboardLayout | 卸載指定的鍵盤佈局
VkKeyScan | 針對Windows字符集中一個ASCII字符，判斷虛擬鍵碼和Shift鍵的狀態
完


UnloadKeyboardLayout
VB聲明
Declare Function UnloadKeyboardLayout Lib "user32" Alias "UnloadKeyboardLayout" (ByVal HKL As Long) As Long
說明
卸載指定的鍵盤佈局。參考LoadKeyboardLayout函數，瞭解更多信息
返回值
Long，如執行成功，返回鍵盤佈局的句柄；如出錯，則返回零。會設置GetLastError
參數表
參數 | 類型及說明
HKL | Long，欲卸載的鍵盤佈局的句柄
註解
在windows95下，這個函數永遠都不能卸載默認的系統鍵盤佈局


VkKeyScan

VkKeyScan, VkKeyScanEx
VB聲明
Declare Function VkKeyScan% Lib "user32" Alias "VkKeyScanA" (ByVal cChar As Byte) Declare Function VkKeyScanEx% Lib "user32" Alias "VkKeyScanExA" (ByVal ch As Byte, ByVal dwhkl As Long)
說明
針對Windows字符集中一個ASCII字符，判斷虛擬鍵碼和Shift鍵的狀態
返回值
Long，低字包含了虛擬鍵碼。高字則包含了下述標誌： 位0指出 Shift 鍵已經按下；位1指出 Ctrl 鍵已經按下；位2指出 Alt 鍵已經按下
參數表
參數 | 類型及說明
ch | Byte，欲轉換的字符的ASCII值
dwhkl | Long，轉換時作為依據的鍵盤佈局
註解
數字小鍵盤的轉換會被忽略。這個函數可用於獲取發送WM_KEYDOWN 和 WM_KEYUP消息時應使用的正確參數


設備場景類1

設備場景函數，共五頁。第一頁， 第二頁 ， 第三頁 ， 第四頁 ， 第五頁
CombineRgn | 將兩個區域組合為一個新區域
CombineTransform | 驅動世界轉換。它相當於依順序進行兩次轉換
CreateCompatibleDC | 創建一個與特定設備場景一致的內存設備場景
CreateDC | 為專門設備創建設備場景
CreateEllipticRgn | 創建一個橢圓
CreateEllipticRgnIndirect | 創建一個內切於特定矩形的橢圓區域
CreateIC | 為專用設備創建一個信息場景
CreatePolygonRgn | 創建一個由一系列點圍成的區域
CreatePolyPolygonRgn | 創建由多個多邊形構成的區域。每個多邊形都應是封閉的
CreateRectRgn | 創建一個矩形區域
CreateRectRgnIndirect | 創建一個矩形區域
CreateRoundRectRgn | 創建一個圓角矩形
DeleteDC | 刪除專用設備場景或信息場景，釋放所有相關窗口資源
DPtoLP | 將點陣從設備坐標轉換到專用設備場景邏輯坐標
EqualRgn | 確定兩個區域是否相等
ExcludeClipRect | 從專用設備場景的剪裁區中去掉一個矩形區。矩形內不能進行繪圖


CombineRgn
VB聲明
Declare Function CombineRgn Lib "gdi32" Alias "CombineRgn" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
說明
將兩個區域組合為一個新區域
返回值
Long，下列常數之一： COMPLEXREGION：區域有互相交疊的邊界 SIMPLEREGION：區域邊界沒有互相交疊 NULLREGION：區域為空 ERRORAPI：不能創建組合區域
參數表
參數 | 類型及說明
hDestRgn | Long，包含組合結果的區域句柄
hSrcRgn1 | Long，源區域1
hSrcRgn2 | Long，源區域2
nCombineMode | Long，組合兩區域的方法。可設為下述常數
 | RGN_AND | hDestRgn被設置為兩個源區域的交集
 | RGN_COPY | hDestRgn被設置為hSrcRgn1的拷貝
 | RGN_DIFF | hDestRgn被設置為hSrcRgn1中與hSrcRgn2不相交的部分
 | RGN_OR | hDestRgn被設置為兩個區域的並集
 | RGN_XOR | hDestRgn被設置為除兩個源區域OR之外的部分


CombineTransform
VB聲明
Declare Function CombineTransform Lib "gdi32" Alias "CombineTransform" (lpxformResult As xform, lpxform1 As xform, lpxform2 As xform) As Long
說明
驅動世界轉換。它相當於依順序進行兩次轉換
返回值
Long，執行成功為TRUE（非零），失敗則為零
參數表
參數 | 類型及說明
lpxformResult | xform，保存轉換結果的結構
lpxform1 | xform，按順序的第一個結構
xform | xform，按順序的第二個結構
適用平台
Windows NT


CreateCompatibleDC
VB聲明
Declare Function CreateCompatibleDC Lib "gdi32" Alias "CreateCompatibleDC" (ByVal hdc As Long) As Long
說明
創建一個與特定設備場景一致的內存設備場景
返回值
Long，新設備場景句柄，若出錯則為零
參數表
參數 | 類型及說明
hdc | Long，設備場景句柄。新的設備場景將與它一致。也可能為0以創建一個與屏幕一致的設備場景
註解
在繪製之前，先要為該設備場景選定一個位圖。不再需要時，該設備場景可用DeleteDC函數刪除。刪除前，其所有對象應回復初始狀態


CreateDC

CreateDC, CreateDCBynum
VB聲明
Declare Function CreateDC& Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, lpInitData As DEVMODE)
Declare Function CreateDCBynum& Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, lpInitData As Long)
說明
為專門設備創建設備場景
返回值
Long，新設備場景句柄，若出錯則為零
參數表
參數 | 類型及說明
lpDriverName | String，用vbNullString傳遞null值給該參數，除非：1、用DISPLAY，是獲取整個屏幕的設備場景；2、用WINSPOOL，則是訪問列印驅動
lpDeviceName | String，所用專門設備的名稱。該名由列印管理器分配顯示
lpOutput | String，用vbNullString傳遞null值給該參數
lpInitData | DEVMODE，這個結構保存初始值。用CreateDCBynum傳遞0（NULL）值則適用默認設置
註解

在繪製之前，先要為該設備場景選定一個位圖。不再需要時，該設備場景可用DeleteDC函數刪除。刪除前，其所有對象應回復初始狀態。若有設備初始設置可用DocumentProperties API函數載入DEVMODE結構。使用屏幕設備場景（DISPLAY）時要小心，因為它會干擾其他應用程序的外觀

示例：靠近屏幕左上角畫一個矩形
dc& = CreateDCBynum("DISPLAY", vbNullString, vbNullString, 0)
dl& = Rectangle(dc&, 5, 5, 100, 100)


CreateEllipticRgn
VB聲明
Declare Function CreateEllipticRgn Lib "gdi32" Alias "CreateEllipticRgn" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
說明
創建一個橢圓，該橢圓與X1，Y1和X2，Y2坐標點確定的矩形內切
返回值
Long，執行成功則為區域句柄，失敗則為零
參數表
參數 | 類型及說明
X1,Y1 | Long，矩形左上角X，Y坐標
X2,Y2 | Long，矩形右下角X，Y坐標
註解
不用時一定要用DeleteObject函數刪除區域。用Ellipse API函數繪出的橢圓與該橢圓區域不完全相同，因為本函數的繪圖計算不包括矩形的下邊和右邊


CreateEllipticRgnIndirect
VB聲明
Declare Function CreateEllipticRgnIndirect Lib "gdi32" Alias "CreateEllipticRgnIndirect" (lpRect As Rect) As Long
說明
創建一個內切於特定矩形的橢圓區域
返回值
Long，執行成功則返回區域句柄，失敗則為零
參數表
參數 | 類型及說明
lpRect | Long，定義要創建的橢圓區域尺寸的矩形
註解
不用時一定要用DeleteObject函數刪除該區域


CreateIC
VB聲明
Declare Function CreateIC Lib "gdi32" Alias "CreateICA" (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, lpInitData As DEVMODE) As Long
說明
為專用設備創建一個信息場景。信息場景可用來快速獲取某設備的信息而無須創建設備場景這樣的系統開銷。它可作為參數傳遞給GetDeviceCaps一類的信息函數以替代設備場景參數
返回值
Long，執行成功為信息場景句柄，失敗則為零
參數表
參數 | 類型及說明
lpDriverName | String，用vbNullString傳遞null值給該參數，除非：1、用DISPLAY，是獲取整個屏幕的設備場景；2、用WINSPOOL，則是訪問列印驅動
lpDeviceName | String，所用專門設備的名稱。該名由列印管理器分配顯示
lpOutput | String，用vbNullString傳遞null值給該參數
lpInitData | DEVMODE，這個結構保存初始值
註解
Long，不用時一定要用DeleteDC函數刪除設備場景。進一步的說明參考CreateDC函數
示例：為一個名為「Color Stylus」的印表機取回信息場景
dc& = CreateICBynum("WINSPOOL", "Color Stylus", vbNullString,0)


CreatePolygonRgn
VB聲明
Declare Function CreatePolygonRgn Lib "gdi32" Alias "CreatePolygonRgn" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
說明
創建一個由一系列點圍成的區域。windows在需要時自動將最後點與第一點相連以封閉多邊形
返回值
Long，執行成功為創建的區域句柄，失敗則為0
參數表
參數 | 類型及說明
lpPoint | POINTAPI，nCount個POINTAPI結構中的第一個POINTAPI結構
nCount | Long，多邊形的點數
nPolyFillMode | Long，描述多邊形填充模式。可為ALTERNATE 或 WINDING常數。參考SetPolyFillMode函數對多邊形填充模式的解釋
註解
不用時一定要用DeleteObject函數刪除該區域


CreatePolyPolygonRgn
VB聲明
Declare Function CreatePolyPolygonRgn Lib "gdi32" Alias "CreatePolyPolygonRgn" (lpPoint As POINTAPI, lpPolyCounts As Long, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
說明
創建由多個多邊形構成的區域。每個多邊形都應是封閉的
返回值
Long，執行成功則為創建區域的句柄，失敗則為零
參數表
參數 | 類型及說明
lpPoint | POINTAPI，nCount個POINTAPI結構中的第一個POINTAPI結構
lpPolyCounts | Long，長整數陣列的第一個入口。每個入口包含構成一個封閉多邊形的點數。lpPoint陣列組成了一系列多邊形，每個多邊形在lpPolyCounts中有一個入口
nCount | Long，多邊形的點數
nPolyFillMode | Long，描述多邊形填充模式。可為ALTERNATE 或 WINDING常數。參考SetPolyFillMode函數對多邊形填充模式的解釋
註解
不用時一定要用DeleteObject函數刪除該區域


CreateRectRgn
VB聲明
Declare Function CreateRectRgn Lib "gdi32" Alias "CreateRectRgn" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
說明
創建一個由點X1，Y1和X2，Y2描述的矩形區域
返回值
Long，執行成功為區域句柄，失敗則為零
參數表
參數 | 類型及說明
X1,Y1 | Long，矩形左上角X，Y坐標
X2,Y2 | Long，矩形右下角X，Y坐標
註解
不用時一定要用DeleteObject函數刪除該區域 這個矩形的下邊和右邊不包含在區域之內


CreateRectRgnIndirect
VB聲明
Declare Function CreateRectRgnIndirect Lib "gdi32" Alias "CreateRectRgnIndirect" (lpRect As ) As Long
說明
創建一個由lpRect確定的矩形區域
返回值
Long，執行成功則為區域句柄，失敗則為0
參數表
參數 | 類型及說明
lpRect | RECT，要用來創建區域的矩形
註解
參考CreateRectRgn的註解


CreateRoundRectRgn
VB聲明
Declare Function CreateRoundRectRgn Lib "gdi32" Alias "CreateRoundRectRgn" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long
說明
創建一個圓角矩形，該矩形由X1，Y1-X2，Y2確定，並由X3，Y3確定的橢圓描述圓角弧度
返回值
Long，執行成功則為區域句柄，失敗則為0
參數表
參數 | 類型及說明
X1,Y1 | Long，矩形左上角的X，Y坐標
X2,Y2 | Long，矩形右下角的X，Y坐標
X3 | Long，圓角橢圓的寬。其範圍從0（沒有圓角）到矩形寬（全圓）
Y3 | Long，圓角橢圓的高。其範圍從0（沒有圓角）到矩形高（全圓）
註解
不用時一定要用DeleteObject函數刪除該區域 用該函數創建的區域與用RoundRect API函數畫的圓角矩形不完全相同，因為本矩形的右邊和下邊不包括在區域之內


DeleteDC
VB聲明
Declare Function DeleteDC Lib "gdi32" Alias "DeleteDC" (ByVal hdc As Long) As Long
說明
刪除專用設備場景或信息場景，釋放所有相關窗口資源。不要將它用於GetDC函數取回的設備場景
返回值
Long，執行成功則為非零，失敗則為零
參數表
參數 | 類型及說明
hdc | Long，將要刪除的設備場景
註解
若有對象被選入設備場景，則在調用本函數前應將它們選出。為此，可將初始對像回選入DC，也可用SaveDC， RestoreDC函數對回復DC為其創建時的狀態
在vb裡使用
不要將它用於由vb hdc屬性獲取的設備場景句柄


DPtoLP
VB聲明
Declare Function DPtoLP Lib "gdi32" Alias "DPtoLP" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long
說明
將點陣從設備坐標轉換到專用設備場景邏輯坐標
返回值
Long，執行成功為非零值，失敗則為零
參數表
參數 | 類型及說明
hdc | Long，確定邏輯坐標系統的設備場景句柄
lpPoint | POINTAPI，包含有設備坐標點的一個或多個POINTAPI結構的第一入口。每個入口都將被轉換為邏輯坐標（若為世界轉換則轉換為世界坐標）
nCount | Long，lpPoint陣列中的入口數


EqualRgn
VB聲明
Declare Function EqualRgn Lib "gdi32" Alias "EqualRgn" (ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long) As Long
說明
確定兩個區域是否相等
返回值
Long，若兩區域相等為非零值。若不等為0。若有一個區域無效則返回ERRORAPI
參數表
參數 | 類型及說明
hSrcRgn1 | Long，一個區域的句柄
hSrcRgn2 | Long，區域句柄


ExcludeClipRect
VB聲明
Declare Function ExcludeClipRect Lib "gdi32" Alias "ExcludeClipRect" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
說明
從專用設備場景的剪裁區中去掉一個由點X1，Y1和X2，Y2確定的矩形區。矩形內不能進行繪圖
返回值
Long，返回以下常數之一以描述所得剪裁區： COMPLEXREGION：區域邊界互相交疊 SIMPLEREGION：區域邊界沒有互相交疊 NULLREGION：區域為空 ERRORAPI：發生了錯誤
參數表
參數 | 類型及說明
hdc | Long，要修改的設備場景
X1,Y1 | Long，矩形（邏輯坐標）左上角的X，Y坐標
X2,Y2 | Long，矩形（邏輯坐標）右下角的X，Y坐標，矩形的右邊和下邊不會從剪裁區中移走


設備場景類2

設備場景函數，共五頁。 第一頁 ，第二頁， 第三頁 ， 第四頁 ， 第五頁
ExcludeUpdateRgn | 從專用設備場景剪裁區去掉指定窗口的刷新區域
ExtCreateRegion | 根據世界轉換修改區域
ExtSelectClipRgn | 將指定區域組合到設備場景的當前剪裁區
FillRgn | 用指定刷子填充指定區域
FrameRgn | 用指定刷子圍繞指定區域畫一個外框
GetBoundsRect | 獲取指定設備場景的邊界矩形
GetClipBox | 獲取完全包含指定設備場景剪裁區的最小矩形
GetClipRgn | 獲取設備場景當前剪裁區
GetDC | 獲取指定窗口的設備場景
GetDCEx | 為指定窗口獲取設備場景。相比GetDC，本函數提供了更多的選項
GetDCOrgEx | 獲取指定設備場景起點位置（以屏幕坐標表示）
GetDeviceCaps | 根據指定設備場景代表的設備的功能返回信息
GetGraphicsMode | 確定是否允許增強圖形模式（世界轉換）
GetMapMode | 為特定設備場景調入映像模式
GetRegionData | 裝入描述一個區域信息的RgnData結構或緩衝區
GetRgnBox | 獲取完全包含指定區域的最小矩形


ExcludeUpdateRgn
VB聲明
Declare Function ExcludeUpdateRgn Lib "user32" Alias "ExcludeUpdateRgn" (ByVal hdc As Long, ByVal hwnd As Long) As Long
說明
從專用設備場景剪裁區去掉指定窗口的刷新區域。這防止對無效區繪圖（該無效區將推遲一點再刷新）
返回值
Long，見ExcludeClipRect函數返回值
參數表
參數 | 類型及說明
hdc | Long，設備場景，其剪裁區將被修改以排除hwnd窗口的刷新區
hwnd | Long，窗口句柄
在vb中使用
設您要完成一個較長或複雜的繪圖操作，該函數可允許您避免畫到現在沒有遮蓋而隨後即將畫的區域。這可提高性能並消除閃爍效果


ExtCreateRegion
VB聲明
Declare Function ExtCreateRegion Lib "gdi32" Alias "ExtCreateRegion" (lpXform As xform, ByVal nCount As Long, lpRgnData As RGNDATA) As Long
說明
根據世界轉換修改區域
返回值
Long，執行成功為已轉換區域的句柄，失敗則為0
參數表
參數 | 類型及說明
lpXform | xform，將用於由lpRgnData指定區域的轉換
nCount | Long，lpRgnData數據結構或緩衝區的字節數
lpRgnData | RGNDATA，用GetRegionData定義區域時載入的一個結構
註解
在win95下，只有縮放和平移轉換才能用該函數。它不支持旋轉和剪切


ExtSelectClipRgn
VB聲明
Declare Function ExtSelectClipRgn Lib "gdi32" Alias "ExtSelectClipRgn" (ByVal hdc As Long, ByVal hRgn As Long, ByVal fnMode As Long) As Long
說明
將指定區域組合到設備場景的當前剪裁區
返回值
Long，返回下列常數之一，以描述所得剪裁區： COMPLEXREGION：區域邊界互相交疊 SIMPLEREGION：區域邊界沒有互相交疊 NULLREGION：區域為空 ERRORAPI：發生了錯誤
參數表
參數 | 類型及說明
hdc | Long，剪裁區將被修改的設備場景的句柄
hRgn | Long，源區域句柄。若fnMode為RGN_COPY，它可為NULL
fnMode | Long，下列常數之一：
 | RGN_AND | 新剪裁區包括即屬hRgn又屬當前剪裁區的部分
 | RGN_COPY | 新剪裁區為hRgn區域
 | RGN_DIFF | 新剪裁區為當前剪裁區除掉其在hRgn區內的部分
 | RGN_OR | 新剪裁區包括屬hRgn或當前屬當前剪裁區的部分
 | RGN_XOR | 新剪裁區包括屬hRgn或當前屬當前剪裁區的部分，但要除去同屬兩者的部分
註解
本函數對hRgn區域沒有影響，執行後可毀去（destroy）該區域


FillRgn
VB聲明
Declare Function FillRgn Lib "gdi32" Alias "FillRgn" (ByVal hdc As Long, ByVal hRgn As Long, ByVal hBrush As Long) As Long
說明
用指定刷子填充指定區域
返回值
Long，執行成功為非零值，失敗則為0
參數表
參數 | 類型及說明
hdc | Long，設備場景句柄
hRgn | Long，以數據設備坐標填充的區域句柄
hBrush | Long，要用的刷子的句柄


FrameRgn
VB聲明
Declare Function FrameRgn Lib "gdi32" Alias "FrameRgn" (ByVal hdc As Long, ByVal hRgn As Long, ByVal hBrush As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
說明
用指定刷子圍繞指定區域畫一個外框
返回值
Long，執行成功返回非零值，失敗為0
參數表
參數 | 類型及說明
hdc | Long，設備場景句柄
hRgn | Long，將數據設備坐標填充的區域句柄
hBrush | Long，將用的刷子句柄
nWidth | Long，垂直邊框寬度（以設備單元為單位）
nHeight | Long，水平邊框高度（以設備單元為單位）


GetBoundsRect
VB聲明
Declare Function GetBoundsRect Lib "gdi32" Alias "GetBoundsRect" (ByVal hdc As Long, lprcBounds As RECT, ByVal flags As Long) As Long
說明
獲取指定設備場景的邊界矩形。每個設備場景都有一個邊界矩形，程序員可用它來堆放表示當前圖像邊界的信息
返回值
Long，出錯為0，否則為下列常數之一： DCB_SET：邊界矩形非空 DCB_RESET：邊界矩形為空 DCB_ENABLE：邊界矩形正被堆放 DCB_DISABLE：邊界矩形當前沒有被堆放
參數表
參數 | 類型及說明
hdc | Long，邊界矩形對應的設備場景
lprcBounds | RECT，裝載設備場景hdc的當前邊界矩形
flags | Long，可設為常數DCB_RESET以清除邊界矩形，否則設為零
註解
詳情參考SetBoundsRect


GetClipBox
VB聲明
Declare Function GetClipBox Lib "gdi32" Alias "GetClipBox" (ByVal hdc As Long, lpRect As RECT) As Long
說明
獲取完全包含指定設備場景剪裁區的最小矩形
返回值
Long，返回下列常數之一，以描述所得剪裁區： COMPLEXREGION：區域邊界互相交疊 SIMPLEREGION：區域邊界沒有互相交疊 NULLREGION：區域為空 ERRORAPI：發生了錯誤
參數表
參數 | 類型及說明
hdc | Long，設備場景句柄
lpRect | RECT，裝載包含設備場景剪裁區的矩形


GetClipRgn
VB聲明
Declare Function GetClipRgn Lib "gdi32" Alias "GetClipRgn" (ByVal hdc As Long, ByVal hRgn As Long) As Long
說明
獲取設備場景當前剪裁區
返回值
Long，下列常數之一： 1——執行成功，剪裁區存在 0——執行成功，沒有定義剪裁區 -1——出錯
參數表
參數 | 類型及說明
hdc | Long，想要訪問的設備場景剪裁區
hRgn | Long，已存在的區域句柄。該區域將被設為設備場景當前剪裁區
註解
hRgn裝載剪裁區拷貝。它後面的改變不影響剪裁區。該函數只能載入由應用程序設置的剪裁區，那些由BeginPaint一類函數設置的內部剪裁區不能被函數訪問


GetDC
VB聲明
Declare Function GetDC Lib "user32" Alias "GetDC" (ByVal hwnd As Long) As Long
說明
獲取指定窗口的設備場景
返回值
Long，指定窗口的設備場景句柄，出錯則為0
參數表
參數 | 類型及說明
hwnd | Long，將獲取其設備場景的窗口的句柄。若為0，則要獲取整個屏幕的DC
註解
若窗口所屬類具有CS_OWNDC， CS_CLASSDC 或 CS_PARENTDC樣式，則獲取的設備場景屬窗口或類專有。vb的窗體和圖片框控件也是這種情況，它用該函數取得的結果和控件的hdc屬性相同（在autoredraw為FALSE時）。您無須考慮取回的窗體或圖片框控件設備場景的默認狀態，特別是繪圖對象。另外，默認狀態隨著窗體和控件autoredraw屬性的設置而不同。在設備場景釋放前您必須回復其狀態為初始值。對於沒有CS_OWNDC， CS_CLASSDC 或 CS_PARENTDC樣式的窗口的設備場景，可從通用windows緩存中獲取，其狀態為默認值。緩存中可用設備場景數量是有限的，因此只要可能就釋放設備場景 用本函數獲取的設備場景一定要用ReleaseDC函數釋放，不能用DeleteDC


GetDCEx
VB聲明
Declare Function GetDCEx Lib "user32" Alias "GetDCEx" (ByVal hwnd As Long, ByVal hrgnclip As Long, ByVal fdwOptions As Long) As Long
說明
為指定窗口獲取設備場景。相比GetDC，本函數提供了更多的選項
返回值
Long，執行成功為指定窗口設備場景句柄。出錯則為0
參數表
參數 | 類型及說明
hwnd | Long，窗口句柄
hrgnclip | Long，窗口剪裁區
fdwOptions | Long，標誌字。根據下列常數設置各位：
 | DCX_CACHE | 不管窗口類的樣式，從windows緩存獲取設備場景
 | DCX_CLIPCHILREN | 所有可見的子窗口區都要從DC的剪裁區中排除
 | DCX_CLIPSIBLINGS | 窗口hWnd上的所有可見兄弟窗口都要從DC的剪裁區中排除
 | DCX_EXCLUDERGN | 從DC剪裁區中排除由hrgnclip指定的區域
 | DCX_EXCLUDEUPDATE | 從設備場景剪裁區中排除刷新區域
 | DCX_INTERSECTRGN | 由hrgnclip指定的區域與設備場景剪裁區相交
 | DCX_INTERSECTUPDATE | 指定區域與設備場景刷新區域相交
 | DCX_LOCKWINDOWUPDATE | 該標誌為允許向窗口繪圖，即使它由於LockWindowUpdate的調用被鎖住
 | DCX_NORESETATTRS | 設備場景釋放後不被重置為默認狀態
 | DCX_PARENTCLIP | 放棄CS_PARENTDC類樣式設置。DC的起點設為hWnd窗口的左上角
 | DCX_WINDOW | A device context is returned for the entire window rectangle rather than just the client area of the window
 | DCX_VALIDATE | Combine with DCX_INTERSECTUPDATE, validates the clipping region
註解
若窗口所屬類具有CS_OWNDC， CS_CLASSDC 或 CS_PARENTDC樣式，則獲取的設備場景屬窗口或類專有。這時，設備場景狀態不能從初值修改。vb的窗體和控件通常是這種情況。否則，置DCX_CACHE位以從通用windows緩衝區恢復設備場景。若不置該位，則函數返回0。DC的狀態位默認設置。從緩存獲取的設備場景用過後要用ReleaseDC函數釋放以防止系統死鎖，因為windows只有5個緩存DC可用 其他情況參見GetDC函數註解


GetDCOrgEx
VB聲明
Declare Function GetDCOrgEx Lib "gdi32" Alias "GetDCOrgEx" (ByVal hdc As Long, lpPoint As POINTAPI) As Long
說明
獲取指定設備場景起點位置（以屏幕坐標表示）。例如，設DC起點為窗口客戶區左上角，則該函數返回值為該角在屏幕中的位置（以屏幕像素坐標表示）
返回值
Long，執行成功為非零值，否則為零
參數表
參數 | 類型及說明
hdc | Long，設備場景句柄
lpPoint | POINTAPI，裝載設備場景起點的屏幕坐標
示例：在窗體模塊中使用時，該代碼裝載窗體客戶區左上角坐標（以屏幕坐標表示）。它也是窗體hDC屬性的起點
Dim dl&
Dim pt As POINTAPI
dl& = GetDCOrgEx(hDC, pt)


GetDeviceCaps
VB聲明
Declare Function GetDeviceCaps Lib "gdi32" Alias "GetDeviceCaps" (ByVal hdc As Long, ByVal nIndex As Long) As Long
說明
根據指定設備場景代表的設備的功能返回信息
返回值
Long，參見GetDeviceCaps索引表
參數表
參數 | 類型及說明
hdc | Long，要查詢其設備的信息的設備場景
nIndex | Long，根據GetDeviceCaps索引表所示常數確定返回信息的類型


GetGraphicsMode
VB聲明
Declare Function GetGraphicsMode Lib "gdi32" Alias "GetGraphicsMode" (ByVal hdc As Long) As Long
說明
確定是否允許增強圖形模式（世界轉換）
返回值
Long，下列常數之一： GM_COMPATIBLE：圖形模式兼容win16 GM_ADVANCED：允許世界轉換
參數表
參數 | 類型及說明
hdc | Long，其模式將被測試的設備場景
註解
只有Windows NT支持世界轉換


GetMapMode
VB聲明
Declare Function GetMapMode Lib "gdi32" Alias "GetMapMode" (ByVal hdc As Long) As Long
說明
為特定設備場景調入映像模式
返回值
Long，當前設備場景的映像模式。關於映像模式的說明參見SetMapMode函數
參數表
參數 | 類型及說明
hdc | Long，其模式將被測試的設備場景


GetRegionData
VB聲明
Declare Function GetRegionData Lib "gdi32" Alias "GetRegionDataA" (ByVal hRgn As Long, ByVal dwCount As Long, lpRgnData As RgnData) As Long
說明
裝入描述一個區域信息的RgnData結構或緩衝區
返回值
Long，如果結構足夠大以裝入區域的數據，返回1；出錯時返回0。如果lpRgnData不夠大，不能裝入區域數據，則返回需要的結構大小
參數表
參數 | 類型及說明
hRgn | Long，包含信息的區域的句柄
dwCount | Long，RgnData結構的大小
lpRgnData | RgnData，這個結構用以裝入區域信息
註解
RgnData是一個描述區域的定長結構。Buffer是存放區域數據的緩衝區。緩衝區實際需要的大小取決於區域的複雜程度（顯然，1字節是永遠不夠的）。有兩個選擇： 1、將RgnData重定義為永遠不會用到的一個大尺寸。這是需要的，因為vb不允許動態重定義結構的大小 2、分配一個字節數組並用它來代替RgnData結構。這要求將As RgnData換為As Byte來改變函數的API聲明，並且傳送字節數組的第一個元素 如果以後要訪問RGNDATAHEADER結構的元素，需要用一個內存拷貝例程將數據從緩衝區拷貝到一個特別定義的RGNDATAHEADER結構中


GetRgnBox
VB聲明
Declare Function GetRgnBox Lib "gdi32" Alias "GetRgnBox" (ByVal hRgn As Long, lpRect As RECT) As Long
說明
獲取完全包含指定區域的最小矩形
返回值
Long，下列常數之一，以描述當前剪裁區： COMPLEXREGION：該區域有互相交疊的邊界 SIMPLEREGION：該區域邊界沒有互相交疊 NULLREGION：區域為空 ERRORAPI：發生了錯誤
參數表
參數 | 類型及說明
hRgn | Long，區域句柄
lpRect | RECT，矩形結構，裝載完全包含指定區域的矩形


設備場景類3

設備場景函數，共五頁。 第一頁 ， 第二頁 ，第三頁， 第四頁 ， 第五頁
GetUpdateRgn | 確定指定窗口的刷新區域。該區域當前無效，需要刷新
GetViewportExtEx | 獲取設備場景視口（viewport）範圍
GetViewportOrgEx | 獲取設備場景視口起點
GetWindowDC | 獲取整個窗口（包括邊框、滾動條、標題欄、選單等）的設備場景
GetWindowExtEx | 獲取指定設備場景的窗口範圍
GetWindowOrgEx | 獲取指定設備場景的邏輯窗口的起點
GetWindowRgn | 獲取窗口區域
GetWorldTransform | 如果有世界轉換，為設備場景獲取當前世界轉換
IntersectClipRect | 為指定設備定義一個新的剪裁區
InvalidateRgn | 使窗口指定區域不活動，並將它加入窗口刷新區，使之可隨後被重畫
InvertRgn | 通過顛倒每個像素值反轉設備場景指定區域
LPtoDP | 將點陣從指定設備場景邏輯坐標轉換為設備坐標
ModifyWorldTransform | 根據指定的模式修改世界轉換
OffsetClipRgn | 按指定量平移設備場景剪裁區
OffsetRgn | 按指定偏移量平移指定區域
OffsetViewportOrgEx | 平移設備場景視口區域


GetUpdateRgn
VB聲明
Declare Function GetUpdateRgn Lib "user32" Alias "GetUpdateRgn" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal fErase As Long) As Long
說明
確定指定窗口的刷新區域。該區域當前無效，需要刷新
返回值
Long，下列常數之一，以描述當前剪裁區： COMPLEXREGION：該區域有互相交疊的邊界 SIMPLEREGION：該區域邊界沒有互相交疊 NULLREGION：區域為空 ERRORAPI：發生了錯誤
參數表
參數 | 類型及說明
hwnd | Long，將確定刷新區域的窗口的句柄
hRgn | Long，裝載hwnd窗口刷新區域的區域句柄
fErase | Long，為非零值表示窗口背景應擦除，客戶區外的窗口部分是被重畫 原文：TRUE (nonzero) to specify that the window background should be erased and parts of the window outside of the client area should be redrawn.


GetViewportExtEx
VB聲明
Declare Function GetViewportExtEx Lib "gdi32" Alias "GetViewportExtEx" (ByVal hdc As Long, lpSize As SIZE) As Long
說明
獲取設備場景視口（viewport）範圍
返回值
Long，執行成功為非零值，失敗為0
參數表
參數 | 類型及說明
hdc | Long，設備場景句柄
lpSize | SIZE，裝載DC視口水平和垂直範圍（以設備單元表示）的結構


GetViewportOrgEx
VB聲明
Declare Function GetViewportOrgEx Lib "gdi32" Alias "GetViewportOrgEx" (ByVal hdc As Long, lpPoint As POINTAPI) As Long
說明
獲取設備場景視口起點
返回值
Long，執行成功為非零值，失敗為0
參數表
參數 | 類型及說明
hdc | Long，設備場景句柄
lpPoint | POINTAPI，裝載視口起點的結構


GetWindowDC
VB聲明
Declare Function GetWindowDC Lib "user32" Alias "GetWindowDC" (ByVal hwnd As Long) As Long
說明
獲取整個窗口（包括邊框、滾動條、標題欄、選單等）的設備場景
返回值
Long，執行成功為窗口設備場景，失敗則為0
參數表
參數 | 類型及說明
hwnd | Long，將獲取其設備場景的窗口
註解
不推薦在vb裡使用這個函數。用完後一定要用ReleaseDC函數釋放場景


GetWindowExtEx
VB聲明
Declare Function GetWindowExtEx Lib "gdi32" Alias "GetWindowExtEx" (ByVal hdc As Long, lpSize As SIZE) As Long
說明
獲取指定設備場景的窗口範圍
返回值
Long，執行成功為非零值，失敗為0
參數表
參數 | 類型及說明
hdc | Long，設備場景句柄
lpSize | SIZE，裝載設備場景邏輯窗口水平和垂直範圍（以邏輯單元表示）的結構


GetWindowOrgEx
VB聲明
Declare Function GetWindowOrgEx Lib "gdi32" Alias "GetWindowOrgEx" (ByVal hdc As Long, lpPoint As POINTAPI) As Long
說明
獲取指定設備場景的邏輯窗口的起點
返回值
Long，執行成功為非零值，失敗為0
參數表
參數 | 類型及說明
hdc | Long，設備場景句柄
lpPoint | POINTAPI，裝載邏輯窗口起點的結構


GetWindowRgn
VB聲明
Declare Function GetWindowRgn Lib "user32" Alias "GetWindowRgn" (ByVal hWnd As Long, ByVal hRgn As Long) As Long
說明
根據以前 SetWindowRgn 函數的定義獲取窗口區域
返回值
Long，下列常數之一，以描述當前剪裁區： COMPLEXREGION：該區域有互相交疊的邊界 SIMPLEREGION：該區域邊界沒有互相交疊 NULLREGION：區域為空 ERRORAPI：發生了錯誤
參數表
參數 | 類型及說明
hWnd | Long，要獲取區域的窗口
hRgn | Long，區域句柄，若已設置有一個區域，則裝載當前窗口區域的拷貝
註解
參考SetWindowRgn函數


GetWorldTransform
VB聲明
Declare Function GetWorldTransform Lib "gdi32" Alias "GetWorldTransform" (ByVal hdc As Long, lpXform As xform) As Long
說明
如果有世界轉換，為設備場景獲取當前世界轉換
返回值
Long，執行成功為非零值，失敗為0
參數表
參數 | 類型及說明
hdc | Long，設備場景句柄
lpXform | xform，裝載設備場景當前世界轉換的結構
適用平台
Windows NT


IntersectClipRect
VB聲明
Declare Function IntersectClipRect Lib "gdi32" Alias "IntersectClipRect" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
說明
為指定設備定義一個新的剪裁區，該區為當前剪裁區與由點X1，Y1和X2，Y2定義的矩形的交集
返回值
Long，下列常數之一，以描述當前剪裁區： COMPLEXREGION：該區域有互相交疊的邊界 SIMPLEREGION：該區域邊界沒有互相交疊 NULLREGION：區域為空 ERRORAPI：發生了錯誤
參數表
參數 | 類型及說明
hdc | Long，設備場景
X1,Y1 | Long，矩形左上角X，Y坐標
X2,Y2 | Long，矩形右下角X，Y坐標


InvalidateRgn
VB聲明
Declare Function InvalidateRgn Lib "user32" Alias "InvalidateRgn" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bErase As Long) As Long
說明
使窗口指定區域不活動，並將它加入窗口刷新區，使之可隨後被重畫
返回值
Long，TRUE
參數表
參數 | 類型及說明
hwnd | Long，窗口句柄
hRgn | Long，不活動區域句柄，該區域以窗口客戶坐標定義。若該句柄為0，則將使整個窗口客戶區不活動
bErase | Long，為非零值則表示要在刷新前擦除
註解
若bErase為TRUE，則刷新前整個刷新區都將被擦除而不只是定義的區域


InvertRgn
VB聲明
Declare Function InvertRgn Lib "gdi32" Alias "InvertRgn" (ByVal hdc As Long, ByVal hRgn As Long) As Long
說明
通過顛倒每個像素值反轉設備場景指定區域
返回值
Long，執行成功為非零值，失敗為零
參數表
參數 | 類型及說明
hdc | Long，設備場景句柄
hRgn | Long，將反轉的設備區域


LPtoDP
VB聲明
Declare Function LPtoDP Lib "gdi32" Alias "LPtoDP" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long
說明
將點陣從指定設備場景邏輯坐標轉換為設備坐標
返回值
Long，執行成功為非零值，失敗為0
參數表
參數 | 類型及說明
hdc | Long，定義了邏輯坐標系統的設備場景句柄
lpPoint | POINTAPI，包含邏輯坐標的點的一個或多個POINTAPI結構的第一入口，每個入口將被轉換為設備坐標
nCount | Long，lpPoint陣列中的入口數
註解
若存在世界轉換，lpPoint陣列中的點則是以世界坐標表示的


ModifyWorldTransform
VB聲明
Declare Function ModifyWorldTransform Lib "gdi32" Alias "ModifyWorldTransform" (ByVal hdc As Long, lpXform As xform, ByVal iMode As Long) As Long
說明
根據指定的模式修改世界轉換
返回值
Long，執行成功為非零值，失敗為0
參數表
參數 | 類型及說明
hdc | Long，設備場景，其世界坐標將被修改
lpXform | xform，這個結構內含根據iMode參數附加的轉換
iMode | Long，下列常數之一：
 | MWT_IDENTITY | 設置世界轉換為默認的特性轉換（用該特性轉換時，世界轉換無效），忽略lpXform參數
 | MWT_LEFTMULTIPLY | lpXform轉換被當前轉換乘，乘積設為新的世界轉換
 | MWT_RIGHTMULTIPLY | 當前轉換被lpXform轉換乘，乘積設為新的世界轉換
註解
與一般的乘法不同，矩陣乘法的結果與矩陣順序有關。在MWT_LEFTMULTIPLY模式，lpXform為左邊的操作數。請參考高等代數相關書籍。 調用本函數前先應調用SetGraphicsMode函數設置GM_ADVANCED圖形模式
適用平台
Windows NT


OffsetClipRgn
VB聲明
Declare Function OffsetClipRgn Lib "gdi32" Alias "OffsetClipRgn" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
說明
按指定量平移設備場景剪裁區
返回值
Long，下列常數之一，以描述當前剪裁區： COMPLEXREGION：該區域有互相交疊的邊界 SIMPLEREGION：該區域邊界沒有互相交疊 NULLREGION：區域為空 ERRORAPI：發生了錯誤
參數表
參數 | 類型及說明
hdc | Long，設備場景
x | Long，以邏輯單元表示的水平偏移
y | Long，以邏輯單元表示的垂直偏移


OffsetRgn
VB聲明
Declare Function OffsetRgn Lib "gdi32" Alias "OffsetRgn" (ByVal hRgn As Long, ByVal x As Long, ByVal y As Long) As Long
說明
按指定偏移量平移指定區域
返回值
Long，下列常數之一，以描述當前剪裁區： COMPLEXREGION：該區域有互相交疊的邊界 SIMPLEREGION：該區域邊界沒有互相交疊 NULLREGION：區域為空 ERRORAPI：發生了錯誤
參數表
參數 | 類型及說明
hRgn | Long，區域句柄
x | Long，以邏輯坐標表示的水平偏移量
y | Long，以邏輯坐標表示的垂直偏移量


OffsetViewportOrgEx
VB聲明
Declare Function OffsetViewportOrgEx Lib "gdi32" Alias "OffsetViewportOrgEx" (ByVal hdc As Long, ByVal nX As Long, ByVal nY As Long, lpPoint As POINTAPI) As Long
說明
平移設備場景視口區域
返回值
Long，執行成功為非零值，失敗為0
參數表
參數 | 類型及說明
hdc | Long，設備場景句柄
nX,nY | Long，將加到視口起點的水平和垂直偏移量（以設備坐標表示）
lpPoint | POINTAPI，裝載設備場景視口原先的起點的結構，以設備坐標表示


設備場景類4

設備場景函數，共五頁。 第一頁 ， 第二頁 ， 第三頁 ，第四頁， 第五頁
OffsetWindowOrgEx | 平移指定設備場景窗口起點
PaintRgn | 用當前刷子背景色填充指定區域
PtInRegion | 確定點是否在指定區域內
PtVisible | 確定指定點是否可見（即，點是否在設備場景剪裁區內）
RectInRegion | 確定矩形是否有部分在指定區域內
RectVisible | 確定指定矩形是否有部分可見（是否在設備場景剪裁區內）
ReleaseDC | 釋放由調用GetDC或GetWindowDC函數獲取的指定設備場景
RestoreDC | 從設備場景堆棧恢復一個原先保存的設備場景
SaveDC | 將指定設備場景狀態保存到Windows設備場景堆棧
ScaleViewportExtEx | 縮放設備場景視口的範圍
ScaleWindowExtEx | 縮放指定設備場景窗口範圍
ScrollDC | 在窗口（由設備場景代表）中水平和（或）垂直滾動矩形
SelectClipRgn | 為指定設備場景選擇新的剪裁區
SetBoundsRect | 設置指定設備場景的邊界矩形
SetGraphicsMode | 允許或禁止增強圖形模式，以提供某些支持（包括世界轉換）
SetMapMode | 設置指定設備場景的映射模式


OffsetWindowOrgEx
VB聲明
Declare Function OffsetWindowOrgEx Lib "gdi32" Alias "OffsetWindowOrgEx" (ByVal hdc As Long, ByVal nX As Long, ByVal nY As Long, lpPoint As POINTAPI) As Long
說明
平移指定設備場景窗口起點
返回值
Long，執行成功為非零值，失敗為0
參數表
參數 | 類型及說明
hdc | Long，設備場景句柄
nX,nY | Long，以邏輯坐標表示的窗口起點
lpPoint | POINTAPI，裝載DC窗口原有的起點的的結構，以邏輯坐標表示


PaintRgn
VB聲明
Declare Function PaintRgn Lib "gdi32" Alias "PaintRgn" (ByVal hdc As Long, ByVal hRgn As Long) As Long
說明
用當前刷子背景色填充指定區域
返回值
Long，執行成功為非零值，失敗為0
參數表
參數 | 類型及說明
hdc | Long，設備場景句柄
hRgn | Long，將填充的區域句柄


PtInRegion
VB聲明
Declare Function PtInRegion Lib "gdi32" Alias "PtInRegion" (ByVal hRgn As Long, ByVal x As Long, ByVal y As Long) As Long
說明
確定點是否在指定區域內
返回值
Long，若點在區域內為非零值，否則為0
參數表
參數 | 類型及說明
hRgn | Long，區域句柄
x | Long，以邏輯坐標表示的點的X坐標
y | Long，以邏輯坐標表示的點的Y坐標
在vb裡使用
在測試複雜圖像時非常有用


PtVisible
VB聲明
Declare Function PtVisible Lib "gdi32" Alias "PtVisible" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
說明
確定指定點是否可見（即，點是否在設備場景剪裁區內）
返回值
Long，若點在指定設備場景剪裁區內為非零值，否則為0
參數表
參數 | 類型及說明
hdc | Long，設備場景句柄
x | Long，要檢查的點的x,y坐標
y


RectInRegion
VB聲明
Declare Function RectInRegion Lib "gdi32" Alias "RectInRegion" (ByVal hRgn As Long, lpRect As RECT) As Long
說明
確定矩形是否有部分在指定區域內
返回值
Long，若矩形有部分在指定區域內為非零值，否則為0
參數表
參數 | 類型及說明
hRgn | Long，區域句柄
lpRect | RECT，要測試的矩形結構
註解
矩形的底邊和右邊不包括在lpRect內


RectVisible
VB聲明
Declare Function RectVisible Lib "gdi32" Alias "RectVisible" (ByVal hdc As Long, lpRect As RECT) As Long
說明
確定指定矩形是否有部分可見（是否在設備場景剪裁區內）
返回值
Long，矩形有部分在指定設備場景剪裁區內為非零值，否則為零
參數表
參數 | 類型及說明
hdc | Long，設備場景句柄
lpRect | RECT，用於測試是否可見的矩形（用邏輯坐標）
註解
矩形的底邊和右邊不包括在lpRect內


ReleaseDC
VB聲明
Declare Function ReleaseDC Lib "user32" Alias "ReleaseDC" (ByVal hwnd As Long, ByVal hdc As Long) As Long
說明
釋放由調用GetDC或GetWindowDC函數獲取的指定設備場景。它對類或私有設備場景無效（但這樣的調用不會造成損害）
返回值
Long，執行成功為1，否則為0
參數表
參數 | 類型及說明
hwnd | Long，要釋放的設備場景相關的窗口句柄
hdc | Long，要釋放的設備場景句柄
註解
對那些用CreateDC一類的DC創建函數生成的設備場景，不要用本函數


RestoreDC
VB聲明
Declare Function RestoreDC Lib "gdi32" Alias "RestoreDC" (ByVal hdc As Long, ByVal nSavedDC As Long) As Long
說明
從設備場景堆棧恢復一個原先保存的設備場景
返回值
Long，執行成功為非零值，失敗為0
參數表
參數 | 類型及說明
hdc | Long，將恢復的設備場景句柄
nSavedDC | Long，將恢復的設備場景ID號，它由SaveDC函數返回。若為-1，則恢復最近的設備場景
註解
若nSavedDC所指的不是棧頂的DC，則棧中nSavedDC之上的所有設備場景都要從棧中移出，詳情參見SaveDC函數


SaveDC
VB聲明
Declare Function SaveDC Lib "gdi32" Alias "SaveDC" (ByVal hdc As Long) As Long
說明
將指定設備場景狀態保存到Windows設備場景堆棧。DC的映射模式、窗口和視口縮放、剪裁區、所選對像列表都要保存。本函數通常在要對設備場景作臨時改動時使用，DC屬性可用RestoreDC函數恢復
返回值
Long，一個代表該設備場景的整數，據此可用RestoreDC函數恢復。出錯則為0
參數表
參數 | 類型及說明
hdc | Long，要保存的設備場景句柄
註解
設備場景被保存到內部堆棧，這意味著可多次保存一個設備場景狀態。例如，您可在進入某個函數時保存設備場景，在其中完成某些api調用，再保存一次，作更多的調用後，恢復前一狀態，再作其他api函數調用，最後退出該函數前恢復原有設備場景狀態。可保存的設備場景個數僅受限於內存大小


ScaleViewportExtEx
VB聲明
Declare Function ScaleViewportExtEx Lib "gdi32" Alias "ScaleViewportExtEx" (ByVal hdc As Long, ByVal nXnum As Long, ByVal nXdenom As Long, ByVal nYnum As Long, ByVal nYdenom As Long, lpSize As SIZE) As Long
說明
縮放設備場景視口的範圍
返回值
Long，執行成功為非零值，失敗為0
參數表
參數 | 類型及說明
hdc | Long，設備場景句柄
nXnum,nYnum | Long，當前X，Y範圍將與本數值相乘
nXdenom,nYdenom | Long，當前X，Y範圍將被本數值除
lpSize | SIZE，裝載原有水平和垂直視口範圍的結構
註解
本函數僅在MM_ISOTROPIC 和 MM_ANISOTROPIC映射模式下有效，在MM_ISOTROPIC模式，要在設置視口範圍之前設置窗口範圍


ScaleWindowExtEx
VB聲明
Declare Function ScaleWindowExtEx Lib "gdi32" Alias "ScaleWindowExtEx" (ByVal hdc As Long, ByVal nXnum As Long, ByVal nXdenom As Long, ByVal nYnum As Long, ByVal nYdenom As Long, lpSize As SIZE) As Long
說明
縮放指定設備場景窗口範圍
返回值
Long，執行成功為非零值，失敗為0
參數表
參數 | 類型及說明
hdc | Long，設備場景句柄
nXnum,nYnum | Long，當前X，Y範圍將與本數值相乘
nXdenom,nYdenom | Long，當前X，Y範圍將被本數值除
lpSize | SIZE，裝載原有水平和垂直視口範圍的結構
註解
本函數僅在MM_ISOTROPIC 和 MM_ANISOTROPIC映射模式下有效，在MM_ISOTROPIC模式，要在設置視口範圍之前設置窗口範圍


ScrollDC
VB聲明
Declare Function ScrollDC Lib "user32" Alias "ScrollDC" (ByVal hdc As Long, ByVal dx As Long, ByVal dy As Long, lprcScroll As RECT, lprcClip As RECT, ByVal hrgnUpdate As Long, lprcUpdate As RECT) As Long
說明
在窗口（由設備場景代表）中水平和（或）垂直滾動矩形
返回值
Long，執行成功為非零值，失敗為0，並設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景句柄
dx | Long，將滾動的水平單位
dy | Long，將滾動的垂直單位
lprcScroll | RECT，要滾動的矩形
lprcClip | RECT，定義剪裁區的矩形，滾動只能在該區內進行
hrgnUpdate | Long，該區域設置為客戶坐標系統中不被滾動操作覆蓋的區，也可為0，則表示沒有設置刷新區域
lprcUpdate | RECT，該矩形為客戶坐標系統中不被滾動操作覆蓋的區，也可為0（要求修改vb聲明使之能接收lprcUpdate為長整型參數）
註解
若hrgnUpdate和lprcUpdate都為NULL，windows將不能為該DC計算刷新區


SelectClipRgn
VB聲明
Declare Function SelectClipRgn Lib "gdi32" Alias "SelectClipRgn" (ByVal hdc As Long, ByVal hRgn As Long) As Long
說明
為指定設備場景選擇新的剪裁區
返回值
Long，下列常數之一，以描述當前剪裁區： COMPLEXREGION：該區域有互相交疊的邊界 SIMPLEREGION：該區域邊界沒有互相交疊 NULLREGION：區域為空 ERRORAPI：發生了錯誤（保留原有剪裁區）
參數表
參數 | 類型及說明
hdc | Long，將設置新剪裁區的設備場景
hRgn | Long，將為設備場景設置剪裁區的句柄，該區域使用設備坐標
註解
該函數拷貝剪裁區；這樣同一剪裁區可用於多個設備場景，刪除它不會影響每個設備場景的剪裁區。某些印表機文本和圖形有不同的坐標系統，這時，應選用精度高的坐標系統——例如，點陣印表機用抖動算法，其文本精度比圖形精度高，則應選用文本坐標系統 若使用WM_PAINT消息的子類，處理該消息使您用本函數增加的剪裁區不能超過窗口的不活動區


SetBoundsRect
VB聲明
Declare Function SetBoundsRect Lib "gdi32" Alias "SetBoundsRect" (ByVal hdc As Long, lprcBounds As RECT, ByVal flags As Long) As Long
說明
設置指定設備場景的邊界矩形。每個設備場景都有一個邊界矩形，編程者可用來堆放表示當前圖像邊界的信息。當允許邊界矩形堆放時，每次windows向設備場景繪圖，繪圖位置都與邊界矩形比較，若有必要就要擴展邊界矩形以包括繪圖位置。這提供了一種方法可確定設備場景的哪些部分已畫了
返回值
Long，調用本函數前的邊界設置： DCB_SET：邊界矩形不為空 DCB_RESET：邊界矩形為空 DCB_ENABLE：邊界矩形已被堆放 DCB_DISABLE：邊界矩形沒被堆放
參數表
參數 | 類型及說明
hdc | Long，邊界矩形對應的設備場景
lprcBounds | RECT，用於設置邊界矩形的矩形
flags | Long，標誌集合，可用下列常數組合而成
 | DCB_ACCUMULATE | 新的邊界矩形由當前邊界矩形和lprcBounds聯合而成
 | DCB_DISABLE | 關閉邊界堆放，該值為默認值
 | DCB_ENABLE | 打開邊界堆放
 | DCB_RESET | 清除原有邊界矩形，用DCB_ACCUMULATE設置新的邊界矩形為lprcBounds


SetGraphicsMode
VB聲明
Declare Function SetGraphicsMode Lib "gdi32" Alias "SetGraphicsMode" (ByVal hdc As Long, ByVal iMode As Long) As Long
說明
允許或禁止增強圖形模式，以提供某些支持（包括世界轉換）
返回值
Long，執行成功為原來的圖形模式，失敗為0
參數表
參數 | 類型及說明
hdc | Long，將為其設置模式的設備場景
iMode | Long，下列值之一： GM_COMPATIBLE：設置win16兼容模式 GM_ADVANCED：允許增強圖形模式，包括世界轉換
註解
只有Windows NT支持世界轉換 若您已進入增強圖形模式並已設置有世界轉換，則您在將圖形模式改回GM_COMPATIBLE之前，必須用SetWorldTransform或ModifyWorldTransform函數將世界轉換改回默認的特性轉換。關於特性轉換更多的信息參考ModifyWorldTransform


SetMapMode
VB聲明
Declare Function SetMapMode Lib "gdi32" Alias "SetMapMode" (ByVal hdc As Long, ByVal nMapMode As Long) As Long
說明
設置指定設備場景的映射模式
返回值
Long，執行成功為設備場景原來的映射模式，失敗為0
參數表
參數 | 類型及說明
hdc | Long，設備場景句柄
nMapMode | Long，下列常數之一：
 | MM_ANISOTROPIC | 視口和窗口範圍可完全任意
 | MM_HIENGLISH | 邏輯單元為0.001 inch，起點在左下角
 | MM_HIMETRIC | 邏輯單元為0.01 millimeter，起點在左下角
 | MM_ISOTROPIC | 視口和窗口範圍任意，只是x和y邏輯單元尺寸要相同
 | MM_LOENGLISH | 邏輯單元為0.01 inch，起點在左下角
 | MM_HIMETRIC | 邏輯單元為0.1 millimeter，起點在左下角
 | MM_TEXT | 邏輯單元為一個像素
 | MM_TWIPS | 邏輯單元為1 twip (1/1440 inch)，起點在左下角


設備場景類5

設備場景函數，共五頁。 第一頁 ， 第二頁 ， 第三頁 ， 第四頁 ，第五頁
SetRectRgn | 設置區域為指定的矩形
SetViewportExtEx | 設置設備場景視口範圍
SetViewportOrgEx | 設置設備場景視口起點
SetWindowExtEx | 設置指定設備場景窗口範圍
SetWindowOrgEx | 設置指定設備場景窗口起點
SetWindowRgn | 設置窗口區域
SetWorldTransform | 設置世界轉換
ValidateRgn | 激活窗口中指定區域，把它從刷新區移走
WindowFromDC | 取回與某一設備場景相關的窗口的句柄
完


SetRectRgn
VB聲明
Declare Function SetRectRgn Lib "gdi32" Alias "SetRectRgn" (ByVal hRgn As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
說明
設置區域為X1，Y1和X2，Y2描述的矩形
返回值
Long，執行成功為非零值，失敗為0
參數表
參數 | 類型及說明
hRgn | Long，該區域將被設置為指定矩形
X1,Y1 | Long，矩形左上角X，Y坐標
X2,Y2 | Long，矩形右下角X，Y坐標
註解
本函數與CreateRectRgn相同，只是它是設置一個已存在區域而不是創建一個新區域 矩形的底和右邊不包括在區域內


SetViewportExtEx
VB聲明
Declare Function SetViewportExtEx Lib "gdi32" Alias "SetViewportExtEx" (ByVal hdc As Long, ByVal nX As Long, ByVal nY As Long, lpSize As SIZE) As Long
說明
設置設備場景視口範圍
返回值
Long，執行成功為非零值，失敗為0
參數表
參數 | 類型及說明
hdc | Long，設備場景句柄
nX,nY | Long，視口水平和垂直範圍
lpSize | SIZE，裝載DC視口原來的水平和垂直範圍（以設備單元表示）的結構
註解
本函數只在MM_ISOTROPIC和MM_ANISOTROPIC映射模式下有效。在MM_ISOTROPIC模式下，設置視口範圍必須在窗口範圍之前


SetViewportOrgEx
VB聲明
Declare Function SetViewportOrgEx Lib "gdi32" Alias "SetViewportOrgEx" (ByVal hdc As Long, ByVal nX As Long, ByVal nY As Long, lpPoint As POINTAPI) As Long
說明
設置設備場景視口起點
返回值
Long，執行成功為非零值，失敗為0
參數表
參數 | 類型及說明
hdc | Long，設備場景句柄
nX,nY | Long，以設備坐標表示的視口起點
lpPoint | POINTAPI，裝載DC視口原來的起點的結構


SetWindowExtEx
VB聲明
Declare Function SetWindowExtEx Lib "gdi32" Alias "SetWindowExtEx" (ByVal hdc As Long, ByVal nX As Long, ByVal nY As Long, lpSize As SIZE) As Long
說明
設置指定設備場景窗口範圍
返回值
Long，執行成功為非零值，失敗為0
參數表
參數 | 類型及說明
hdc | Long，設備場景句柄
nX,nY | Long，窗口水平和垂直範圍
lpSize | SIZE，裝載設備場景原來的水平和垂直窗口範圍（以邏輯單元表示）的結構
註解
本函數只在MM_ISOTROPIC和MM_ANISOTROPIC映射模式下有效。在MM_ISOTROPIC模式下，設置視口範圍必須在窗口範圍之前


SetWindowOrgEx
VB聲明
Declare Function SetWindowOrgEx Lib "gdi32" Alias "SetWindowOrgEx" (ByVal hdc As Long, ByVal nX As Long, ByVal nY As Long, lpPoint As POINTAPI) As Long
說明
設置指定設備場景窗口起點
返回值
Long，執行成功為非零值，失敗為0
參數表
參數 | 類型及說明
hdc | Long，設備場景句柄
nX,nY | Long，以邏輯坐標表示的窗口起點
lpPoint | POINTAPI，裝載原來窗口起點的結構


SetWindowRgn
VB聲明
Declare Function SetWindowRgn Lib "user32" Alias "SetWindowRgn" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
說明
這是那些很難有人注意到的對編程者來說是個巨大的寶藏的隱含的API函數中的一個。本函數允許您改變窗口的區域。 通常所有窗口都是矩形的——窗口一旦存在就含有一個矩形區域。本函數允許您放棄該區域。這意味著您可以創建圓的、星形的窗口，也可以將它分為兩個或許多部分——實際上可以是任何形狀
返回值
Long，執行成功為非零值，失敗為0
參數表
參數 | 類型及說明
hWnd | Long，將設置其區域的窗口
hRgn | Long，將設置的區域的句柄，一旦設置了該區域，就不能使用或修改該區域句柄，也不要刪除它
bRedraw | Boolean，若為TRUE，則立即重畫窗口
註解
為區域指定的所有坐標都以窗口坐標（不是客戶坐標）表示，它們以整個窗口（包括標題欄和邊框）的左上角為起點


SetWorldTransform
VB聲明
Declare Function SetWorldTransform Lib "gdi32" Alias "SetWorldTransform" (ByVal hdc As Long, lpXform As xform) As Long
說明
設置世界轉換
返回值
Long，執行成功為非零值，失敗為0
參數表
參數 | 類型及說明
hdc | Long，設備場景
lpXform | xform，一個包含將用世界轉換的結構
註解
適用於Windows NT 在使用世界轉換前必須調用SetGraphicsMode函數設置圖形模式為GM_ADVANCED模式


ValidateRgn
VB聲明
Declare Function ValidateRgn Lib "user32" Alias "ValidateRgn" (ByVal hwnd As Long, ByVal hRgn As Long) As Long
說明
激活窗口中指定區域，把它從刷新區移走
返回值
Long，執行成功為非零值，失敗為0
參數表
參數 | 類型及說明
hwnd | Long，窗口句柄
hRgn | Long，定義要激活區的區域句柄，該區域以窗口客戶坐標表示


WindowFromDC
VB聲明
Declare Function WindowFromDC Lib "user32" Alias "WindowFromDC" (ByVal hdc As Long) As Long
說明
取回與某一設備場景相關的窗口的句柄
返回值
Long，執行成功為設備場景對應的窗口的句柄，失敗為0
參數表
參數 | 類型及說明
hdc | Long，設備場景句柄


繪圖類函數1

繪圖函數：共七頁。第一頁， 第二頁 ， 第三頁 ， 第四頁 ， 第五頁 ， 第六頁 ， 第七頁
AbortPath | 拋棄選入指定設備場景中的所有路徑。也取消目前正在進行的任何路徑的創建工作
AngleArc | 用一個連接弧畫一條線
Arc | 畫一個圓弧
BeginPath | 啟動一個路徑分支
CancelDC | 取消另一個線程裡的長時間繪圖操作
Chord | 畫一個弦
CloseEnhMetaFile | 關閉指定的增強型圖元文件設備場景，並將新建的圖元文件返回一個句柄
CloseFigure | 描繪到一個路徑時，關閉當前打開的圖形
CloseMetaFile | 關閉指定的圖元文件設備場景，並向新建的圖元文件返回一個句柄
CopyEnhMetaFile | 製作指定增強型圖元文件的一個副本（拷貝）
CopyMetaFile | 製作指定（標準）圖元文件的一個副本
CreateBrushIndirect | 在一個LOGBRUSH數據結構的基礎上創建一個刷子
CreateDIBPatternBrush | 用一幅與設備無關的位圖創建一個刷子，以便指定刷子樣式（圖案）
CreateEnhMetaFile | 創建一個增強型的圖元文件設備場景
CreateHatchBrush | 創建帶有陰影圖案的一個刷子
CreateMetaFile | 創建一個圖元文件設備場景


AbortPath
VB聲明
Declare Function AbortPath Lib "gdi32" Alias "AbortPath" (ByVal hdc As Long) As Long
說明
拋棄選入指定設備場景中的所有路徑。也取消目前正在進行的任何路徑的創建工作
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景


AngleArc
VB聲明
Declare Function AngleArc Lib "gdi32" Alias "AngleArc" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal dwRadius As Long, ByVal eStartAngle As Double, ByVal eSweepAngle As Double) As Long
說明
用一個連接弧畫一條線，參考註解
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hdc | Long，要在其中作圖的設備場景
x,y | Long，對弧進行描述的一個圓的中心點坐標
dwRadius | Long，圓的半徑
eStartAngle | Double，線同圓連接時的角度（以度數為單位）
eSweepAngle | Double，弧在圓上佔據的範圍（以度數為單位）
註解
AngleArc.gif (1417 字節) | 注意eStartAngle和eSweepAngle參數是以度數為單位指定的，而且應該是單精度數（Single）而不是雙精度。相應的函數聲明為：Declare Function AngleArc& Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal dwRadius As Long, ByVal eStartAngle As Single, ByVal eSweepAngle As Single)。 我的理解：本文開頭的函數聲明複製於vb的api文本查看器，此處的聲明來自於我的參考資料，也不知誰對誰錯。參數表的說明，按vb的api文本查看器中複製來的聲明中的數據類型。請使用者注意


Arc

Arc,ArcTo
VB聲明
Declare Function Arc& Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) Declare Function ArcTo& Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long)
說明
象註解中那樣畫一個圓弧。（X1,Y1）和（X2,Y2）定義了橢圓的一個範圍（約束）矩形。從矩形中心點到點（X3,Y3）的一條線段與橢圓的交點標誌著圓弧的起點。而到（X4,Y4）的一條線與橢圓的交點則標誌著圓弧的終點。ArcTo函數會將當前畫筆位置設為弧的終點，而Arc函數則不會對當前的畫筆位置造成影響
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hdc | Long，一個顯示場景的句柄
X1,Y1 | Long，指定圍繞橢圓的一個矩形的左上角位置
X2,Y2 | Long，指定圍繞橢圓的一個矩形的右下角位置
X3,Y3 | Long，指定圓弧起點
X4,Y4 | Long，指定圓弧終點
註解
Arc.gif (3069 字節) | 在win16和win95中，約束矩形的寬度和高度必須在3——32766間。繪圖方向肯定是逆時針方向。 在win nt中：繪圖方向由SetArcDirection函數決定。默認為逆時針方向
 | arc1.gif (674 字節)


BeginPath
VB聲明
Declare Function BeginPath Lib "gdi32" Alias "BeginPath" (ByVal hdc As Long) As Long
說明
啟動一個路徑分支。在這個命令後執行的GDI繪圖命令會自動成為路徑的一部分。對線段的連接會結合到一起。設備場景中任何現成的路徑都會被清除。參考下表，其中列出的函數都可記錄到路徑中
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，欲在其中記錄的設備場景
合法的路徑函數
函數 | Windows NT | Windows 95 | 函數 | Windows NT | Windows 95
AngleArc | Yes | No | Arc | Yes | No
ArcTo | Yes | No | Chord | Yes | No
Ellipse | Yes | No | ExtTextOut | Yes | Yes
LineTo | Yes | Yes | MoveToEx | Yes | Yes
Pie | Yes | No | PolyBezier | Yes | Yes
PolyBezierTo | Yes | Yes | PolyDraw | Yes | No
Polygon | Yes | Yes | Polyline | Yes | Yes
PolylineTo | Yes | Yes | PolyPolygon | Yes | Yes
PolyPolyline | Yes | Yes | Rectangle | Yes | No
RoundRect | Yes | No | TextOut | Yes | Yes


CancelDC
VB聲明
Declare Function CancelDC Lib "gdi32" Alias "CancelDC" (ByVal hdc As Long) As Long
說明
取消另一個線程裡的長時間繪圖操作
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hdc | Long，要在其中取消繪圖操作的設備場景
註解
繪圖操作有時可能會相當花時間。在多線程應用程序中，這個命令允許一個線程終止另一個在線程裡的繪圖操作


Chord
VB聲明
Declare Function Chord Lib "gdi32" Alias "Chord" (ByVal As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) As Long
說明
象註解中那樣畫一個弦。（X1,Y1）和（X2,Y2）定義了橢圓的一個範圍（約束）矩形。點（X3,Y3）和點（X4,Y4）定義了一條線段。該線段與橢圓之間的區域就是「弦」
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，一個顯示場景的句柄
X1,Y1 | Long，指定圍繞橢圓的一個矩形的左上角位置
X2,Y2 | Long，指定圍繞橢圓的一個矩形的右下角位置
X3,Y3 | Long，指定與橢圓相交的一條線的一個點
X4,Y4 | Long，指定與橢圓相交的一條線的另一個點
註解
Chord.gif (1010 字節) | 在win16和win95中，約束矩形的寬度和高度必須在3——32766個單位之間。請參考Arc獲得更詳細的圖例


CloseEnhMetaFile
VB聲明
Declare Function CloseEnhMetaFile Lib "gdi32" Alias "CloseEnhMetaFile" (ByVal hdc As ) As Long
說明
關閉指定的增強型圖元文件設備場景，並將新建的圖元文件返回一個句柄
返回值
Long，指向增強型圖元文件的一個句柄。也許能用PlayEnhMetaFile函數回放圖元文件。零表示出錯（原文：A handle to the enhanced metafile. The PlayEnhMetaFile function may be used to play the metafile. Zero on error.）
參數表
參數 | 類型及說明
hdc | Long，由CreateEnhMetaFile函數返回的一個圖元文件設備場景


CloseFigure
VB聲明
Declare Function CloseFigure Lib "gdi32" Alias "CloseFigure" (ByVal hdc As Long) As Long
說明
描繪到一個路徑時，關閉當前打開的圖形
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，包含了一個打開的Path分支的設備場景
註解
如準備在一個路徑裡描繪一系列線段，就會有一個打開的圖形。調用這個函數的時候，windows會在當前位置和圖形的起始處（通常是最後一個MoveToEx操作設置畫筆位置的地方）畫一條線。圖中的這條線和第一條線會連接到一起。注意倘若自己描繪這條線，圖形仍會處於打開狀態——即使起點與終點相同。這樣便造成了與幾何畫筆的差異。利用CloseFigure，線段會連接到一起——否則它們會用筆尖顯示出來。一旦關閉了圖形，在路徑中畫的下一條線就會從一幅新圖形開始。打開的圖形會被那些用於填充路徑的函數自動關閉


CloseMetaFile
VB聲明
Declare Function CloseMetaFile Lib "gdi32" Alias "CloseMetaFile" (ByVal hMF As Long) As Long
說明
關閉指定的圖元文件設備場景，並向新建的圖元文件返回一個句柄
返回值
Long，指向圖元文件的一個句柄。也許能用PlayMetaFile回放圖元文件。零表示出錯
參數表
參數 | 類型及說明
hMF | Long，由CreateMetaFile函數返回的一個圖元文件設備場景
註解
圖元文件不再需要後，一定要用DeleteMetaFile函數刪除圖元文件，並釋放它的資源


CopyEnhMetaFile
VB聲明
Declare Function CopyEnhMetaFile Lib "gdi32" Alias "CopyEnhMetaFileA" (ByVal hemfSrc As Long, ByVal lpszFile As String) As Long
說明
製作指定增強型圖元文件的一個副本（拷貝）
返回值
Long，如執行成功，返回副本的句柄。零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hemfSrc | Long，欲複製的增強型圖元文件的句柄
lpszFile | String，副本的文件名（要在磁盤上創建一個新的圖元文件）。可用vbNullString向這個參數傳遞一個NULL值，以便在內存中創建副本


CopyMetaFile
VB聲明
Declare Function CopyMetaFile Lib "gdi32" Alias "CopyMetaFileA" (ByVal hMF As Long, ByVal lpFileName As String) As Long
說明
製作指定（標準）圖元文件的一個副本
返回值
Long，如執行成功，則返回副本的句柄。零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hMF | Long，指向欲複製的圖元文件的句柄
lpFileName | String，新圖元文件的文件名。可用vbNullString向這個參數傳遞一個NULL值，以便在內存中創建副本


CreateBrushIndirect
VB聲明
Declare Function CreateBrushIndirect Lib "gdi32" Alias "CreateBrushIndirect" (lpLogBrush As LOGBRUSH) As Long
說明
在一個LOGBRUSH數據結構的基礎上創建一個刷子
返回值
Long，如執行成功，返回指向新刷子的一個句柄。零表示失敗
參數表
參數 | 類型及說明
lpLogBrush | LOGBRUSH
註解
如不再需要，請用DeleteObject函數刪除刷子。也請參考CreateBrush函數，它的參數與LOGBRUSH結構的字段是對應的


CreateDIBPatternBrush

CreateDIBPatternBrush,CreateDIBPatternBrushPt
VB聲明
Declare Function CreateDIBPatternBrush& Lib "gdi32" (ByVal hPackedDIB As Long, ByVal wUsage As Long) Declare Function CreateDIBPatternBrushPt& Lib "gdi32" (lpPackedDIB As Any, ByVal wUsage As Long)
說明
用一幅與設備無關的位圖創建一個刷子，以便指定刷子樣式（圖案）
返回值
Long，如執行成功，返回指向刷子的一個句柄。零表示失敗
參數表
參數 | 類型及說明
hPackedDIB,lpPackedDIB | Long，hPackedDIB是指向一個內存塊的全局內存句柄。那個內存塊包含了一個BITMAPINFO結構，後面跟隨一幅與設備無關的位圖。lpPackedDIB是具有相同配置的一個內存塊的地址。如指定了單色DIB，DIB顏色就會忽略，而換用文本和背景顏色
wUsage | Long，下述常數之一：
 | DIB_PAL_COLORS | DIB顏色表，包含了當前邏輯調色板的索引
 | DIB_RGB_COLORS | DIB顏色表，包含了32位的RGB色值
註解
編製win32應用程序的時候，最好使用CreateDIBPatternBrushPt


CreateEnhMetaFile
VB聲明
Declare Function CreateEnhMetaFile Lib "gdi32" Alias "CreateEnhMetaFileA" (ByVal hdcRef As Long, ByVal lpFileName As String, lpRect As RECT, ByVal lpDescription As String) As Long
說明
創建一個增強型的圖元文件設備場景。繪圖操作也許在這個設備場景中執行。調用CloseEnhMetaFile函數關閉了這個設備場景後，會創建一個圖元文件句柄，在其中包含記錄下來的繪圖命令序列。隨後，可在任何設備場景中回放這些命令
返回值
Long，一個增強型圖元文件設備場景。零表示函數執行出錯。不要將這個設備場景與圖元文件句柄混淆起來。圖元文件設備場景用於描繪圖元文件——這與GDI繪圖函數作為參數使用的其他任何設備場景是一樣的。調用CloseEnhMetaFile函數的時候，會獲得實際的圖元文件句柄
參數表
參數 | 類型及說明
hdcRef | Long，一個參考設備場景。函數會用該設備場景在圖元文件中保存與創建圖元文件的那個設備的分辨率有關的信息。如設為零，表示將整個顯示器（屏幕）作為參考設備使用
lpFileName | String，這個圖元文件的磁盤文件名。文件應有一個.EMF擴展名。可用vbNullString傳遞一個NULL，從而創建內存圖元文件
lpRect | RECT，一個約束矩形，用於描述圖元文件的大小和位置（以0.01毫米為單位）。可用它精確定義圖元文件的物理尺寸
lpDescription | String，對圖元文件的一段說明。包括創建應用程序的名字、一個NULL字符、對圖元文件的一段說明以及兩個NULL字符。如："My app" & chr$(0) & "my metafile" & chr$(0) & chr$(0)。如果不願意包含一段說明，也可設為vbNullString
註解
與標準圖元文件相比，增強型圖元文件的一個優點在於它們包括了對圖元文件實際大小和位置進行描述的信息，這些信息與它最開始創建時的情況相符。windows和繪圖程序可讀取這種信息，在任何設備上實際重現圖元文件


CreateHatchBrush
VB聲明
Declare Function CreateHatchBrush Lib "gdi32" Alias "CreateHatchBrush" (ByVal nIndex As Long, ByVal crColor As Long) As Long
說明
創建帶有陰影圖案的一個刷子（陰影圖案見註解）
返回值
Long，如執行成功，返回指向新刷子的一個句柄。否則返回零。注意在不需要時，用DeleteObject清除刷子
參數表
參數 | 類型及說明
nIndex | Long，像下圖那樣指定一種陰影類型
crColor | Long，指定刷子的RGB前景色
註解
CreateHatchBrush.gif (3416 字節)


CreateMetaFile
VB聲明
Declare Function CreateMetaFile Lib "gdi32" Alias "CreateMetaFileA" (ByVal lpString As String) As Long
說明
創建一個圖元文件設備場景。繪圖操作也許能在這個設備中執行。調用CloseMetaFile函數關閉了這個設備場景後，會創建一個圖元文件句柄，其中包含了記錄下來的繪圖命令序列。隨後，可在任何設備場景中回放這些命令
返回值
Long，指向圖元文件設備場景的一個句柄。零表示出錯。注意不要把這個設備場景與圖元文件句柄混淆起來。圖元文件設備場景用於描繪圖元文件——它的用法與GDI繪圖函數作為參數使用的其他任何設備場景都是一樣的。以後調用了CloseMetaFile函數以後，會得到實際的圖元文件句柄
參數表
參數 | 類型及說明
lpString | String，欲用來容納圖元文件的文件名。用vbNullString可傳遞一個零值，從而創建一個內存句柄
註解
儘管這個函數能創建基於磁盤的圖元文件，但這些圖元文件並非通常在windows下使用的標準「可放置」圖元文件格式


繪圖類函數2

繪圖函數：共七頁。 第一頁 ，第二頁， 第三頁 ， 第四頁 ， 第五頁 ， 第六頁 ， 第七頁
CreatePatternBrush | 用指定了刷子圖案的一幅位圖創建一個刷子
CreatePen | 用指定的樣式、寬度和顏色創建一個畫筆
CreatePenIndirect | 根據指定的LOGPEN結構創建一個畫筆
CreateSolidBrush | 用純色創建一個刷子
DeleteEnhMetaFile | 刪除指定的增強型圖元文件
DeleteMetaFile | 刪除指定的圖元文件
DeleteObject | 刪除GDI對像，對像使用的所有系統資源都會被釋放
DrawEdge | 用指定的樣式描繪一個矩形的邊框
DrawEscape | 換碼（Escape）函數將數據直接發至顯示設備驅動程序
DrawFocusRect | 畫一個焦點矩形
DrawFrameControl | 描繪一個標準控件
DrawState | 為一幅圖像或繪圖操作應用各式各樣的效果
Ellipse | 描繪一個橢圓，由指定的矩形圍繞
EndPath | 停止定義一個路徑
EnumEnhMetaFile | 針對一個增強型圖元文件，列舉其中單獨的圖元文件記錄
EnumMetaFile | 為一個標準的windows圖元文件枚舉單獨的圖元文件記錄


CreatePatternBrush
VB聲明
Declare Function CreatePatternBrush Lib "gdi32" Alias "CreatePatternBrush" (ByVal hBitmap As Long) As Long
說明
用指定了刷子圖案的一幅位圖創建一個刷子
返回值
Long，如執行成功，則返回新刷子的一個句柄；否則返回零
參數表
參數 | 類型及說明
hBitmap | Long，指向一幅位圖的句柄。如指定了單色位圖，文本和背景色就會在圖案中使用
註解
一旦刷子不再需要，記得用DeleteObject函數將其刪除。不要在這個函數里使用作為DIB分區創建的位圖


CreatePen
VB聲明
Declare Function CreatePen Lib "gdi32" Alias "CreatePen" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
說明
用指定的樣式、寬度和顏色創建一個畫筆
返回值
Long，如函數執行成功，就返回指向新畫筆的一個句柄；否則返回零
參數表
參數 | 類型及說明
nPenStyle | Long，指定畫筆樣式，可以是下述常數之一
 | PS_SOLID | 畫筆畫出的是實線
 | PS_DASH | 畫筆畫出的是虛線（nWidth必須是1）
 | PS_DOT | 畫筆畫出的是點線（nWidth必須是1）
 | PS_DASHDOT | 畫筆畫出的是點劃線（nWidth必須是1）
 | PS_DASHDOTDOT | 畫筆畫出的是點-點-劃線（nWidth必須是1）
 | PS_NULL | 畫筆不能畫圖
 | PS_INSIDEFRAME | 畫筆在由橢圓、矩形、圓角矩形、餅圖以及弦等生成的封閉對像框中畫圖。如指定的準確RGB顏色不存在，就進行抖動處理
nWidth | Long，以邏輯單位表示的畫筆的寬度
crColor | Long，畫筆的RGB顏色
註解
一旦不再需要畫筆，記得用DeleteObject函數將其刪除


CreatePenIndirect
VB聲明
Declare Function CreatePenIndirect Lib "gdi32" Alias "CreatePenIndirect" (lpLogPen As LOGPEN) As Long
說明
根據指定的LOGPEN結構創建一個畫筆
返回值
Long，如執行成功，返回指向新畫筆的一個句柄；否則返回零
參數表
參數 | 類型及說明
lpLogPen | LOGPEN，邏輯畫筆結構。這個結構與CreatePen函數的參數非常接近
註解
一旦不再需要畫筆，記得用DeleteObject函數將其刪除


CreateSolidBrush
VB聲明
Declare Function CreateSolidBrush Lib "gdi32" Alias "CreateSolidBrush" (ByVal crColor As Long) As Long
說明
用純色創建一個刷子
返回值
Long，如執行成功，返回新刷子的一個句柄；否則返回零
參數表
參數 | 類型及說明
crColor | Long，數字的RGB彩色
註解
一旦刷子不再需要，就用DeleteObject函數將其刪除


DeleteEnhMetaFile
VB聲明
Declare Function DeleteEnhMetaFile Lib "gdi32" Alias "DeleteEnhMetaFile" (ByVal hemf As Long) As Long
說明
刪除指定的增強型圖元文件
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hemf | Long，增強型圖元文件的句柄
註解
如圖元文件是建立在一個磁盤文件基礎上的，那麼文件本身就不會由函數刪除。這樣有可能由GetEnhMetaFile函數再次將其打開


DeleteMetaFile
VB聲明
Declare Function DeleteMetaFile Lib "gdi32" Alias "DeleteMetaFile" (ByVal hMF As Long) As Long
說明
刪除指定的圖元文件
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hMF | Long，圖元文件的句柄
註解
如圖元文件是建立在一個磁盤文件基礎上的，那麼文件本身就不會由函數刪除。這樣有可能造成由GetEnhMetaFile函數再次將其打開。然而，這個圖元文件並不採用標準可放置圖元文件格式


DeleteObject
VB聲明
Declare Function DeleteObject Lib "gdi32" Alias "DeleteObject" (ByVal hObject As Long) As Long
說明
用這個函數刪除GDI對像，比如畫筆、刷子、字體、位圖、區域以及調色板等等。對像使用的所有系統資源都會被釋放
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hObject | Long，一個GDI對象的句柄
註解
不要刪除一個已選入設備場景的畫筆、刷子或位圖。如刪除以位圖為基礎的陰影（圖案）刷子，位圖不會由這個函數刪除——只有刷子被刪掉


DrawEdge
VB聲明
Declare Function DrawEdge Lib "user32" Alias "DrawEdge" (ByVal hdc As Long, qrc As RECT, ByVal edge As Long, ByVal grfFlags As Long) As Long
說明
用指定的樣式描繪一個矩形的邊框
返回值
Long，TRUE（非零）表示成功，否則返回零。會設置GetLastError。（在vb裡使用：推薦使用。利用這個函數，我們沒有必要再使用許多3D邊框和面板。所以就資源和內存的佔用率來說，這個函數的效率要高得多。它可在一定程度上提升性能）
參數表
參數 | 類型及說明
hdc | Long，要在其中繪圖的設備場景
qrc | RECT，要為其描繪邊框的矩形
edge | Long，帶有前綴BDR_的兩個常數的組合。一個指定內部邊框是上凸還是下凹；另一個則指定外部邊框。有時能換用帶EDGE_前綴的常數。
grfFlags | Long，帶有BF_前綴的常數的組合
註解
由於這是一個GDI函數，所以矩形坐標是邏輯坐標


DrawEscape
VB聲明
Declare Function DrawEscape Lib "gdi32" Alias "DrawEscape" (ByVal hdc As Long, ByVal nEscape As Long, ByVal cbInput As Long, ByVal lpszInData As String) As Long
說明
換碼（Escape）函數將數據直接發至顯示設備驅動程序（在vb裡使用：能夠使用。但由於Escape對設備有較強的依賴性，所以除非萬不得以，盡量不要用它）
返回值
Long，非零表示成功，零表示錯誤（QUERYESCSUPPORT換碼例外；返回TRUE表示支持特定的換碼；否則返回零）
參數表
參數 | 類型及說明
hdc | Long，顯示設備的設備場景
nEscape | Long，指定欲執行的換碼的一個常數
cbInput | Long，輸入緩衝區的長度
lpszInData | String，輸入字串或緩衝區
註解
可用QUERYESCSUPPORT換碼判斷一個特定的換碼是否得到當前顯示驅動程序的支持


DrawFocusRect
VB聲明
Declare Function DrawFocusRect Lib "user32" Alias "DrawFocusRect" (ByVal hdc As Long, lpRect As RECT) As Long
說明
畫一個焦點矩形。這個矩形是在標誌焦點的樣式中通過異或運算完成的（焦點通常用一個點線表示）。如用同樣的參數再次調用這個函數，就表示刪除焦點矩形
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
lpRect | RECT，要在邏輯坐標中描繪的矩形


DrawFrameControl
VB聲明
Declare Function DrawFrameControl Lib "user32" Alias "DrawFrameControl" (ByVal hDC As Long, lpRect As RECT, ByVal un1 As Long, ByVal un2 As Long) As Long
說明
這個函數用於描繪一個標準控件。例如，可描繪一個按鈕或滾動條的幀（原文：This function draws a standard control. For example, you can draw the frame of a button or scrollbar.）
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hDC | Long，要在其中作畫的設備場景
lpRect | RECT，指定幀的位置及大小的一個矩形
un1 | Long，指定幀類型的一個常數。這些常數包括DFC_BUTTON，DFC_CAPTION，DFC_MENU，以及DFC_SCROLL
un2 | Long，一個常數，指定欲描繪的幀的狀態。由帶有前綴DFCS_的一個常數構成


DrawState
VB聲明
Declare Function DrawState Lib "user32" Alias "DrawStateA" (ByVal hDC As Long, ByVal hBrush As Long, ByVal lpDrawStateProc As Long, ByVal lParam As Long, ByVal wParam As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal n3 As Long, ByVal n4 As Long, ByVal un As Long) As Long
說明
這個函數可為一幅圖像或繪圖操作應用各式各樣的效果
返回值
Long，TRUE（非零）表示成功，FALSE表示失敗
參數表
參數 | 類型及說明
hDC | Long，要在其中繪圖的設備場景
hBrush | Long，如狀態為DSS_MONO（在un參數中設定），則指定一個刷子句柄
lpDrawStateProc | Long，指向一個函數地址的指針。如圖像類型為DST_COMPLEX，必須設置這個參數。對於DST_TEXT，則可設可不設
lParam | Long，由圖像的類型決定
wParam | Long，由圖像的類型決定
n1 | Long，圖像的水平位置
n2 | Long，圖像的垂直位置
n3 | Long，圖像的寬度。如圖像類型為DST_COMPLEX，必須設置這個參數。而對於其他類型，則可以設為零。如為零，表示該參數在圖像的基礎上計算
n4 | Long，圖像的高度。如圖像類型為DST_COMPLEX，必須設置這個參數。而對於其他類型，則可以設為零。如為零，表示該參數在圖像的基礎上計算
un | Long，圖像類型和狀態的一個組合。參見下表
 | 圖像類型
 | DST_BITMAP | lParam中的句柄
 | DST_COMPLEX | 繪圖在由lpDrawStateProc參數指定的回調函數期間執行。lParam和wParam會傳遞給回調事件
 | DST_ICON | lParam包括圖標句柄
 | DST_TEXT | lParam代表文字的地址（可使用一個字串別名），wParam代表字串的長度
 | DST_PREFIXTEXT | 與DST_TEXT類似，只是 & 字符指出為下各字符加上下劃線
 | 圖像狀態常數
 | DSS_NORMAL | 普通圖像
 | DSS_UNION | 圖像進行抖動處理
 | DSS_DISABLED | 圖像具有浮雕效果
 | DSS_MONO | 用hBrush描繪圖像
 | DSS_RIGHT | 手冊未正式說明——經實驗證明沒有什麼作用（原文：Undocumented-experimentation seems to show no effect.）
註解
windows95用它獲得我們應用於圖像的一些視覺效果；例如，可使位圖或其他圖像在視覺上進入禁用或抖動狀態。對於位圖和圖標，它在描繪位圖或圖標的時候應用一種效果。對於文本，既可讓函數畫出文本，也可在一個回調函數中執行自己的繪圖操作。對於複雜的（用戶自定義）圖像，則必須用一個回調函數。在回調函數執行過程中，用自己的代碼將自己希望的任何東西畫入設備場景。在這之後，利用DrawState函數應用希望的效果


Ellipse
VB聲明
Declare Function Ellipse Lib "gdi32" Alias "Ellipse" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
說明
描繪一個橢圓，由指定的矩形圍繞。橢圓用當前選擇的畫筆描繪，並用當前選擇的刷子填充
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
X1，Y1 | Long，約束矩形採用邏輯坐標的左上角位置
X2，Y2 | Long，約束矩形採用邏輯坐標的右下角位置


EndPath
VB聲明
Declare Function EndPath Lib "gdi32" Alias "EndPath" (ByVal hdc As Long) As Long
說明
停止定義一個路徑。如執行成功，BeginPath函數調用和這個函數之間發生的所有繪圖操作都會正式成為指定設備場景的路徑
返回值
Long，非零表示成功，零表示失敗。會將GetLastError設置為下述值之一：ERROR_CAN_NOT_COMPLETE 或 ERROR_INVALID_PARAMETER
參數表
參數 | 類型及說明
hdc | Long，設備場景


EnumEnhMetaFile
VB聲明
Declare Function EnumEnhMetaFile Lib "gdi32" Alias "EnumEnhMetaFile" (ByVal hdc As Long, ByVal hemf As Long, ByVal lpEnhMetaFunc As Long, lpData As Any, lpRect As RECT) As Long
說明
針對一個增強型圖元文件，列舉其中單獨的圖元文件記錄。每條圖元文件記錄都由單個GDI命令組成。可伴隨PlayEnhMetaFileRecord函數使用，選擇性的回放圖元文件的一部分
返回值
Long，如圖元文件的所有記錄都列舉出來，就返回TRUE（非零）；否則返回零
參數表
參數 | 類型及說明
hdc | Long，用於輸出的設備場景的句柄。只有在用回調函數進行繪圖操作的時候，才要求設置這個參數
hemf | Long，欲列舉的一個增強型圖元文件的句柄
lpEnhMetaFunc | Long，指向為每個圖元文件調用的一個函數的指針
lpData | 用戶自定義的值
lpRect | RECT，定義圖元文件邊框的一個矩形


EnumMetaFile
VB聲明
Declare Function EnumMetaFile Lib "gdi32" Alias "EnumMetaFile" (ByVal hDC As Long, ByVal hMetafile As Long, ByVal lpMFEnumProc As Long, ByVal lParam As Long) As Long
說明
為一個標準的windows圖元文件枚舉單獨的圖元文件記錄。每條圖元文件記錄都包含了單個GDI繪圖命令。可與PlayMetaFileRecord函數聯合使用，選擇性的回放圖元文件的某一部分
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hDC | Long，用於輸出的設備場景的句柄。只有在用回調函數進行繪圖操作的時候，才要求設置這個參數
hMetafile | Long，欲列舉的一個標準圖元文件的句柄
lpMFEnumProc | Long，指向為每個圖元文件調用的一個函數的指針
lParam | Long，用戶自定義的值


繪圖類函數3

繪圖函數：共七頁。 第一頁 ， 第二頁 ，第三頁， 第四頁 ， 第五頁 ， 第六頁 ， 第七頁
EnumObjects | 枚舉可隨同指定設備場景使用的畫筆和刷子
ExtCreatePen | 創建一個擴展畫筆（裝飾或幾何）
ExtFloodFill | 在指定的設備場景裡，用當前選擇的刷子填充一個區域
FillPath | 關閉路徑中任何打開的圖形，並用當前刷子填充
FillRect | 用指定的刷子填充一個矩形
FlattenPath | 將一個路徑中的所有曲線都轉換成線段
FloodFill | 用當前選定的刷子在指定的設備場景中填充一個區域
FrameRect | 用指定的刷子圍繞一個矩形畫一個邊框
GdiComment | 為指定的增強型圖元文件設備場景添加一條註釋信息
GdiFlush | 執行任何未決的繪圖操作
GdiGetBatchLimit | 判斷有多少個GDI繪圖命令位於隊列中
GdiSetBatchLimit | 指定有多少個GDI繪圖命令能夠進入隊列
GetArcDirection | 畫圓弧的時候，判斷當前採用的繪圖方向
GetBkColor | 取得指定設備場景當前的背景顏色
GetBkMode | 針對指定的設備場景，取得當前的背景填充模式
GetBrushOrgEx | 判斷指定設備場景中當前選定刷子起點


EnumObjects
VB聲明
Declare Function EnumObjects Lib "gdi32" Alias "EnumObjects" (ByVal hDC As Long, ByVal n As Long, ByVal lpGOBJEnumProc As Long, lpVoid As Any) As Long
說明
枚舉可隨同指定設備場景使用的畫筆和刷子
返回值
Long，如函數要枚舉的對象太多，就返回-1。否則由用戶自己定義
參數表
參數 | 類型及說明
hDC | Long，設備場景的句柄
n | Long，欲枚舉的對象的類型。請查找帶OBJ_前綴的常數，這樣可得到一個對像列表。win32手冊建議只使用OBJ_PEN和OBJ_BRUSH兩個常數
lpGOBJEnumProc | Long，指向為每個GDI對像調用的指針
lpVoid | 枚舉過程中傳遞給回調函數的值


ExtCreatePen
VB聲明
Declare Function ExtCreatePen Lib "gdi32" Alias "ExtCreatePen" (ByVal dwPenStyle As Long, ByVal dwWidth As Long, lplb As LOGBRUSH, ByVal dwStyleCount As Long, lpStyle As Long) As Long
說明
創建一個擴展畫筆（裝飾或幾何）
返回值
Long，如執行成功，返回一個指向擴展畫筆的句柄。零表示執行出錯。一旦不再需要，記得用DeleteObject將畫筆刪除
參數表
參數 | 類型及說明
dwPenStyle | Long，畫筆樣式來自下述常數組的任何一個常數的組合（OR運算）：
 | PS_COSMETIC or PS_GEOMETRIC | 畫筆的類型
 | PS_ALTERNATE, PS_SOLID, PS_DASH, PS_DOT, PS_DASHDOT, PS_DASHDOTDOT, PS_NULL, PS_USERSTYLE, PS_INSIDEFRAME | 畫筆的樣式
 | PS_ENDCAP_??? | 畫筆的筆尖
 | PS_JOIN_??? | 在圖形中連接線段或在路徑中連接直線的方式
dwWidth | Long，指定線寬。幾何畫筆的線寬肯定是1
lplb | LOGBRUSH，lbColor代表畫筆顏色。對於裝飾畫筆，lbStyle為PS_SOLID；對於幾何畫筆，lbStyle則代表實際的樣式。針對幾何畫筆，必須設置其他所有字體
dwStyleCount | Long，如指定了PS_USERSTYLE，則代表lpStyle數組中的條目數量
lpStyle | Long，指定PS_USERSTYLE的「線段/空白」對（原文：Line/space pairs for PS_USERSTYLE）


ExtFloodFill
VB聲明
Declare Function ExtFloodFill Lib "gdi32" Alias "ExtFloodFill" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long, ByVal wFillType As Long) As Long
說明
在指定的設備場景裡，用當前選擇的刷子填充一個區域
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
x,y | Long，開始填充的一個點，採用邏輯坐標表示
crColor | Long，要使用的邊界顏色
wFillType | Long，欲執行的填充類型，由下述任何一個常數決定
 | FLOODFILLBORDER | 等同於FloodFill函數的功能
 | FLOODFILLSURFACE | 從指定的點向外填充，只到找到了crColor顏色（在邊框採用了多種顏色時使用）
註解
如指定了FLOODFILLBORDER，那麼x,y點絕對不能為crColor顏色。如指定了FLOODFILLSURFACE，那麼x,y點必須是crColor顏色。這個函數只能在光柵設備中使用。可用GetDeviceCaps函數判斷設備是否支持這個函數
提示
一旦指定了FLOODFILLBORDER，務必保證初始點的顏色沒有crColor。如果使用的是FLOODFILLSURFACE，務必保證初始點有顏色crColor（這是函數執行失敗最常見的兩個原因）。注意保證初始點位於剪切區內


FillPath
VB聲明
Declare Function FillPath Lib "gdi32" Alias "FillPath" (ByVal hdc As Long) As Long
說明
關閉路徑中任何打開的圖形，並用當前刷子填充
返回值
Long，非零表示成功，零表示失敗。會將GetLastError設置為下述值之一：ERROR_CAN_NOT_COMPLETE，ERROR_INVALID_PARAMETER，ERROR_NOT_ENOUGH_MEMORY
參數表
hdc Long，欲在其中操作的設備場景
註解

函數執行完畢後，選定的路徑會自行清除


FillRect
VB聲明
Declare Function FillRect Lib "user32" Alias "FillRect" (ByVal hdc As Long, lpRect As RECT, ByVal hBrush As Long) As Long
說明
用指定的刷子填充一個矩形
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
lpRect | RECT，對填充區域進行描述的一個矩形，採用邏輯坐標
hBrush | Long，欲使用的刷子的句柄
註解
矩形的右邊和底邊不會描繪


FlattenPath
VB聲明
Declare Function FlattenPath Lib "gdi32" Alias "FlattenPath" (ByVal hdc As Long) As Long
說明
將一個路徑中的所有曲線都轉換成線段
返回值
Long，非零表示成功，零表示失敗。會將GetLastError設置為下述值之一：ERROR_CAN_NOT_COMPLETE，ERROR_INVALID_PARAMETER，ERROR_NOT_ENOUGH_MEMORY
參數表
參數 | 類型及說明
hdc | Long，包含了路徑的設備場景


FloodFill
VB聲明
Declare Function FloodFill Lib "gdi32" Alias "FloodFill" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
說明
用當前選定的刷子在指定的設備場景中填充一個區域。區域是由顏色crColor定義的
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
x,y | Long，開始填充的那個點，用邏輯坐標表示
crColor | Long，欲使用的邊界顏色。由這個顏色包圍的表面會被填充
註解
點x,y絕對不能有顏色crColor，而且必須在剪切區域內。這個函數只對光柵設備有效，請參考ExtFloodFill的註解


FrameRect
VB聲明
Declare Function FrameRect Lib "user32" Alias "FrameRect" (ByVal hdc As Long, lpRect As RECT, ByVal hBrush As Long) As Long
說明
用指定的刷子圍繞一個矩形畫一個邊框（組成一個幀），邊框的寬度是一個邏輯單位
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
lpRect | RECT，對要描繪的邊框進行描述的一個矩形。這等效於將畫筆設成一個單位的寬度，然後用矩形函數畫出一個矩形
hBrush | Long，欲使用的刷子的句柄
註解
lpRect的頂部邊距值必須小於底部邊距值。lpRect的左側邊距值必須小於右側邊距值


GdiComment
VB聲明
Declare Function GdiComment Lib "gdi32" Alias "GdiComment" (ByVal hdc As Long, ByVal cbSize As Long, lpData As Byte) As Long
說明
為指定的增強型圖元文件設備場景添加一條註釋信息
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hdc | Long，目標增強型圖元文件設備場景的句柄
cbSize | Long，欲嵌入圖元文件的數據長度
lpData | Byte，一個註釋結構或一個緩衝區的Long內存地址，其中包含了欲添加的註釋正文
註解
儘管可在圖元文件中嵌入任何專用或私有（Private）信息，但只有幾種全局數據格式能夠嵌入。如將緩衝區看作一個32位Long型值的數組，則全局註釋的值就是下面這個樣子： 第一個條目是常數GDICOMMENT_IDENTIFIER 第二個條目如下所示： 首先是一個GDICOMMENT_WINDOWS_METAFILE——在增強型圖元文件中嵌入一個標準圖元文件。它的後面跟隨下述值之一： □ 標準圖元文件的版本號 □ 一個校驗和（checksum）值：所有圖元文件數據的總和——包括這個值——必須是零 □ 零 □ 後面跟隨的窗口圖元文件的大小 GDICOMMENT_BEGINGROUP——標誌一組繪圖命令在增強型圖元文件在中的起始處。它的後面跟隨： □ 四個Long值。定義一個RECT結構。結構中包含了繪圖命令的約束矩形 □ 可選的Unicode字串的長度。字串中包含對命令組的說明文字。如不想提供說明，可設為零 GDICOMMENT_ENDGROUP——標誌增強型圖元文件中的一組繪圖命令的結尾 GDICOMMENT_MULTIFORMATS——以不同的格式嵌入一幅處理過的圖像。例如，可利用這個註釋在一個增強型圖元文件中嵌入一個封裝式PostScript圖像。回放這條記錄的時候，windows會重畫它能描繪的第一組格式。它的後面跟隨： □ 四個Long值。定義一個RECT結構。結構中包含了繪圖命令的約束矩形 □ 包括在註釋中的格式數量 □ 一系列EMRFORMAT結構，每種格式使用一個


GdiFlush
VB聲明
Declare Function GdiFlush Lib "gdi32" Alias "GdiFlush" () As Long
說明
執行任何未決的繪圖操作
返回值
Long，如所有未決的繪圖操作都成功完成，就返回TRUE（非零）。如任何一個操作失敗，就返回零值
註解

通過成批合併繪圖操作命令，win32圖形子系統（GDI）可改善繪圖的性能。如調用一系列繪圖命令，他們都返回布爾值（TRUE表示成功，零表示失敗），就可將他們置於一個內部GDI隊列裡。此時，函數可以立即返回。隨後，GDI子系統會執行這些待決的繪圖命令。可考慮一種最常見的情況。在這種情況下，系統安裝了一塊顯示卡。卡上自帶圖形處理器或加速器。畫圖的時候，GDI只需將圖形命令簡單的發送給顯示卡，另其完成實際的操作。如果必須等待每個繪圖命令都完成並返回，系統和應用程序的性能就會受到顯示卡繪圖速度的極大限制。所以在這個時候，GDI將繪圖命令置於一個名為「批」（Batch）的隊列裡。這樣一來，系統和應用程序就能繼續運行，同時仍然讓顯示卡進行繪圖操作

GdiFlush命令指示應用程序進入等待狀態，直到所有待決的繪圖操作完成為止。如執行的是一個特殊的GDI繪圖命令，它不會返回一個布爾值，那麼也會面臨這種情況。例如，GetPixel函數需要讀取一個像素值。但除非所有待決的繪圖完成，否則該函數不能可靠的完成工作


GdiGetBatchLimit
VB聲明
Declare Function GdiGetBatchLimit Lib "gdi32" Alias "GdiGetBatchLimit" () As Long
說明
判斷有多少個GDI繪圖命令位於隊列中
返回值
Long，待決繪圖命令的最大數量，零表示出錯。會設置GetLastError
註解

參考對GdiFlush的註解


GdiSetBatchLimit
VB聲明
Declare Function GdiSetBatchLimit Lib "gdi32" Alias "GdiSetBatchLimit" (ByVal dwLimit As Long) As Long
說明
指定有多少個GDI繪圖命令能夠進入隊列
返回值
Long，如執行成功，返回前一個限制；零表示出錯。會設置GetLastError
參數表
參數 | 類型及說明
dwLimit | Long，可排隊的繪圖操作最大數量；0意味著恢復默認值；1表示禁止繪圖命令排隊
註解
參考對GdiFlush的註解


GetArcDirection
VB聲明
Declare Function GetArcDirection Lib "gdi32" Alias "GetArcDirection" (ByVal hdc As Long) As Long
說明
畫圓弧的時候，判斷當前採用的繪圖方向
返回值
Long，常數AD_COUNTERCLOCKWISE（逆時針）或AD_CLOCKWISE（順時針），零表示出錯
參數表
參數 | 類型及說明
hdc | Long，要查詢的設備場景


GetBkColor
VB聲明
Declare Function GetBkColor Lib "gdi32" Alias "GetBkColor" (ByVal hdc As Long) As Long
說明
取得指定設備場景當前的背景顏色
返回值
Long，當前背景色的RGB顏色值
參數表
參數 | 類型及說明
hdc | Long，欲查詢背景顏色的一個設備場景


GetBkMode
VB聲明
Declare Function GetBkMode Lib "gdi32" Alias "GetBkMode" (ByVal hdc As Long) As Long
說明
針對指定的設備場景，取得當前的背景填充模式
返回值
Long，下述常數之一，零意味著出錯
OPAQUE | 將文本、陰影刷以及虛線畫筆線段的背景設為當前的背景色
TRANSPARENT | 不修改文本、陰影刷以及虛線畫筆線段的背景
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄


GetBrushOrgEx
VB聲明
Declare Function GetBrushOrgEx Lib "gdi32" Alias "GetBrushOrgEx" (ByVal hDC As Long, lpPoint As POINTAPI) As Long
說明
判斷指定設備場景中當前選定刷子起點
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hDC | Long，設備場景的句柄
lpPoint | POINTAPI，這個結構用來裝載當前刷子的起點


繪圖類函數4

繪圖函數：共七頁。 第一頁 ， 第二頁 ， 第三頁 ，第四頁， 第五頁 ， 第六頁 ， 第七頁
GetCurrentObject | 獲得指定類型的當前選定對像
GetCurrentPositionEx | 在指定的設備場景中取得當前的畫筆位置
GetEnhMetaFile | 取得磁盤文件中包含的一個增強型圖元文件的圖元文件句柄
GetEnhMetaFileBits | 將指定的增強型圖元文件複製到一個內存緩衝區裡
GetEnhMetaFileDescription | 返回對一個增強型圖元文件的說明
GetEnhMetaFileHeader | 取得增強型圖元文件的圖元文件頭
GetEnhMetaFilePaletteEntries | 取得增強型圖元文件的全部或部分調色板
GetMetaFile | 取得包含在一個磁盤文件中的圖元文件的圖元文件句柄
GetMetaFileBitsEx | 將指定的圖元文件複製到一個內存緩衝區
GetMiterLimit | 取得設備場景的斜率限制（Miter）設置
GetNearestColor | 根據設備的顯示能力，取得與指定顏色最接近的一種純色
GetObjectAPI | 取得對指定對像進行說明的一個結構
GetObjectType | 判斷由指定句柄引用的GDI對象的類型
GetPath | 取得對當前路徑進行定義的一系列數據
GetPixel | 在指定的設備場景中取得一個像素的RGB值
GetPolyFillMode | 針對指定的設備場景，獲得多邊形填充模式


GetCurrentObject
VB聲明
Declare Function GetCurrentObject Lib "gdi32" Alias "GetCurrentObject" (ByVal hdc As Long, ByVal uObjectType As Long) As Long
說明
用於獲得指定類型的當前選定對像
返回值
Long，當前選定對象的句柄，零表示錯誤
參數表
參數 | 類型及說明
hdc | Long，欲查詢的設備場景
uObjectType | Long，對像類型。可以是下述常數之一：OBJ_PEN，OBJ_BRUSH，OBJ_PAL，OBJ_FONT，或OBJ_BITMAP


GetCurrentPositionEx
VB聲明
Declare Function GetCurrentPositionEx Lib "gdi32" Alias "GetCurrentPositionEx" (ByVal hdc As Long, lpPoint As POINTAPI) As Long
說明
在指定的設備場景中取得當前的畫筆位置
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
lpPoint | POINTAPI，用於裝載當前位置


GetEnhMetaFile
VB聲明
Declare Function GetEnhMetaFile Lib "gdi32" Alias "GetEnhMetaFileA" (ByVal lpszMetaFile As String) As Long
說明
取得磁盤文件中包含的一個增強型圖元文件的圖元文件句柄（原文：Retrieves a metafile handle to an enhanced metafile contained in a disk file）
返回值
Long，指向圖元文件的句柄。零表示出錯
參數表
參數 | 類型及說明
lpszMetaFile | String，包含了增強型圖元文件的一個磁盤文件的名字


GetEnhMetaFileBits
VB聲明
Declare Function GetEnhMetaFileBits Lib "gdi32" Alias "GetEnhMetaFileBits" (ByVal hemf As Long, ByVal cbBuffer As Long, lpbBuffer As Byte) As Long
說明
將指定的增強型圖元文件複製到一個內存緩衝區裡。這個函數可用於取得一個圖元文件的原始數據，以便將其保存到磁盤文件中
返回值
Long，如lpbBuffer為零，則必須設置緩衝區的長度（用ByVal As Long在這種情況下傳遞一個NULL參數）。如執行成功，返回緩衝區實際載入的字節數；零表示執行失敗
參數表
參數 | 類型及說明
hemf | Long，指向一個增強型圖元文件的句柄
cbBuffer | Long，lpbBuffer緩衝區的長度
lpbBuffer | Byte，長度為cbBuffer的一個緩衝區的頭一個字節。可用一個別名，將這個參數定義成ByVal As Long，以便傳遞一個內存地址
註解
調用了這個函數後，圖元文件句柄hemf仍然有效


GetEnhMetaFileDescription
VB聲明
Declare Function GetEnhMetaFileDescription Lib "gdi32" Alias "GetEnhMetaFileDescriptionA" (ByVal hemf As Long, ByVal cchBuffer As Long, ByVal lpszDescription As String) As Long
說明
返回對一個增強型圖元文件的說明
返回值
Long，如lpszDescription為NULL（使用vbNullString），則必須設置緩衝區的長度。如函數執行成功，返回實際載入緩衝區的字節數；如不存在說明信息則返回零
參數表
參數 | 類型及說明
hemf | Long，目標增強型圖元文件的句柄
cchBuffer | Long，lpszDescription緩衝區的長度
lpszDescription | String，指定一個預先初始化好的字串緩衝區，準備隨同圖元文件說明載入。參考CreateEnhMetaFile函數，瞭解增強型圖元文件說明字串的具體格式


GetEnhMetaFileHeader
VB聲明
Declare Function GetEnhMetaFileHeader Lib "gdi32" Alias "GetEnhMetaFileHeader" (ByVal hemf As Long, ByVal cbBuffer As Long, lpemh As ENHMETAHEADER) As Long
說明
取得增強型圖元文件的圖元文件頭
返回值
Long，若lpemh為零（用ByVal As Long在這種情況下傳遞一個NULL參數）則必須設置緩衝區的長度。如執行成功，返回緩衝區中實際載入的字節數；零表示失敗
參數表
參數 | 類型及說明
hemf | Long，指向一個增強型圖元文件的句柄
cbBuffer | Long，ENHMETAHEADER結構的大小
lpemh | ENHMETAHEADER


GetEnhMetaFilePaletteEntries
VB聲明
Declare Function GetEnhMetaFilePaletteEntries Lib "gdi32" Alias "GetEnhMetaFilePaletteEntries" (ByVal hemf As Long, ByVal cEntries As Long, lppe As PALETTEENTRY) As Long
說明
取得增強型圖元文件的全部或部分調色板
返回值
Long，如lppe為零（用ByVal As Long在這種情況下傳遞一個NULL參數）則必須設置緩衝區的長度。如執行成功，返回緩衝區實際載入的條目數量；如圖元文件中不存在調色板就返回一個零值。如返回GDI_ERROR，表示函數執行出錯
參數表
參數 | 類型及說明
hemf | Long，增強型圖元文件的句柄
cEntries | Long，欲取回的條目數量
lppe | PALETTEENTRY，一個PALETTEENTRY結構的數組，用於裝載增強型圖元文件的調色板條目。注意至少要包括cEntries個結構


GetMetaFile
VB聲明
Declare Function GetMetaFile Lib "gdi32" Alias "GetMetaFileA" (ByVal lpFileName As String) As Long
說明
取得包含在一個磁盤文件中的圖元文件的圖元文件句柄
返回值
Long，指向已載入的圖元文件的一個句柄，零表示錯誤
參數表
參數 | 類型及說明
lpFileName | String，包含了一個圖元文件的磁盤文件的名稱
註解
這個函數在vb裡沒有什麼用。因為windows圖元文件通常保存為可放置的圖元文件格式，而該函數不能識別這種格式


GetMetaFileBitsEx
VB聲明
Declare Function GetMetaFileBitsEx Lib "gdi32" Alias "GetMetaFileBitsEx" (ByVal hMF As Long, ByVal nSize As Long, lpvData As Any) As Long
說明
將指定的圖元文件複製到一個內存緩衝區。這個函數可用於取得一個圖元文件的原始數據，以便轉存到磁盤文件
返回值
Long，如lpvData為零（在這種情況下用ByVal As Long傳遞一個NULL參數），那麼必須指定緩衝區的長度。如執行成功，返回實際載入緩衝區的字節數，零表示出錯
參數表
參數 | 類型及說明
hMF | Long，標準windows圖元文件的句柄
nSize | Long，lpvData緩衝區的長度
lpvData | 任何類型，一個字節數組中的第一個條目，該數組用於裝載圖元文件數據。用ByVal As Long可指定空值或緩衝區的內存地址


GetMiterLimit
VB聲明
Declare Function GetMiterLimit& Lib "gdi32" (ByVal hdc As Long, peLimit As Single)
說明
取得設備場景的斜率限制（Miter）設置——斜率限制是指斜角長度與線寬間的比率
返回值
Long，
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
peLimit | Single，隨同當前斜率設置載入一個Single值
註解
開頭的聲明來自於我的資料，而在vb的api文本查看器裡的聲明如下：Declare Function GetMiterLimit Lib "gdi32" Alias "GetMiterLimit" (ByVal hdc As Long, peLimit As Double) As Long，參數peLimit的類型不同，不知是誰錯了。


GetNearestColor
VB聲明
Declare Function GetNearestColor Lib "gdi32" Alias "GetNearestColor" (ByVal hdc As Long, ByVal crColor As Long) As Long
說明
根據設備的顯示能力，取得與指定顏色最接近的一種純色
返回值
Long，取得與指定顏色最接近的一種顏色，這種顏色可由設備場景實際顯示出來（給定當前系統調色板）。如返回CLR_INVALID，表示函數執行出錯。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
crColor | Long，欲測試的RGB顏色


GetObjectAPI
VB聲明
Declare Function GetObjectAPI& Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any)
說明
取得對指定對像進行說明的一個結構。windows手冊建議用GetObject這個名字來引用該函數。GetObjectAPI在vb中用於避免與GetObject關鍵字混淆
返回值
Long，如lpObject設為零（用ByVal As Long在這種情況下傳遞一個NULL參數），則必須設置緩衝區的長度。如執行成功，返回載入結構內部的實際字節數；如失敗，返回零值
參數表
參數 | 類型及說明
hObject | Long，畫筆、刷子、字體、位圖或調色板等對象的句柄
nCount | Long，欲取回的字節數。通常是由lpObject定義的那個結構的長度
lpObject | 任何類型，用於容納對像數據的結構。針對畫筆，通常是一個LOGPEN結構；針對擴展畫筆，通常是EXTLOGPEN；針對字體是LOGBRUSH；針對位圖是BITMAP；針對DIBSection位圖是DIBSECTION；針對調色板，應指向一個整型變量，代表調色板中的條目數量


GetObjectType
VB聲明
Declare Function GetObjectType Lib "gdi32" Alias "GetObjectType" (ByVal hgdiobj As Long) As Long
說明
判斷由指定句柄引用的GDI對象的類型
返回值
Long，帶有OBJ_前綴的一個常數，標誌著一種特定的對象。零表示錯誤
參數表
參數 | 類型及說明
hgdiobj | Long，一個GDI對像句柄


GetPath
VB聲明
Declare Function GetPath Lib "gdi32" Alias "GetPath" (ByVal hdc As Long, lpPoint As POINTAPI, lpTypes As Byte, ByVal nSize As Long) As Long
說明
取得對當前路徑進行定義的一系列數據
返回值
Long，載入數組的點數（如nSize設為零，則返回要求的條目數量）。如數組空間不夠大，不足以容下所有的點，就返回-1。會將GetLastError設置為下述值之一：ERROR_CAN_NOT_COMPLETE，ERROR_INVALID_PARAMETER，ERROR_BUFFER_OVERFLOW
參數表
參數 | 類型及說明
hdc | Long，包含了路徑的設備場景
lpPoint | POINTAPI，一個POINTAPI結構數組中的第一個元素。這個數組為路徑中的每個段（segment）都要載入坐標數據。具體的信息是採用邏輯坐標提供的
lpTypes | Byte，一個字節數組中的第一個元素；這個數組定義了與每個坐標對應的操作類型。其中包括：
 | PT_MOVETO | 坐標是一個新子路徑的起始處
 | PT_LINETO | 坐標是來自前一個坐標的一條線的終點
 | PT_BEZIERTO | 肯定以三點一組的形式出現。頭兩個點是控制點，第三個是貝塞爾（Bezier）曲線的終點。PT_LINETO和PT_BEZIERTO也許能與PT_CLOSEFIGURE聯合使用。在這種情況下，它代表一幅圖像的最後一個點。將這個點與子路徑的第一個連接起來後，路徑就會封閉
nSize | Long，lpPoint和lpTypes數組的大小。如設為零，表示取得要求的數組大小
註解
儘管路徑信息是在設備坐標的內部保存的，這個函數的所有坐標都是用邏輯坐標返回的。具體坐標取決於當前的坐標系統及轉換設置。可用FlattenPath函數強迫路徑中的所有點都成為PT_MOVETO和PT_LINETO類型


GetPixel
VB聲明
Declare Function GetPixel Lib "gdi32" Alias "GetPixel" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
說明
在指定的設備場景中取得一個像素的RGB值
返回值
Long，指定點的RGB顏色。如指定的點位於設備場景的剪切區之外，則返回CLR_INVALID
參數表
參數 | 類型及說明
hdc | Long，一個設備場景的句柄
x,y | Long，邏輯坐標中要檢查的點
註解
用GetDeviceCaps判斷設備是否支持本函數


GetPolyFillMode
VB聲明
Declare Function GetPolyFillMode Lib "gdi32" Alias "GetPolyFillMode" (ByVal hdc As Long) As Long
說明
針對指定的設備場景，獲得多邊形填充模式。關於填充模式見註解
返回值
Long，常數ALTERNATE 或 WINDING。零表示失敗
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
註解
填充模式1——ALTERNATE：為判斷一個點是否位於填充區，windows會從這個點到圖形外部畫一條假想的線。每與一條線相交，計數器就會增1。如最後一個記數是奇數，則填充這個點；如果是偶數，則保留原樣不變 填充模式2——WINDING：為判斷一個點是否位於填充區，windows會從這個點到圖形外部畫一條假想的線。windows會跟蹤畫出每個頂點（線段）的方向。這條假想的線每次穿過一個頂點時，而且頂點的Y方向為正，則減一個記數。如結果記數不是零，就表明該點位於填充區域


繪圖類函數5

繪圖函數：共七頁。 第一頁 ， 第二頁 ， 第三頁 ， 第四頁 ，第五頁， 第六頁 ， 第七頁
GetROP2 | 針對指定的設備場景，取得當前的繪圖模式
GetStockObject | 取得一個固有對象（Stock）
GetSysColorBrush | 為任何一種標準系統顏色取得一個刷子
GetWinMetaFileBits | 通過在一個緩衝區中填充用於標準圖元文件的數據，將一個增強型圖元文件轉換成標準windows圖元文件
InvertRect | 通過反轉每個像素的值，從而反轉一個設備場景中指定的矩形
LineDDA | 枚舉指定線段中的所有點
LineTo | 用當前畫筆畫一條線，從當前位置連到一個指定的點
MoveToEx | 為指定的設備場景指定一個新的當前畫筆位置
PaintDesktop | 在指定的設備場景中描繪桌面牆紙圖案
PathToRegion | 將當前選定的路徑轉換到一個區域裡
Pie | 畫一個餅圖
PlayEnhMetaFile | 在指定的設備場景中畫一個增強型圖元文件
PlayEnhMetaFileRecord | 回放單獨一條增強型圖元文件記錄
PlayMetaFile | 在指定的設備場景中回放一個圖元文件
PlayMetaFileRecord | 回放來自圖元文件的單條記錄
PolyBezier | 描繪一條或多條貝塞爾（Bezier）曲線


GetROP2
VB聲明
Declare Function GetROP2 Lib "gdi32" Alias "GetROP2" (ByVal hdc As Long) As Long
說明
針對指定的設備場景，取得當前的繪圖模式。這樣可定義繪圖操作如何與正在顯示的圖像合併起來
返回值
Long，請參考繪圖模式常數表
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
註解
這個函數只對光柵設備有效
繪圖模式常數表
常數 | DrawMode | 像素值
R2_BLACK | vbBlackness | 黑色
R2_WHITE | vbWhitness | 白色
R2_NOP | vbNop | 不變
R2_NOT | vbInvert | 當前顯示顏色的反色
R2_COPYPEN | vbCopyPen | 畫筆顏色
R2_NOTCOPYPEN | vbNotCopyPen | R2_COPYPEN的反色
R2_MERGEPENNOT | vbMergePenNot | 顯示顏色的反色與畫筆顏色進行OR運算
R2_MASKPENNOT | vbMaskPenNot | 顯示顏色的反色與畫筆顏色進行AND運算
R2_MERGENOTPEN | vbMergeNotPen | 畫筆顏色的反色與顯示顏色進行OR運算
R2_MASKNOTPEN | vbMaskNotPen | 畫筆顏色的反色與顯示顏色進行AND運算
R2_MERGEPEN | vbMergePen | 畫筆顏色與顯示顏色進行OR運算
R2_NOTMERGEPEN | vbNotMergePen | R2_MERGEPEN的反色
R2_MASKPEN | vbMaskPen | 顯示顏色與畫筆顏色進行AND運算
R2_NOTMASKPEN | vbNotMaskPen | R2_MASKPEN的反色
R2_XORPEN | vbXorPen | 顯示顏色與畫筆顏色進行異或運算
R2_NOTXORPEN | vbNotXorPen | R2_XORPEN的反色


GetStockObject
VB聲明
Declare Function GetStockObject Lib "gdi32" Alias "GetStockObject" (ByVal nIndex As Long) As Long
說明
取得一個固有對象（Stock）。這是可由任何應用程序使用的windows標準對像之一
返回值
Long，指向指定對象的一個句柄。零表示出錯
參數表
參數 | 類型及說明
nIndex | Long，下述表格中定義的任何常數之一
 | BLACK_BRUSH | 黑色刷子 | DKGRAY_BRUSH | 黑灰色刷子
 | GRAY_BRUSH | 灰色刷子 | HOLLOW_BRUSH | 凹刷子
 | LTGRAY_BRUSH | 淺灰色刷子 | NULL_BRUSH | 空刷子
 | WHITE_BRUSH | 白色刷子 | BLACK_PEN | 黑色畫筆
 | NULL_PEN | 空畫筆 | WHITE_PEN | 白色畫筆
 | ANSI_FIXED_FONT | 採用windows（ANSI）字符集的等寬字體 | ANSI_VAR_FONT | 採用windows（ANSI）字符集的不等寬字體
 | DEVICE_DEFAULT_FONT | 設備使用的默認字體（NT） | DEFAULT_GUI_FONT | 用戶界面的默認字體，包括選單和對話框字體（Windows 95）
 | OEM_FIXED_FONT | OEM字符集的固有字體 | SYSTEM_FONT | 屏幕系統字體。這是用於選單、對話框等等的默認不等寬字體
 | SYSTEM_FIXED_FONT | 屏幕系統字體。這是用於選單、對話框等等的默認等寬字體（在windows 3.0之前使用） | DEFAULT_PALETTE | 默認調色板
註解
固有刷子的起點可能不會改變。不應用DeleteObject函數刪除這些對象。不要對那些不具備CS_HREDRAW 和 CS_VREDRAW類樣式的窗口使用DK_GRAY_BRUSH，GRAY_BRUSH 和 LTGRAY_BRUSH刷子


GetSysColorBrush
VB聲明
Declare Function GetSysColorBrush Lib "user32" Alias "GetSysColorBrush" (ByVal nIndex As Long) As Long
說明
為任何一種標準系統顏色取得一個刷子
返回值
Long，針對一種系統顏色的一個固有刷子的句柄。零表示出錯
參數表
參數 | 類型及說明
nIndex | Long，系統顏色索引，也即帶有COLOR_前綴的某個常數。參考GetSysColor
註解
不要用DeleteObject函數刪除這些刷子。它們是由系統擁有的固有對象。不要將這些刷子指定成一種窗口類的默認刷子


GetWinMetaFileBits
VB聲明
Declare Function GetWinMetaFileBits Lib "gdi32" Alias "GetWinMetaFileBits" (ByVal hemf As Long, ByVal cbBuffer As Long, lpbBuffer As Byte, ByVal fnMapMode As Long, ByVal hdcRef As Long) As Long
說明
通過在一個緩衝區中填充用於標準圖元文件的數據，將一個增強型圖元文件轉換成標準windows圖元文件
返回值
Long，以字節數表示的圖元文件長度。如lpbBuffer為NULL（在這種情況下用一個別名指定ByVal As Long，從而傳遞一個NULL值）——返回字節數組的長度。零表示出錯（原文：The size in bytes of the metafile. If lpbBuffer is null (use an alias with the parameter specified ByVal as Long to pass null to this function)-returns the required size of the byte array. Zero on error.）
參數表
參數 | 類型及說明
hemf | Long，欲轉換的增強型圖元文件的句柄。函數調用完畢後，該句柄仍然保持有效
cbBuffer | Long，目標緩衝區的長度
lpbBuffer | Byte，作為目標緩衝區使用的一個字節數組的第一個字節。這個數組的長度至少為cbBuffer個字節
fnMapMode | Long，轉換時採用的映射（對應）模型。通常用MM_ANISOTROPIC創建一個可擴展的圖元文件
hdcRef | Long，一個參考設備場景，用於決定新圖元文件採用的參考分辨率
註解
有些增強型圖元文件命令沒有對應的標準圖元文件命令。這些命令會轉換成最接近的命令，或者丟棄。結果生成的圖元文件已指定了窗口的顯示範圍。窗口的起點是0，0


InvertRect
VB聲明
Declare Function InvertRect Lib "user32" Alias "InvertRect" (ByVal hdc As Long, lpRect As RECT) As Long
說明
通過反轉每個像素的值，從而反轉一個設備場景中指定的矩形
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
lpRect | RECT，要反轉的矩形，用邏輯坐標指定
註解
反轉是一種光柵操作


LineDDA
VB聲明
Declare Function LineDDA Lib "gdi32" Alias "LineDDA" (ByVal n1 As Long, ByVal n2 As Long, ByVal n3 As Long, ByVal n4 As Long, ByVal lpLineDDAProc As Long, ByVal lParam As Long) As Long
說明
枚舉指定線段中的所有點
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
n1,n2 | Long，線段的x,y起點坐標
n3,n4 | Long，線段的x,y終點坐標
lpLineDDAProc | Long，vb5中的一個函數地址
lParam | Long，枚舉過程中傳遞給回調函數的用戶自定義值
註解
通常用這個函數執行自定義的線段作圖——例如，可將一條線中的其他每個像素都設成不同的顏色。在MM_TEXT模式下，每個點都對應於設備中的一個像素——在這種模式下，也可用這個函數進行線段中的擊中測試。線段中的最後一個點不會枚舉出來


LineTo
VB聲明
Declare Function LineTo Lib "gdi32" Alias "LineTo" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
說明
用當前畫筆畫一條線，從當前位置連到一個指定的點。這個函數調用完畢，當前位置變成x,y點
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
x,y | Long，線段終點位置，採用邏輯坐標表示。這個點不會實際畫出來；它不屬於線段的一部分
註解
如重複調用這個函數和一個幾何畫筆，從而創建一系列線段，那麼除非在一個路徑的場景中調用，否則不會認為這些線段已結合到一起


MoveToEx
VB聲明
Declare Function MoveToEx Lib "gdi32" Alias "MoveToEx" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, lpPoint As POINTAPI) As Long
說明
為指定的設備場景指定一個新的當前畫筆位置。前一個位置保存在lpPoint中
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hdc | Long，指向一個設備場景的句柄
x,y | Long，採用邏輯坐標表示的新畫筆位置
lpPoint | POINTAPI，用於保存前一個畫筆位置。可以為NULL（將參數改為ByVal As Long，以傳遞一個空參數）
註解
在一個路徑分支中描繪的時候，這個函數會創建一個新的子路徑


PaintDesktop
VB聲明
Declare Function PaintDesktop Lib "user32" Alias "PaintDesktop" (ByVal hdc As Long) As Long
說明
在指定的設備場景中描繪桌面牆紙圖案
返回值
Long，TRUE（非零）表示成功，否則返回零
參數表
參數 | 類型及說明
hdc | Long，要在其中填充的設備場景


PathToRegion
VB聲明
Declare Function PathToRegion Lib "gdi32" Alias "PathToRegion" (ByVal hdc As Long) As Long
說明
將當前選定的路徑轉換到一個區域裡
返回值
Long，新區域的句柄。零表示錯誤。會將GetLastError設為下述值之一：ERROR_CAN_NOT_COMPLETE，ERROR_INVALID_PARAMETER，ERROR_NOT_ENOUGH_MEMORY
參數表
參數 | 類型及說明
hdc | Long，包含了欲轉換的路徑的設備場景
註解
函數執行完畢後，路徑會自動清除


Pie
VB聲明
Declare Function Pie Lib "gdi32" Alias "Pie" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) As Long
說明
象註解裡那樣畫一個餅圖，X1，Y1，X2，Y2指定橢圓的一個約束矩形。從矩形的中心分別向X3，Y3和X4，Y4畫一條線，這兩條線與橢圓的交點定義了餅圖佔據橢圓的面積
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，指定一個顯示場景的句柄
X1,Y1 | Long，指定橢圓約束矩形的左上角位置
X2,Y2 | Long，指定橢圓約束矩形的右下角位置
X3,Y3 | Long，指定餅圖的一個斜邊
X4,Y4 | Long，指定餅圖的另一個斜邊
註解
pie1.gif (1054 字節) | 在win95和win16中，約束矩形的寬度和高度必須在3-32766之間 參考Arc函數


PlayEnhMetaFile
VB聲明
Declare Function PlayEnhMetaFile Lib "gdi32" Alias "PlayEnhMetaFile" (ByVal hdc As Long, ByVal hemf As Long, lpRect As RECT) As Long
說明
在指定的設備場景中畫一個增強型圖元文件。與標準圖元文件不同，完成回放後，增強型圖元文件會恢復設備場景以前的狀態
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，目標設備場景
hemf | Long，欲描繪的增強型圖元文件的句柄
lpRect | RECT，一個約束矩形，定義了在哪裡描繪圖元文件


PlayEnhMetaFileRecord
VB聲明
Declare Function PlayEnhMetaFileRecord Lib "gdi32" Alias "PlayEnhMetaFileRecord" (ByVal hdc As Long, lpHandletable As HANDLETABLE, lpEnhMetaRecord As ENHMETARECORD, ByVal nHandles As Long) As Long
說明
回放單獨一條增強型圖元文件記錄。可與EnumEnhMetaFile函數聯合使用，只回放選定的圖元文件記錄。這個函數的參數設置與那些由EnumMetaFile回調函數返回的值是相似的
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hdc | Long，欲在其中繪圖的設備場景
lpHandletable | HANDLETABLE，使用的句柄的一個數組（An array of handles used.）
lpEnhMetaRecord | ENHMETARECORD，一個特定的結構（或指向結構的指針），包含了增強型圖元文件記錄
nHandles | Long，句柄表中的句柄數量


PlayMetaFile
VB聲明
Declare Function PlayMetaFile Lib "gdi32" Alias "PlayMetaFile" (ByVal hdc As Long, ByVal hMF As Long) As Long
說明
在指定的設備場景中回放一個圖元文件。圖元文件中記錄的GDI操作會針對設備場景而執行
返回值
Long，
參數表
參數 | 類型及說明
hdc | Long，要在其中回放圖元文件的一個設備場景的句柄
hMF | Long，欲回放的一個圖元文件的句柄
註解
在vb裡，圖元文件有能力改變一個設備場景的對象及映射模式。注意在調用這個函數之前，必須保存一個vb窗體或圖片控件設備場景的狀態


PlayMetaFileRecord
VB聲明
Declare Function PlayMetaFileRecord Lib "gdi32" Alias "PlayMetaFileRecord" (ByVal hdc As Long, lpHandletable As HANDLETABLE, lpMetaRecord As METARECORD, ByVal nHandles As Long) As Long
說明
回放來自圖元文件的單條記錄（每條記錄都包含了單個GDI繪圖命令）。可與EnumMetaFile函數聯合使用，只回放那些選定的圖元文件記錄。這個函數的參數與那些由EnumMetaFile回調函數返回的值相似
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hdc | Long，欲在其中回放圖元文件記錄GDI命令的一個設備場景的句柄
lpHandletable | HANDLETABLE，一個整數數組的第一個條目，該數組用於容納圖元文件使用的GDI對象的句柄
lpMetaRecord | METARECORD，指定單條圖元文件記錄
nHandles | Long，圖元文件句柄表格中的句柄數目


PolyBezier

PolyBezier, PolyBezierTo
VB聲明
Declare Function PolyBezier& Lib "gdi32" (ByVal hdc As Long, lppt As POINTAPI, ByVal cPoints As Long) Declare Function PolyBezierTo& Lib "gdi32" (ByVal hdc As Long, lppt As POINTAPI, ByVal cCount As Long)
說明
描繪一條或多條貝塞爾（Bezier）曲線。PolyBezierTo用於將當前畫筆位置設為前一條曲線的終點
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hdc | Long，要在其中繪圖的設備場景
lppt | POINTAPI，指定一個POINTAPI結構數組。其中的第一個結構指定了起點。剩下的點三個一組——包括兩個控件點和一個終點 原文：An array of POINTAPI structures. The first structure specifies the starting point. The remaining points are in groups of three, consisting of two control points and an end point.
cPoints | Long，lppt數組的總點數


繪圖類函數6

繪圖函數：共七頁。 第一頁 ， 第二頁 ， 第三頁 ， 第四頁 ， 第五頁 ，第六頁， 第七頁
PolyDraw | 描繪一條複雜的曲線，由線段及貝塞爾曲線組成
Polygon | 描繪一個多邊形
Polyline | 用當前畫筆描繪一系列線段
PolyPolygon | 用當前選定畫筆描繪兩個或多個多邊形
PolyPolyline | 用當前選定畫筆描繪兩個或多個多邊形
Rectangle | 用當前選定的畫筆描繪矩形，並用當前選定的刷子填充
RoundRect | 用當前選定的畫筆畫一個圓角矩形，並用當前選定的刷子在其中填充
SelectClipPath | 將設備場景當前的路徑合併到剪切區域裡
SelectObject | 為當前設備場景選擇圖形對像
SetArcDirection | 設置圓弧的描繪方向
SetBkColor | 為指定的設備場景設置背景顏色
SetBkMode | 指定陰影刷子、虛線畫筆以及字符中的空隙的填充方式
SetBrushOrgEx | 為指定的設備場景設置當前選定刷子的起點
SetEnhMetaFileBits | 用指定內存緩衝區內包含的數據創建一個增強型圖元文件
SetMetaFileBitsEx | 用包含在指定內存緩衝區內的數據結構創建一個圖元文件
SetMiterLimit | 設置設備場景當前的斜率限制


PolyDraw
VB聲明
Declare Function PolyDraw Lib "gdi32" Alias "PolyDraw" (ByVal hdc As Long, lppt As POINTAPI, lpbTypes As Byte, ByVal cCount As Long) As Long
說明
描繪一條複雜的曲線，由線段及貝塞爾曲線組成
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hdc | Long，用於繪圖的設備場景
lppt | POINTAPI，POINTAPI結構數組的第一個元素。這個數組用於為描繪的每一段都載入坐標數據。這些信息是用邏輯坐標提供的
lpbTypes | Byte，一個字節數組的第一個元素。這個數組定義了與每個坐標對應的操作類型。其中包括：
 | PT_MOVETO | 坐標是一幅新打開圖形的起點
 | PT_LINETO | 坐標是來自前一個坐標的一條線的終點
 | PT_BEZIERTO | 以三點一組的形式出現。頭兩個點是控制點，第三個是貝塞爾曲線的終點。PT_LINETO和PT_BEZIERTO也許能與PT_CLOSEFIGURE聯合使用。在這種情況下，它代表一幅圖形的最後一個點。將這個點與圖形的第一個點連接起來後，圖形就會封閉
cCount | Long，lppt和lpbTypes數組的大小，設為零表示取得需要的數組大小 原文：The size of the lpPoint and lpTypes array. Set to zero to retrieve the required array size.
註解
當前的畫筆位置設為最後一條線段或lppt數組中的曲線的終點


Polygon
VB聲明
Declare Function Polygon Lib "gdi32" Alias "Polygon" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long
說明
描繪一個多邊形，由兩點或三點的任意系列構成。windows會將最後一個點與第一個點連接起來，從而封閉多邊形。多邊形的邊框用當前選定的畫筆描繪，多邊形用當前選定的刷子填充
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，用於描繪的設備場景
lpPoint | POINTAPI，在nCount POINTAPI結構數組中的第一個POINTAPI結構
nCount | Long，多邊形的總點數（頂點數）
註解
GetPolyFillMode 和 SetPolyFillMode 函數決定了如何在多邊形內部填充


Polyline

Polyline, PolyLineTo
VB聲明
Declare Function Polyline Lib "gdi32" Alias "Polyline" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long Declare Function PolylineTo Lib "gdi32" Alias "PolylineTo" (ByVal hdc As Long, lppt As POINTAPI, ByVal cCount As Long) As Long
說明
用當前畫筆描繪一系列線段。使用PolylineTo函數時，當前位置會設為最後一條線段的終點。它不會由Polyline函數改動
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hdc | Long，要在其中繪圖的設備場景
lpPoint | POINTAPI，nCount POINTAPI結構數組中的第一個POINTAPI結構
nCount | Long，lpPoint數組中的點數。會從第一個點到第二個點畫一條線，以次類推


PolyPolygon
VB聲明
Declare Function PolyPolygon Lib "gdi32" Alias "PolyPolygon" (ByVal hdc As Long, lpPoint As POINTAPI, lpPolyCounts As Long, ByVal nCount As Long) As Long
說明
用當前選定畫筆描繪兩個或多個多邊形。根據由SetPolyFillMode函數指定的多邊形填充模式，用當前選定的刷子填充它們。每個多邊形都必須是封閉的
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，要在其中繪圖的設備場景
lpPoint | POINTAPI，nCount POINTAPI結構數組中的第一個POINTAPI結構
lpPolyCounts | Long，在Long值數組中的第一個條目。每個條目都包含了一定數量的點，用於構成一個封閉的多邊形。lpPoint數組由一系列封閉的多邊形構成，每個在lpPolyCounts數組中都有一個條目
nCount | Long，要描繪的多邊形總數（就是lpPolyCounts數組的大小）。至少為2


PolyPolyline
VB聲明
Declare Function PolyPolyline Lib "gdi32" Alias "PolyPolyline" (ByVal hdc As Long, lppt As POINTAPI, lpdwPolyPoints As Long, ByVal cCount As Long) As Long
說明
用當前選定畫筆描繪兩個或多個多邊形
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hdc | Long，要在其中繪圖的設備場景
lpPoint | POINTAPI，nCount POINTAPI結構數組中的第一個POINTAPI結構
lpdwPolyPoints | Long，在Long值數組中的第一個條目。每個條目都包含了構成一個多邊形的點數。lpPoint數組由一系列多邊形構成，每個在lpdwPolyPoints數組中都有一個條目
cCount | Long，要描繪的多邊形總數（就是lpdwPolyPoints數組的大小）
註解
這個函數幾乎與PolyPolygon函數完全一致，只是多邊形不會填充，也不需要封閉


Rectangle
VB聲明
Declare Function Rectangle Lib "gdi32" Alias "Rectangle" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
說明
用當前選定的畫筆描繪矩形，並用當前選定的刷子進行填充
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
X1,Y1 | Long，指定矩形左上角位置
X2,Y2 | Long，指定矩形右下角位置


RoundRect
VB聲明
Declare Function RoundRect Lib "gdi32" Alias "RoundRect" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long
說明
用當前選定的畫筆畫一個圓角矩形，並用當前選定的刷子在其中填充。X3和Y3定義了用於生成圓角的橢圓
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，用於繪圖的設備場景
X1,Y1 | Long，對矩形左上角位置進行說明的X，Y坐標
X2,Y2 | Long，對矩形右下角位置進行說明的X，Y坐標
X3 | Long，用於生成圓角效果的一個橢圓的寬度。取值範圍從零（表示不加圓角），一直到矩形的寬度（全圓）
Y3 | Long，用於生成圓角效果的一個橢圓的高度。取值範圍從零（表示不加圓角），一直到矩形的高度（全圓）


SelectClipPath
VB聲明
Declare Function SelectClipPath Lib "gdi32" Alias "SelectClipPath" (ByVal hdc As Long, ByVal iMode As Long) As Long
說明
將設備場景當前的路徑合併到剪切區域裡
返回值
Long，非零表示成功，零表示失敗。會將GetLastError設置為下述值之一：ERROR_CAN_NOT_COMPLETE，ERROR_INVALID_PARAMETER，ERROR_NOT_ENOUGH_MEMORY
參數表
參數 | 類型及說明
hdc | Long，包含了欲合併到剪切區域的路徑的一個設備場景的句柄
iMode | Long，決定如何將路徑與當前剪切區域合併到一起。可選下述常數之一：
 | RGN_AND | 新的剪切區域只包含了在路徑和當前剪切區域都存在的點
 | RGN_COPY | 新剪切區域設為路徑
 | RGN_DIFF | 新剪切區域只包含了當前剪切區域的點，但這些點不在路徑中
 | RGN_OR | 新的剪切區域包含了在路徑或當前剪切區域中的點
 | RGN_XOR | 新的剪切區域只包含了存在於路徑或當前剪切區域中的點，但兩地共有的點不包括在內


SelectObject
VB聲明
Declare Function SelectObject Lib "gdi32" Alias "SelectObject" (ByVal hdc As Long, ByVal hObject As Long) As Long
說明
每個設備場景都可能有選入其中的圖形對象。其中包括位圖、刷子、字體、畫筆以及區域等等。一次選入設備場景的只能有一個對象。選定的對象會在設備場景的繪圖操作中使用。例如，當前選定的畫筆決定了在設備場景中描繪的線段顏色及樣式
返回值
Long，與以前選入設備場景的相同hObject類型的一個對象的句柄，零表示出錯。如選定的對象是一個區域（Region），結果就是下列常數之一：SIMPLEREGION， COMPLEXREGION 或 NULLREGION 對區域進行描述， GDI_ERROR 表示出錯
參數表
參數 | 類型及說明
hdc | Long，一個設備場景的句柄
hObject | Long，一個畫筆、位圖、刷子、字體或區域的句柄
註解
返回值通常用於獲得選入DC的對象的原始值。繪圖操作完成後，原始的對象通常選回設備場景。在清除一個設備場景前，務必注意恢復原始的對象


SetArcDirection
VB聲明
Declare Function SetArcDirection Lib "gdi32" Alias "SetArcDirection" (ByVal hdc As Long, ByVal ArcDirection As Long) As Long
說明
設置圓弧的描繪方向
返回值
Long，如執行成功，返回原始的圓弧方向；零意味著出錯
參數表
參數 | 類型及說明
hdc | Long，要設置的設備場景
ArcDirection | Long，AD_CLOCKWISE （順時針）或 AD_COUNTERCLOCKWISE （逆時針）
註解
可應用於下列函數：Arc， ArcTo， Chord， Ellipse， Pie， Rectangle 和 RoundRect


SetBkColor
VB聲明
Declare Function SetBkColor Lib "gdi32" Alias "SetBkColor" (ByVal hdc As Long, ByVal crColor As Long) As Long
說明
為指定的設備場景設置背景顏色。背景顏色用於填充陰影刷子、虛線畫筆以及字符（如背景模式為OPAQUE）中的空隙。也在位圖顏色轉換期間使用。參考SetBkMode
返回值
Long，前一個背景色，CLR_INVALID表示出錯
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
crColor | Long，新背景顏色的RGB顏色值
註解
背景實際是設備能夠顯示的最接近於 crColor 的顏色


SetBkMode
VB聲明
Declare Function SetBkMode Lib "gdi32" Alias "SetBkMode" (ByVal hdc As Long, ByVal nBkMode As Long) As Long
說明
指定陰影刷子、虛線畫筆以及字符中的空隙的填充方式
返回值
Long，前一個背景模式的值
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
nBkMode | Long，下述常數之一：
 | OPAQUE | 用當前的背景色填充虛線畫筆、陰影刷子以及字符的空隙
 | TRANSPARENT | 透明處理，即不作上述填充
註解
背景模式不會影響用擴展畫筆描繪的線條


SetBrushOrgEx
VB聲明
Declare Function SetBrushOrgEx Lib "gdi32" Alias "SetBrushOrgEx" (ByVal hdc As Long, ByVal nXOrg As Long, ByVal nYOrg As Long, lppt As POINTAPI) As Long
說明
為指定的設備場景設置當前選定刷子的起點
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
nXOrg,nYOrg | Long，刷子的新起點，採用設備坐標表示。取值範圍在0-7之間（不需要更大的值，因為windows95下最大的刷子的尺寸是8×8；而這個函數在NT下是不必要的）
lppt | POINTAPI，用於裝載前一個刷子的起點
註解
Windows NT會自動設置刷子的起點，所以不應在NT下使用這個函數
在vb裡使用
注意完成以後一定要將設備場景的刷子起點設為0，0。既可明確指定坐標，也可用RestoreDC函數恢復恢復原始的DC


SetEnhMetaFileBits
VB聲明
Declare Function SetEnhMetaFileBits Lib "gdi32" Alias "SetEnhMetaFileBits" (ByVal cbBuffer As Long, lpData As Byte) As Long
說明
用指定內存緩衝區內包含的數據創建一個增強型圖元文件。在從磁盤讀入原始的圖元文件數據後（最開始是由GetEnhMetaFileBits函數獲得的），通常再用這個函數創建一個圖元文件
返回值
Long，如執行成功，返回一個增強型圖元文件句柄；否則返回零
參數表
參數 | 類型及說明
cbBuffer | Long，lpData數組的長度
lpData | Byte，一個字節數組的頭一個條目，這個數組內包含了圖元文件數據


SetMetaFileBitsEx
VB聲明
Declare Function SetMetaFileBitsEx Lib "gdi32" Alias "SetMetaFileBitsEx" (ByVal nSize As Long, lpData As Byte) As Long
說明
用包含在指定內存緩衝區內的數據結構創建一個圖元文件。在從磁盤讀入原始的圖元文件數據後（最開始是由GetMetaFileBitsEx函數獲得的），通常再用這個函數創建一個圖元文件
返回值
Long，如執行成功，返回一個標準圖元文件的句柄；零意味著失敗
參數表
參數 | 類型及說明
nSize | Long，lpData數組的長度
lpData | Byte，一個字節數組的頭一個條目，這個數組內包含了圖元文件數據


SetMiterLimit
VB聲明
Declare Function SetMiterLimit& Lib "gdi32" (ByVal hdc As Long, ByVal eNewLimit As Single, peOldLimit As Single)
說明
設置設備場景當前的斜率限制
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，欲設置的設備場景
eNewLimit | Single，新的斜率限制
peOldLimit | Single，用於容納原始斜率限制的一個單精度值
註解
斜率限制是指斜角長度與線寬之間的比率
其他
請看vb的api文本查看器裡的聲明：Function SetMiterLimit Lib "gdi32" Alias "SetMiterLimit" (ByVal hdc As Long, ByVal eNewLimit As Double, peOldLimit As Double) As Long


繪圖類函數7

繪圖函數：共七頁。 第一頁 ， 第二頁 ， 第三頁 ， 第四頁 ， 第五頁 ， 第六頁 ，第七頁
SetPixel | 在指定的設備場景中設置一個像素的RGB值
SetPixelV | 在指定的設備場景中設置一個像素的RGB值
SetPolyFillMode | 設置多邊形的填充模式
SetROP2 | 設置指定設備場景的繪圖模式。與vb的DrawMode屬性完全一致
SetWinMetaFileBits | 將一個標準Windows圖元文件轉換成增強型圖元文件
StrokeAndFillPath | 針對指定的設備場景，關閉路徑上打開的所有區域
StrokePath | 用當前畫筆描繪一個路徑的輪廓。打開的圖形不會被這個函數關閉
UnrealizeObject | 將一個刷子對像選入設備場景之前，如刷子的起點準備用SetBrushOrgEx修改，則必須先調用本函數
WidenPath | 根據選定畫筆的寬度，重新定義當前選定的路徑
完


SetPixel
VB聲明
Declare Function SetPixel Lib "gdi32" Alias "SetPixel" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
說明
在指定的設備場景中設置一個像素的RGB值
返回值
Long，指定點的實際RGB顏色。如設備不支持指定的準確顏色，則返回的值會與crColor有所不同。如指定的點不能設置，則會返回-1（例如，指定的點可能位於設備場景剪切區外面）。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
x,y | Long，要設置的點，用邏輯坐標表示
crColor | Long，指定像素的新RGB顏色
註解
可用GetDeviceCaps判斷一個設備是否支持這個函數


SetPixelV
VB聲明
Declare Function SetPixelV Lib "gdi32" Alias "SetPixelV" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
說明
在指定的設備場景中設置一個像素的RGB值
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，一個設備場景的句柄
x,y | Long，要設置的點，用邏輯坐標表示
crColor | Long，指定像素的新RGB顏色值
註解
這個函數比SetPixel快一些，但不會返回設置的實際顏色。可用GetDeviceCaps判斷設備是否支持這個函數


SetPolyFillMode
VB聲明
Declare Function SetPolyFillMode Lib "gdi32" Alias "SetPolyFillMode" (ByVal hdc As Long, ByVal nPolyFillMode As Long) As Long
說明
設置多邊形的填充模式。參考GetPolyFillMode函數的註解
返回值
Long，如執行成功，返回前一種多邊形填充模式。零表示出錯
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
nPolyFillMode | Long，下述常數之一：
 | ALTERNATE | 交替填充
 | WINDING | 根據繪圖方向填充


SetROP2
VB聲明
Declare Function SetROP2 Lib "gdi32" Alias "SetROP2" (ByVal hdc As Long, ByVal nDrawMode As Long) As Long
說明
設置指定設備場景的繪圖模式。與vb的DrawMode屬性完全一致
返回值
Long，如執行成功，返回前一個繪圖模式；零表示出錯
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
nDrawMode | Long，設備場景的新繪圖模式。參考GetROP2函數的繪圖模式常數表
註解
在vb裡，為一個vb窗體或圖片控件使用設備場景的時候，這個函數會設置DrawMode屬性


SetWinMetaFileBits
VB聲明
Declare Function SetWinMetaFileBits Lib "gdi32" Alias "SetWinMetaFileBits" (ByVal cbBuffer As Long, lpbBuffer As Byte, ByVal hdcRef As Long, lpmfp As METAFILEPICT) As Long
說明
將一個標準Windows圖元文件轉換成增強型圖元文件
返回值
Long，如執行成功，返回一個增強型圖元文件（位於內存中）的句柄；零意味著出錯
參數表
參數 | 類型及說明
cbBuffer | Long，lpbBuffer數組的長度
lpbBuffer | Byte，一個字節數組的頭一個條目，這個數組包含了標準圖元文件數據。數據是用GetMetaFileBitsEx或GetWinMetaFileBits函數獲得的
hdcRef | Long，用於決定原始格式及圖元文件分辨率的一個參考設備場景。可以為零，表示採用顯示器分辨率
lpmfp | METAFILEPICT，定義圖元文件附加參考信息的一個結構。可設為NULL（用一個別名傳遞NULL值，將參數定義成ByVal As Long）；此時，會假定使用當前顯示器的MM_ANISOTROPIC映射模式


StrokeAndFillPath
VB聲明
Declare Function StrokeAndFillPath Lib "gdi32" Alias "StrokeAndFillPath" (ByVal hdc As Long) As Long
說明
針對指定的設備場景，關閉路徑上打開的所有區域。用當前畫筆描繪路徑的一個輪廓，並用當前刷子填充路徑
返回值
Long，TRUE（非零）表示成功，否則返回零。會將GetLastError設置為下述值：ERROR_CAN_NOT_COMPLETE，ERROR_INVALID_PARAMETER，ERROR_NOT_ENOUGH_MEMORY
參數表
參數 | 類型及說明
hdc | Long，包含了要描繪和填充的那個路徑的一個設備場景
註解
函數執行完後記住清除路徑


StrokePath
VB聲明
Declare Function StrokePath Lib "gdi32" Alias "StrokePath" (ByVal hdc As Long) As Long
說明
用當前畫筆描繪一個路徑的輪廓。打開的圖形不會被這個函數關閉
返回值
Long，TRUE（非零）表示成功，否則返回零。會將GetLastError設置為下述值：ERROR_CAN_NOT_COMPLETE，ERROR_INVALID_PARAMETER，ERROR_NOT_ENOUGH_MEMORY
參數表
參數 | 類型及說明
hdc | Long，包含了要描繪和填充的那個路徑的一個設備場景


UnrealizeObject
VB聲明
Declare Function UnrealizeObject Lib "gdi32" Alias "UnrealizeObject" (ByVal hObject As Long) As Long
說明
將一個刷子對像選入設備場景之前，如刷子的起點準備用SetBrushOrgEx修改，則必須先調用本函數
返回值
Long，TRUE（非零）表示成功，否則返回零。會設置GetLastError
參數表
參數 | 類型及說明
hObject | Long，刷子或邏輯調色板的句柄
註解
Windows NT 會自動跟蹤刷子的起點，所以如果對象是一個刷子，那麼這個函數不會產生任何影響。在那個時候，它會返回TRUE


WidenPath
VB聲明
Declare Function WidenPath Lib "gdi32" Alias "WidenPath" (ByVal hdc As Long) As Long
說明
根據選定畫筆的寬度，重新定義當前選定的路徑。例如，假設路徑描述了一個封閉的矩形。面積為10×10像素，而且用一個3像素寬的畫筆描繪。此時，加寬後的路徑將由一個12×12的矩形構成
返回值
Long，TRUE（非零）表示成功，否則返回零。會將GetLastError設置為下述值：ERROR_CAN_NOT_COMPLETE，ERROR_INVALID_PARAMETER，ERROR_NOT_ENOUGH_MEMORY
參數表
參數 | 類型及說明
hdc | Long，包含路徑的一個設備的句柄
註解
所有貝塞爾曲線都會由這個函數轉換成線段


位圖、圖標和光柵運算類1

位圖、圖標和光柵運算函數，共三頁。第一頁， 第二頁 ， 第三頁
BitBlt | 將一幅位圖從一個設備場景複製到另一個
CopyIcon | 製作指定圖標或滑鼠指針的一個副本。這個副本從屬於發出調用的應用程序
CopyImage | 複製位圖、圖標或指針，同時在複製過程中進行一些轉換工作
CreateBitmap | 按照規定的格式創建一幅與設備有關位圖
CreateBitmapIndirect | 創建一幅與設備有關位圖
CreateCompatibleBitmap | 創建一幅與設備有關位圖，它與指定的設備場景兼容
CreateCursor | 創建一個滑鼠指針
CreateDIBitmap | 根據一幅與設備無關的位圖創建一幅與設備有關的位圖
CreateDIBSection | 創建一個DIBSection
CreateIcon | 創建一個圖標
CreateIconIndirect | 創建一個圖標
DestroyCursor | 清除指定的滑鼠指針，並釋放它佔用的所有系統資源
DestroyIcon | 清除圖標
DrawIcon | 在指定的位置畫一個圖標
DrawIconEx | 描繪一個圖標或滑鼠指針。與DrawIcon相比，這個函數提供了更多的功能
ExtractAssociatedIcon | 判斷一個可執行程序或DLL中是否存在圖標，或是否有圖標與系統註冊表中指定的文件存在關聯並提取之


BitBlt
VB聲明
Declare Function BitBlt Lib "gdi32" Alias "BitBlt" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
說明
將一幅位圖從一個設備場景複製到另一個。源和目標DC相互間必須兼容
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hDestDC | Long，目標設備場景
x,y | Long，對目標DC中目標矩形左上角位置進行描述的那個點。用目標DC的邏輯坐標表示
nWidth,nHeight | Long，欲傳輸圖像的寬度和高度
hSrcDC | Long，源設備場景。如光柵運算未指定源，則應設為0
xSrc,ySrc | Long，對源DC中源矩形左上角位置進行描述的那個點。用源DC的邏輯坐標表示
dwRop | Long，傳輸過程要執行的光柵運算
註解
在NT環境下，如在一次世界傳輸中要求在源設備場景中進行剪切或旋轉處理，這個函數的執行會失敗 如目標和源DC的映射關係要求矩形中像素的大小必須在傳輸過程中改變，那麼這個函數會根據需要自動伸縮、旋轉、折疊、或切斷，以便完成最終的傳輸過程


CopyIcon
VB聲明
Declare Function CopyIcon Lib "user32" Alias "CopyIcon" (ByVal hIcon As Long) As Long
說明
製作指定圖標或滑鼠指針的一個副本。這個副本從屬於發出調用的應用程序
返回值
Long，新圖標的句柄，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hIcon | Long，欲複製的圖標或指針的句柄
註解
由於這個函數在win32中可複製滑鼠指針，所以win32未提供對win16函數CopyCursor的支持 從一個DLL或其他應用程序載入一個圖標後，只有DLL或應用程序保持載入狀態，那個圖標才可使用。這個函數允許我們製作圖標從屬於自己應用程序的一個副本。一旦不再需要，必須用DestroyIcon函數將其清除，以釋放佔用的系統資源


CopyImage
VB聲明
Declare Function CopyImage Lib "user32" Alias "CopyImage" (ByVal handle As Long, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long
說明
複製位圖、圖標或指針，同時在複製過程中進行一些轉換工作
返回值
Long，執行成功則返回新圖像的句柄，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
handle | Long，欲複製的圖像的句柄
un1 | Long，下述常數之一：MAGE_BITMAP， IMAGE_CURSOR 或 IMAGE_ICON
n1 | Long，副本以像素表示的寬度
n2 | Long，副本以像素表示的高度
un2 | Long，下述常數任意組合：
 | LR_DELETEORG | 刪除原來的圖像
 | LR_COPYRETURNORG | 忽略n1和n2設置
 | LR_MONOCHROME | 創建一個單色副本
 | LR_COPYFROMRESOURCE | 在原始資源的基礎上創建一個副本，原始圖像即是從那個資源中載入的。假設我們想為一個32×32的圖標製作一個64×64的副本。如果不設這個標誌，CopyImage會直接放大原來的圖標。而使用這個標誌後，CopyImage首先檢查資源文件中是否存在這個圖標的一個64×64版本，如果存在，就直接載入品質更好的圖像
註解
這個函數通常在希望複製已選入其他設備場景的一幅位圖時使用——例如，複製已成為ImageList控件一部分的某幅位圖。選定的位圖將不能使用，因為一次只能將位圖選入一個設備場景


CreateBitmap
VB聲明
Declare Function CreateBitmap Lib "gdi32" Alias "CreateBitmap" (ByVal nWidth As Long, ByVal nHeight As Long, ByVal nPlanes As Long, ByVal nBitCount As Long, lpBits As Any) As Long
說明
按照規定的格式創建一幅與設備有關位圖
返回值
Long，執行成功返回位圖的句柄，零表示失敗
參數表
參數 | 類型及說明
nWidth | Long，位圖寬度，以像素為單位
nHeight | Long，位圖高度，以像素為單位
nPlanes | Long，色層數量
nBitCount | Long，每像素的位數
lpBits | Any，指向欲載入位圖的數據的指針。可設為零，表示不對位圖進行初始化（用ByVal傳遞一個零值）。這個數據的格式必須與設備的要求相符。掃瞄線必須對齊16位字邊界
註解
一旦不再需要，記住用DeleteObject函數釋放位圖佔用的內存和資源 可用這個函數創建單色位圖（1層，每像素一位）。對於彩色位圖，則應使用CreateCompatibleBitmap。這個函數可以勝任工作；但要注意，用它創建的位圖在使用時會稍慢一些，因為Windows每次使用的時候都必須檢查它的位圖格式 如果nWidth和nHeight為零，返回的位圖就是一個1×1的單色位圖


CreateBitmapIndirect
VB聲明
Declare Function CreateBitmapIndirect Lib "gdi32" Alias "CreateBitmapIndirect" (lpBitmap As BITMAP) As Long
說明
創建一幅與設備有關位圖
返回值
Long，執行成功返回位圖句柄，零表示失敗
參數表
參數 | 類型及說明
lpBitmap | BITMAP，對一幅邏輯位圖進行描述的結構。這個結構中的字段與CreateBitmap函數的參數大致對應
註解
如使用由GetObject函數獲得的BITMAP結構，注意GetObject不會取回位圖數據——只有位圖的大小和配置信息 如果nWidth和nHeight為零，返回的位圖就是一個1×1的單色位圖。也請參考對CreateBitmap函數的註解


CreateCompatibleBitmap
VB聲明
Declare Function CreateCompatibleBitmap Lib "gdi32" Alias "CreateCompatibleBitmap" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
說明
創建一幅與設備有關位圖，它與指定的設備場景兼容
返回值
Long，執行成功返回位圖句柄，零表示失敗
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
nWidth | Long，位圖寬度，以像素為單位
nHeight | Long，位圖高度，以像素為單位
註解
內存設備場景即與彩色位圖兼容，也與單色位圖兼容。這個函數的作用是創建一幅與當前選入hdc中的場景兼容。對一個內存場景來說，默認的位圖是單色的。倘若內存設備場景有一個DIBSection選入其中，這個函數就會返回DIBSection的一個句柄。如hdc是一幅設備位圖，那麼結果生成的位圖就肯定兼容於設備（也就是說，彩色設備生成的肯定是彩色位圖） 如果nWidth和nHeight為零，返回的位圖就是一個1×1的單色位圖 一旦位圖不再需要，一定用DeleteObject函數釋放它佔用的內存及資源


CreateCursor
VB聲明
Declare Function CreateCursor Lib "user32" Alias "CreateCursor" (ByVal hInstance As Long, ByVal nXhotspot As Long, ByVal nYhotspot As Long, ByVal nWidth As Long, ByVal nHeight As Long, lpANDbitPlane As Any, lpXORbitPlane As Any) As Long
說明
創建一個滑鼠指針
返回值
Long，執行成功返回指針的句柄，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hInstance | Long，準備擁有指針的應用程序的實例的句柄。可用GetWindowWord函數獲得擁有一個窗體或控件的一個實例的句柄
nXhotspot,nYhotspot | Long，滑鼠指針圖像中代表準確指針位置的X，Y坐標
nWidth | Long，指針圖像的寬度。可用GetSystemMetrics函數判斷一個特定設備的正確編號。VGA的編號是32
nHeight | Long，指針圖像的高度。可用GetSystemMetrics函數判斷一個特定設備的正確編號。VGA的編號是32
lpANDbitPlane | Any，指向AND位圖數據的指針
lpXORbitPlane | Any，指向XOR位圖數據的指針
註解
一旦不再需要，注意用DestroyCursor函數釋放滑鼠指針佔用的內存及資源


CreateDIBitmap
VB聲明
Declare Function CreateDIBitmap Lib "gdi32" Alias "CreateDIBitmap" (ByVal hdc As Long, lpInfoHeader As BITMAPINFOHEADER, ByVal dwUsage As Long, lpInitBits As Any, lpInitInfo As BITMAPINFO, ByVal wUsage As Long) As Long
說明
根據一幅與設備無關的位圖創建一幅與設備有關的位圖
返回值
Long，執行成功返回位圖句柄，零表示失敗
參數表
參數 | 類型及說明
hdc | Long，一個設備場景的句柄，該設備場景定義了要創建的與設備有關位圖的配置信息
lpInfoHeader | BITMAPINFOHEADER，對DIB（與設備無關位圖）的格式進行描述的一個結構
dwUsage | Long，如不應對位圖數據進行初始化，那麼設為零。如設為CBM_INIT，表示根據lpInitBits 和 lpInitInfo參數對位圖進行初始化
lpInitBits | Any，指向DIB格式中的位圖數據的一個指針，格式是由lpInitInfo指定的
lpInitInfo | BITMAPINFO，這個結構對lpInitBits DIB的格式及顏色進行了說明
wUsage | Long，下述常數之一： DIB_PAL_COLORS——顏色表包含對當前選定的調色板的索引 DIB_RGB_COLORS——顏色表包含了RGB顏色
註解
一旦不再需要，記住用DeleteObject函數釋放位圖佔用的內存及資源


CreateDIBSection
VB聲明
Declare Function CreateDIBSection Lib "gdi32" Alias "CreateDIBSection" (ByVal hDC As Long, pBitmapInfo As BITMAPINFO, ByVal un As Long, ByVal lplpVoid As Long, ByVal handle As Long, ByVal dw As Long) As Long
說明
創建一個DIBSection。這是一個GDI對像，可像一幅與設備有關位圖那樣使用。但是，它在內部作為一幅與設備無關位圖保存
返回值
Long，執行成功返回DIBSection位圖的句柄，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hDC | Long，一個設備場景的句柄。如dw設為DIB_PAL_COLORS，那麼DIB顏色表就會用來自邏輯調色板的顏色進行初始化
pBitmapInfo | BITMAPINFO，這個結構初始化成欲創建的那幅位圖的配置數據
un | Long，下述常數之一：
 | DIB_PAL_COLORS | BITMAPINFO包含了一個16位調色板索引的數組
 | DIB_RGB_COLORS | BITMAPINFO包含了一個顏色表，其中保存有32位顏色（RGBQUAD）
lplpVoid | Long，用於載入DIBSection數據區的內存地址
handle | Long，指向一個文件映射對象的可選句柄，位圖將在其中創建。如設為零，Windows會自動分配內存
dw | Long，如指定了句柄，就用這個參數指定位圖數據在文件映射對像中的偏移量
註解
一旦不再需要，記住用DeleteObject函數刪除DIBSection位圖 如Windows分配了一個內存緩衝區，那麼對像刪除以後，緩衝區也會自動刪除。如指定了一個文件映射對像，則不會自動將其清除 在直接訪問DIB內存之前，首先必須保證Windows已完成了繪圖（記住，Windows可能對繪圖操作進行了排列處理）。通過調用gdiFlush函數，可確保完成所有未決的繪圖操作


CreateIcon
VB聲明
Declare Function CreateIcon Lib "user32" Alias "CreateIcon" (ByVal hInstance As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal nPlanes As Byte, ByVal nBitsPixel As Byte, lpANDbits As Byte, lpXORbits As Byte) As Long
說明
創建一個圖標
返回值
Long，執行成功返回圖標的句柄，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hInstance | Long，準備擁有圖標的應用程序的實例的句柄。可用GetWindowWord函數獲得擁有一個窗體或控件的一個實例的句柄
nWidth | Long，圖標圖像的寬度。可用GetSystemMetrics函數判斷一個特定設備的正確編號。VGA的編號是32
nHeight | Long，圖標圖像的高度。可用GetSystemMetrics函數判斷一個特定設備的正確編號。VGA的編號是32
nPlanes | Byte，lpXORbits數據數組中的色層數量
nBitsPixel | Byte，lpXORbits數據數組中每像素的位數
lpANDbits | Byte，指向AND位圖數據的指針
lpXORbits | Byte，指向XOR位圖數據的指針
註解
一旦不再需要，注意用DestroyIcon函數釋放滑鼠指針佔用的內存及資源


CreateIconIndirect
VB聲明
Declare Function CreateIconIndirect Lib "user32" Alias "CreateIconIndirect" (piconinfo As ICONINFO) As Long
說明
創建一個圖標
返回值
Long，執行成功返回圖標的句柄，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
piconinfo | ICONINFO，這個結構包含的信息與欲創建的圖標有關。圖標是隨同兩幅參考位圖創建出來的。這個函數允許我們在給定XOR和AND位圖的前提下創建圖標，而不是給出實際的掩模數組
註解
一旦不再需要，注意用DestroyIcon函數釋放滑鼠指針佔用的內存及資源


DestroyCursor
VB聲明
Declare Function DestroyCursor Lib "user32" Alias "DestroyCursor" (ByVal hCursor As Long) As Long
說明
清除指定的滑鼠指針，並釋放它佔用的所有系統資源。不要用這個函數清除隨同LoadCursor函數載入的系統指針資源
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hCursor | Long，欲清除的指針對象的句柄


DestroyIcon
VB聲明
Declare Function DestroyIcon Lib "user32" Alias "DestroyIcon" (ByVal hIcon As Long) As Long
說明
清除圖標
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hIcon | Long，圖標句柄
註解
不要用這個函數清除隨同LoadIcon函數載入的系統固有圖標


DrawIcon
VB聲明
Declare Function DrawIcon Lib "user32" Alias "DrawIcon" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal hIcon As Long) As Long
說明
在指定的位置畫一個圖標
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景
x,y | Long，想描繪圖標的位置（邏輯坐標）
hIcon | Long，欲描繪圖標的句柄


DrawIconEx
VB聲明
Declare Function DrawIconEx Lib "user32" Alias "DrawIconEx" (ByVal hdc As Long, ByVal xLeft As Long, ByVal yTop As Long, ByVal hIcon As Long, ByVal cxWidth As Long, ByVal cyWidth As Long, ByVal istepIfAniCur As Long, ByVal hbrFlickerFreeDraw As Long, ByVal diFlags As Long) As Long
說明
描繪一個圖標或滑鼠指針。與DrawIcon相比，這個函數提供了更多的功能
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，要在其中畫圖的一個設備場景的句柄
xLeft,yTop | Long，圖標左上角的位置，用邏輯坐標表示
hIcon | Long，要描繪的圖標的句柄
cxWidth,cyWidth | Long，希望的圖標寬度和高度。圖標會自動縮放，與指定的值相符
istepIfAniCur | Long，如果hIcon是個動畫指針，那麼該參數指定描繪動畫中的哪幅圖像。注意Win32不能區分圖標和指針
hbrFlickerFreeDraw | Long，如設為一個刷子句柄，那麼函數會將圖標畫入一幅內存位圖，並用背景色填充。隨後，將圖像直接複製到指定的位置。這樣做可繪圖時減少閃爍（因為畫圖過程中重現）
diFlags | Long，下述常數之一：
 | DI_COMPAT | 描繪標準的系統指針，而不是指定的圖像
 | DI_DEFAULTSIZE | 忽略cxWidth和cyWidth設置，並採用原始的圖標大小
 | DI_IMAGE | 繪圖時使用圖標的XOR部分（即圖標沒有透明區域）
 | DI_MASK | 繪圖時使用圖標的MASK部分（如單獨使用，可獲得圖標的掩模）
 | DI_NORMAL | 用常規方式繪圖（合併 DI_IMAGE 和 DI_MASK）
註解
應檢查Windows95是否與指定的標誌及參數兼容。Win32用戶手冊宣稱函數與Windows 95是兼容的，但在實際運用中發現它有一定的限制


ExtractAssociatedIcon
VB聲明
Declare Function ExtractAssociatedIcon Lib "shell32.dll" Alias "ExtractAssociateIconA" (ByVal hInst As Long, ByVal lpIconPath As String, lpiIcon As Long) As Long
說明
這個函數可判斷一個可執行程序或DLL中是否存在圖標，或是否有圖標與系統註冊表中指定的文件存在關聯。隨後，它允許我們提取出那些圖標
返回值
Long，如果找到任何圖標，就返回圖標的句柄；否則返回零
參數表
參數 | 類型及說明
hInst | Long，當前應用程序的實例句柄。也可用GetWindowWord函數取得擁有一個窗體或控件的示例的句柄
lpIconPath | String，指定一個文件名，準備從該文件中提取圖標。如果文件並非執行程序或DLL本身，但通過系統註冊表與一個可執行文件關聯，就用這個字串裝載可執行程序的名字
lpiIcon | Long，在其中裝載圖標在可執行文件中的資源標識符
註解
注意至少要把lpIconPath字串定義成MAX_PATH個字符的長度


位圖、圖標和光柵運算類2

位圖、圖標和光柵運算函數，共三頁。 第一頁 ，第二頁， 第三頁
ExtractIcon | 判斷一個可執行文件或DLL中是否有圖標存在，並將其提取出來
GetBitmapBits | 將來自位圖的二進制位複製到一個緩衝區
GetBitmapDimensionEx | 取得一幅位圖的寬度和高度
GetDIBColorTable | 從選入設備場景的DIBSection中取得顏色表信息
GetDIBits | 將來自一幅位圖的二進制位複製到一幅與設備無關的位圖裡
GetIconInfo | 取得與圖標有關的信息
GetStretchBltMode | 判斷StretchBlt 和 StretchDIBits函數採用的伸縮模式
LoadBitmap | 從指定的模塊或應用程序實例中載入一幅位圖
LoadCursor | 從指定的模塊或應用程序實例中載入一個滑鼠指針
LoadCursorFromFile | 在一個指針文件或一個動畫指針文件的基礎上創建一個指針
LoadIcon | 從指定的模塊或應用程序實例中載入一個圖標
LoadImage | 載入一個位圖、圖標或指針
MaskBlt | 執行複雜的圖像傳輸，同時進行掩模（MASK）處理
PatBlt | 在當前選定的刷子的基礎上，用一個圖案填充指定的設備場景
PlgBlt | 複製一幅位圖，同時將其轉換成一個平行四邊形。利用它可對位圖進行旋轉處理
SetBitmapBits | 將來自緩衝區的二進制位複製到一幅位圖


ExtractIcon
VB聲明
Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long
說明
判斷一個可執行文件或DLL中是否有圖標存在，並將其提取出來
返回值
Long，如成功，返回指向圖標的句柄；如文件中不存在圖標，則返回零。如果nIconIndex設為-1，就返回文件中的圖標總數
參數表
參數 | 類型及說明
hInst | Long，當前應用程序的實例句柄。也可用GetWindowWord函數取得擁有一個窗體或控件的實例的句柄
lpszExeFileName | String，在其中提取圖標的那個程序的全名
nIconIndex | Long，欲獲取的圖標的索引。如果為-1，表示取得文件中的圖標總數


GetBitmapBits
VB聲明
Declare Function GetBitmapBits Lib "gdi32" Alias "GetBitmapBits" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long
說明
將來自位圖的二進制位複製到一個緩衝區
返回值
Long，如執行成功，返回位圖中的字節數量；零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hBitmap | Long，位圖的句柄
dwCount | Long，欲複製的字節數。如設為零，表示取得位圖中的字節數
lpBits | Any，指向容納位圖位的一個緩衝區的指針。注意事先將緩衝區至少初始化成dwCount個字節
註解
雖然這個函數能正常工作，但強烈建議使用與設備無關的位圖（GetDIBits）


GetBitmapDimensionEx
VB聲明
Declare Function GetBitmapDimensionEx Lib "gdi32" Alias "GetBitmapDimensionEx" (ByVal hBitmap As Long, lpDimension As SIZE) As Long
說明
取得一幅位圖的寬度和高度。它們是由SetBitmapDimensionEx函數設置的。Windows不會使用位圖的大小
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hBitmap | Long，位圖句柄
lpDimension | SIZE，這個結構用於容納由SetBitmapDimensionEx函數設置的位圖的大小。這個大小以1mm的十分之一為單位
註解
參考SetBitmapDimensionEx函數


GetDIBColorTable
VB聲明
Declare Function GetDIBColorTable Lib "gdi32" Alias "GetDIBColorTable" (ByVal hDC As Long, ByVal un1 As Long, ByVal un2 As Long, pRGBQuad As RGBQUAD) As Long
說明
從選入設備場景的DIBSection中取得顏色表信息
返回值
Long，取回的顏色條目數量，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hDC | Long，已選入了一個DIBSection對象的設備場景
un1 | Long，顏色表中欲取回的第一個條目的索引
un2 | Long，欲取回的條目數量
pRGBQuad | RGBQUAD，這個結構數組用於裝載顏色表信息的第一個條目
註解
如DIBSection為每個像素使用了8個以上的二進制位，則不會再用顏色表


GetDIBits
VB聲明
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
說明
將來自一幅位圖的二進制位複製到一幅與設備無關的位圖裡
返回值
Long，非零表示成功，零表示失敗。在Windows 95中，返回值是返回的掃瞄線數量
參數表
參數 | 類型及說明
aHDC | Long，定義了與設備有關位圖hBitmap的配置信息的一個設備場景的句柄
hBitmap | Long，源位圖的句柄。絕對不能將這幅位圖選入設備場景
nStartScan | Long，欲複製到DIB中的第一條掃瞄線的編號
nNumScans | Long，欲複製的掃瞄線數量
lpBits | Any，指向一個緩衝區的指針。這個緩衝區將用於裝載採用DIB格式的信息，但不取回數據（用ByVal傳遞零值）
lpBI | BITMAPINFO，對lpBits DIB的格式及顏色進行說明的一個結構。在BITMAPINFOHEADER結構中，從biSize到biCompression之間的所有字段都必須初始化
wUsage | Long，下述常數之一：
 | DIB_PAL_COLORS | 在顏色表中裝載一個16位所以數組，它們與當前選定的調色板有關
 | DIB_RGB_COLORS | 在顏色表中裝載RGB顏色
註解
起始掃瞄線與起點有關。除非將BITMAPINFOHEADER結構的biHeight字段設為負值，否則起點就位於左下角


GetIconInfo
VB聲明
Declare Function GetIconInfo Lib "user32" Alias "GetIconInfo" (ByVal hIcon As Long, piconinfo As ICONINFO) As Long
說明
取得與圖標有關的信息
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hIcon | Long，圖標句柄
piconinfo | ICONINFO，這個結構裝載的信息與包含了XOR及AND位圖的圖標有關
註解
函數返回時，由ICONINFO結構載入的位圖必須由應用程序刪去


GetStretchBltMode
VB聲明
Declare Function GetStretchBltMode Lib "gdi32" Alias "GetStretchBltMode" (ByVal hdc As Long) As Long
說明
判斷StretchBlt 和 StretchDIBits函數採用的伸縮模式。伸縮模式決定了Windows如何控制在伸縮過程中剔除的掃瞄線
返回值
Long，取得當前的伸縮模式。零表示出錯
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
註解
參考SetStretchBltMode函數


LoadBitmap

LoadBitmap, LoadBitmapBynum
VB聲明
Declare Function LoadBitmap& Lib "user32" Alias "LoadBitmapA" (ByVal hInstance As Long, ByVal lpBitmapName As String) Declare Function LoadBitmapBynum& Lib "user32" Alias "LoadBitmapA" (ByVal hInstance As Long, ByVal lpBitmapName As Long)
說明
從指定的模塊或應用程序實例中載入一幅位圖。LoadBitmapBynum是LoadBitmap函數的類型安全聲明
返回值
Long，已載入的位圖的句柄，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hInstance | Long，一個DLL的模塊句柄；或者一個實例句柄，它指定了包含位圖的可執行文件
lpBitmapName | String，作為一個字串，指定欲載入的位圖資源。作為一個長整數，指定欲載入的資源ID。或者一個常數，代表某幅固有系統位圖。如裝載一幅固有系統位圖，hInstance參數應設為0。常數在api32.txt文件中用前綴 OBM_ 標誌。OBM_REDUCE 引用的是標題欄右側顯示的下箭頭位圖，用於最小化一個窗口。參考api32.txt，其中有系統固有位圖的完整列表
註解
一旦系統位圖不再需要，必須用DeleteObject函數刪除由這個函數取得的位圖


LoadCursor

LoadCursor, LoadCursorBynum
VB聲明
Declare Function LoadCursor& Lib "user32" Alias "LoadCursorA" (ByVal hInstance As Long, ByVal lpCursorName As String) Declare Function LoadCursorBynum& Lib "user32" Alias "LoadCursorA" (ByVal hInstance As Long, ByVal lpCursorName As Long)
說明
從指定的模塊或應用程序實例中載入一個滑鼠指針。LoadCursorBynum是LoadCursor函數的類型安全聲明
返回值
Long，執行成功則返回已載入的指針的句柄；零表示失敗。在Windows 95 和Win16環境中，這個函數只能載入標準尺寸的圖標
參數表
參數 | 類型及說明
hInstance | Long，一個DLL的模塊句柄；或者一個實例句柄，指定包含了滑鼠指針的可執行程序
lpCursorName | String，作為一個字串，指定欲載入的指針資源。作為一個長整數值，指定欲載入的資源ID；或者設置一個常數，代表某幅固有系統指針。如裝載的是一個固有系統指針，注意hInstance參數應設為零。在api32.txt文件中以前綴IDC_ 作為標誌
註解
不要清除固有系統指針或從屬於其他應用程序的指針。注意lpCursorName引用的是一個指針資源。因為假如名字引用的是一個有效的資源。即使它並非指針資源，該函數也會返回一個非零的句柄


LoadCursorFromFile
VB聲明
Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long
說明
在一個指針文件或一個動畫指針文件（擴展名分別是.cur和.ani）的基礎上創建一個指針
返回值
Long，執行成功則返回指向指針的一個句柄，零表示失敗。如果失敗，會將GetLastError設置為常數ERROR_FILE_NOT_FOUND
參數表
參數 | 類型及說明
lpFileName | String，包含指針的那個文件的名字
註解
如果將lpFileName定義成Long型數值（ByVal As Long），就可以（理論上）傳遞帶OCR_ 前綴的常數，以便獲取一個固有系統指針。這一做法在Windows NT 3.5下不適用


LoadIcon

LoadIcon, LoadIconBynum
VB聲明
Declare Function LoadIcon& Lib "user32" Alias "LoadIconA" (ByVal hInstance As Long, ByVal lpIconName As String) Declare Function LoadIconBynum& Lib "user32" Alias "LoadIconA" (ByVal hInstance As Long, ByVal lpIconName As Long)
說明
從指定的模塊或應用程序實例中載入一個圖標。其中，LoadIconBynum是LoadIcon函數的類型安全聲明
返回值
Long，執行成功則返回已載入的圖標的句柄；零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hInstance | Long，一個DLL的模塊句柄；或者一個實例句柄，指定包含了圖標的可執行程序
lpIconName | String，作為一個字串，指定欲載入的圖標資源。作為一個長整數值，指定欲載入的資源ID；或者設置一個常數，代表某幅固有系統圖標。如裝載的是一個固有系統圖標，注意hInstance參數應設為零。在api32.txt文件中以前綴IDI_ 作為標誌
註解
在Windows 95和Win16環境中，這個函數只能載入標準尺寸的圖標。用GetSystemMetrics可以獲得SM_CXICON 和 SM_CYICON標準圖標設置。用LoadImage則可載入非標準尺寸的圖標 文件中可能包含了同一個圖標資源的多種版本。這個函數會自動挑選與當前顯示模式最相配的一種


LoadImage

LoadImage, LoadImageBynum
VB聲明
Declare Function LoadImage& Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As String, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) Declare Function LoadImageBynum& Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As Long, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long)
說明
載入一個位圖、圖標或指針
返回值
Long，執行成功則返回對象的一個句柄；零表示失敗
參數表
參數 | 類型及說明
hInst | Long，要從其中載入圖像的DLL或應用程序模塊或實例句柄。零表示裝載一幅固有圖像
lpsz | String，欲載入圖像的名字。如指定了hInst，就用這個參數指定資源或資源的標誌符（標誌符是一個長整數）。如hInst為空，而且已指定了LR_LOADFROMFILE，那麼這個參數代表文件名（位圖、圖標或指針文件）。如果是個Long型值，這個參數就代表固有位圖、圖標或指針的編號
un1 | Long，下述常數之一，指定了欲載入的圖像類型：IMAGE_BITMAP， IMAGE_CURSOR， IMAGE_ICON
n1,n2 | Long，要求的圖像寬度和高度。圖像會根據情況自動伸縮。如設為零，表示用圖像的默認大小
un2 | Long，下述常數的任意組合，它們都在api32.txt文件中得到了定義：
 | LR_DEFAULTCOLOR | 以常規方式載入圖像
 | LR_LOADREALSIZE | 不對圖像進行縮放處理。忽略n1和n2的設置
 | LR_CREATEDIBSECTION | 如果指定了IMAGE_BITMAP，就返回DIBSection的句柄，而不是位圖的句柄
 | LR_DEFAULTSIZE | 如果n1和n2為零，就使用由系統定義的圖像默認大小，而不是圖像本身定義的大小
 | LR_LOADFROMFILE | 如hInst為零，lpsz就代表要載入適當類型的一個文件的名字，僅適用於Win95
 | LR_LOADMAP3DCOLORS | 將圖像中的深灰、灰、以及淺灰像素都替換成COLOR_3DSHADOW，COLOR_3DFACE以及COLOR_3DLIGHT的當前設置
 | LR_LOADTRANSPARENT | 與圖像中第一個像素相符的所有像素都由系統替換
 | LR_MONOCHROME | 將圖像轉換成單色
 | LR_SHARED | 將圖像作為一個共享資源載入。在NT 4.0中裝載固有資源時要用到這個設置


MaskBlt
VB聲明
Declare Function MaskBlt Lib "gdi32" Alias "MaskBlt" (ByVal hdcDest As Long, ByVal nXDest As Long, ByVal nYDest As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hdcSrc As Long, ByVal nXSrc As Long, ByVal nYSrc As Long, ByVal hbmMask As Long, ByVal xMask As Long, ByVal yMask As Long, ByVal dwRop As Long) As Long
說明
執行複雜的圖像傳輸，同時進行掩模（MASK）處理
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdcDest | Long，目標設備場景
nXDest,nYDest | Long，目標圖像左上角的x,y坐標
nWidth,nHeight | Long，圖像在目標設備場景中的寬度和高度
hdcSrc | Long，源設備場景
nXSrc,nYSrc | Long，源圖像的左上角x,y坐標
hbmMask | Long，作為掩模使用的一幅單色位圖的句柄。如果dwRop代碼包括一個源，那麼這幅位圖必須與源尺寸相同，否則必須與目標尺寸相符
xMask,yMask | Long，單色掩模位圖的x,y偏移。這樣便允許我們創建一幅使用了多個掩模的大型位圖
dwRop | Long，一種特殊的光柵運算，在傳輸過程中使用
適用平台
Windows NT
註解
dwRop代碼是一種非標準的光柵運算代碼，由兩個普通的光柵運算代碼組成：一個前景代碼以及一個背景代碼 在掩模位圖設為1的每個像素處，都在傳輸過程中應用前景轉換處理。如對應的掩蔽位圖像素為零，則應用背景轉換。如果未指定掩模位圖，那麼這個函數就執行與BitBlt相同的操作 如果對源應用了旋轉或剪切處理，則函數調用會失敗 注意可用GetDeviceCaps判斷這個函數是否得到了一個特定設備場景的支持


PatBlt
VB聲明
Declare Function PatBlt Lib "gdi32" Alias "PatBlt" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal dwRop As Long) As Long
說明
在當前選定的刷子的基礎上，用一個圖案填充指定的設備場景
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，欲描繪的一個設備場景的句柄
x,y | Long，對目標DC中目標矩形左上角位置進行定義的一個點，用邏輯坐標表示
nWidth,nHeight | Long，目標矩形的寬度和高度，用邏輯坐標表示
dwRop | Long，傳輸過程中欲進行的光柵運算。對一個源進行引用的光柵運算也許不能在這個函數中使用
註解
可用GetDeviceCaps判斷這個函數是否得到了一個特定設備場景的支持


PlgBlt
VB聲明
Declare Function PlgBlt Lib "gdi32" Alias "PlgBlt" (ByVal hdcDest As Long, lpPoint As POINTAPI, ByVal hdcSrc As Long, ByVal nXSrc As Long, ByVal nYSrc As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hbmMask As Long, ByVal xMask As Long, ByVal yMask As Long) As Long
說明
複製一幅位圖，同時將其轉換成一個平行四邊形。利用它可對位圖進行旋轉處理
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdcDest | Long，圖像使用的目標設備場景
lpPoint | POINTAPI，POINTAPI結構數組中使用的第一個條目。第一個點對應於一個平行四邊形左上角位置；第二個點代表右下角位置；第三個點代表左下角位置；第四個點是在前三個點的基礎上導出的
hdcSrc | Long，圖像的源設備場景
nXSrc,nYSrc | Long，源圖像左上角的x,y坐標，採用邏輯坐標系統表示
nWidth,nHeight | Long，源圖像大小，用邏輯坐標表示
hbmMask | Long，一個可選的句柄，指向一個單色掩模。如設定了這個參數，那麼只有與掩模值1對應的二進制位才會傳輸到目的地
xMask,yMask | Long，掩模位圖欲使用區域左上角的x,y坐標
適用平台
Windows NT
註解
如果對源圖像應用了旋轉或剪切處理，這個函數的執行就會失敗。可用GetDeviceCaps判斷這個函數是否得到了一個特定設備場景的支持


SetBitmapBits
VB聲明
Declare Function SetBitmapBits Lib "gdi32" Alias "SetBitmapBits" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long
說明
將來自緩衝區的二進制位複製到一幅位圖
返回值
Long，執行成功則返回字節數量，零表示失敗
參數表
參數 | 類型及說明
hBitmap | Long，位圖的句柄
dwCount | Long，欲複製的字節數量
lpBits | Any，指向一個緩衝區的指針。這個緩衝區包含了為位圖正確格式化的位圖位
註解
在Win32中，應使用與設備無關位圖


位圖、圖標和光柵運算類3

位圖、圖標和光柵運算函數，共三頁。 第一頁 ， 第二頁 ，第三頁
SetBitmapDimensionEx | 設置一幅位圖的寬度。以一毫米的十分之一為單位
SetDIBColorTable | 設置選入設備場景的一個DIBSection的顏色表信息
SetDIBits | 將來自與設備無關位圖的二進制位複製到一幅與設備有關的位圖裡
SetDIBitsToDevice | 將一幅與設備無關位圖的全部或部分數據直接複製到一個設備
SetStretchBltMode | 指定StretchBlt 和 StretchDIBits函數的伸縮模式
StretchBlt | 將一幅位圖從一個設備場景複製到另一個
StretchDIBits | 將一幅與設備無關位圖的全部或部分數據直接複製到指定的設備場景
完


SetBitmapDimensionEx
VB聲明
Declare Function SetBitmapDimensionEx Lib "gdi32" Alias "SetBitmapDimensionEx" (ByVal hbm As Long, ByVal nX As Long, ByVal nY As Long, lpSize As SIZE) As Long
說明
設置一幅位圖的寬度。以一毫米的十分之一為單位。Windows不使用這種信息，但也許能通過GetBitmapDimensionEx函數獲取
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hbm | Long，一幅位圖的句柄
nX,nY | Long，位圖的建議大小，以0.1mm為單位
lpSize | SIZE，用於載入前一個位圖大小的結構


SetDIBColorTable
VB聲明
Declare Function SetDIBColorTable Lib "gdi32" Alias "SetDIBColorTable" (ByVal hDC As Long, ByVal un1 As Long, ByVal un2 As Long, pcRGBQuad As RGBQUAD) As Long
說明
設置選入設備場景的一個DIBSection的顏色表信息
返回值
Long，要設置的顏色表條目數量，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hDC | Long，已選定一個DIBSection對象的一個設備場景
un1 | Long，要在顏色表中設置的第一個條目的索引
un2 | Long，欲設置的條目數量
pcRGBQuad | RGBQUAD，一個RGBQUAD結構的頭一個條目。這個結構包含了新的顏色表信息。至少需要設置成un2個條目的長度
註解
如DIBSection為每個像素使用的二進制位超過8位，則不會使用顏色表


SetDIBits
VB聲明
Declare Function SetDIBits Lib "gdi32" Alias "SetDIBits" (ByVal hdc 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
說明
將來自與設備無關位圖的二進制位複製到一幅與設備有關的位圖裡
返回值
Long，執行成功則返回掃瞄線的數量，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，指向一個設備場景的句柄，那個設備場景定義了與設備有關位圖（hBitmap）的配置
hBitmap | Long，目標位圖的一個句柄。這幅位圖絕對不能選入一個設備場景
nStartScan | Long，lpBits數組中第一條掃瞄線的編號。如lpBI之BITMAPINFOHEADER部分的biHeight字段是正數，那麼這條掃瞄線就會從位圖的底部開始計算；如果是負數，就從頂部開始計算
nNumScans | Long，欲複製的掃瞄線數量
 | Any，指向一個緩衝區的指針。這個緩衝區包含了以DIB格式描述的位圖數據；這種格式是由lpBI指定的
lpBI | BITMAPINFO，對lpBits DIB的格式和顏色進行描述的一個結構
wUsage | Long，下述常數之一
 | DIB_PAL_COLORS | 顏色表是一個整數數組，其中包含了與目前選入hdc設備場景的調色板相關的索引
 | DIB_RGB_COLORS | 顏色表包含了RG顏色
註解
用GetDeviceCaps判斷設備是否支持這個函數


SetDIBitsToDevice
VB聲明
Declare Function SetDIBitsToDevice Lib "gdi32" Alias "SetDIBitsToDevice" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal dx As Long, ByVal dy As Long, ByVal SrcX As Long, ByVal SrcY As Long, ByVal Scan As Long, ByVal NumScans As Long, Bits As Any, BitsInfo As BITMAPINFO, ByVal wUsage As Long) As Long
說明
將一幅與設備無關位圖的全部或部分數據直接複製到一個設備。這個函數在設備中定義了一個目標矩形，以便接收位圖數據。它也在DIB中定義了一個源矩形，以便從中提取數據
返回值
Long，執行成功則返回掃瞄線的數量，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，一個設備場景的句柄。該場景用於接收位圖數據
x,y | Long，用邏輯坐標表示的目標矩形的起點
dx,dy | Long，用目標矩形的設備單位表示的寬度及高度
SrcX,SrcY | Long，用設備坐標表示的源矩形在DIB中的起點
Scan | Long，Bits數組中第一條掃瞄線的編號。如BitsInfo之BITMAPINFOHEADER部分的biHeight字段是正數，那麼這條掃瞄線就會從位圖的底部開始計算；如果是負數，就從頂部開始計算
NumScans | Long，欲複製的掃瞄線數量
Bits | Any，指向一個緩衝區的指針。這個緩衝區包含了以DIB格式描述的位圖數據；這種格式是由BitsInfo指定的
BitsInfo | BITMAPINFO，對Bits DIB的格式和顏色進行描述的一個結構
wUsage | Long，下述常數之一
 | DIB_PAL_COLORS | 顏色表是一個整數數組，其中包含了與目前選入hdc設備場景的調色板相關的索引
 | DIB_RGB_COLORS | 顏色表包含了RG顏色
註解
用GetDeviceCaps判斷設備是否支持這個函數


SetStretchBltMode
VB聲明
Declare Function SetStretchBltMode Lib "gdi32" Alias "SetStretchBltMode" (ByVal hdc As Long, ByVal nStretchMode As Long) As Long
說明
指定StretchBlt 和 StretchDIBits函數的伸縮模式。這種伸縮模式定義了Windows如何對伸縮過程中剔除的掃瞄線進行控制。對於VB窗體和控件，倘若在API繪圖過程中使用這個函數，建議恢復原來的StretchBlt模式
返回值
Long，上一次伸縮模式的值，零表示失敗
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
nStretchMode | Long，新伸縮模式建立在下述任何一個常數的基礎上，它們均在API32.TXT文件中得到了定義：
 | STRETCH_ANDSCANS | 默認設置。剔除的線段與剩下的線段進行AND運算。這個模式通常應用於採用了白色背景的單色位圖
 | STRETCH_DELETESCANS | 剔除的線段被簡單的清除。這個模式通常用於彩色位圖
 | STRETCH_ORSCANS | 剔除的線段與剩下的線段進行OR運算。這個模式通常應用於採用了白色背景的單色位圖
 | STRETCH_HALFTONE | 目標位圖上的像素塊被設為源位圖上大致近似的塊。這個模式要明顯慢於其他模式
註解
如果要對伸縮模式有一個更深刻的印象，可想像一下對白色圖像中的一條白色細線進行壓縮。壓縮過程中，像素會從圖像中刪去。為避免線段消失，在刪除它們之前，有必要先對線段中的像素與鄰近像素進行AND運算。為達到這個目的，應考慮選用STRETCH_ANDSCANS伸縮模式


StretchBlt
VB聲明
Declare Function StretchBlt Lib "gdi32" Alias "StretchBlt" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
說明
將一幅位圖從一個設備場景複製到另一個。源和目標DC相互間必須兼容。這個函數會在設備場景中定義一個目標矩形，並在位圖中定義一個源圖像。源矩形會根據需要進行伸縮，以便與目標矩形的大小相符
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，目標設備場景
x,y | Long，目標矩形左上角的x,y坐標，以邏輯坐標表示
nWidth,nHeight | Long，目標矩形的寬度和高度，以邏輯坐標表示
hSrcDC | Long，源設備場景。如光柵運算未指定一個源，則這個參數應為零
xSrc,ySrc | Long，用源DC的邏輯坐標表示的源矩形左上角位置
nSrcWidth,nSrcHeight | Long，分別指定用邏輯單位（以源DC為基礎）傳輸的一幅圖像的寬度和高度。如其中有一個參數的符號（指正負號）與對應的目標參數不符，位圖就會在對應的軸上作鏡像轉換處理
dwRop | Long，傳輸過程中進行的光柵運算。如刷子屬於光柵運算的一部分，就使用選入目標DC的刷子
註解
可用GetDeviceCaps函數判斷特定的設備場景是否支持此函數 不可選擇對源位圖進行剪切或旋轉處理，源位圖也不能是一個圖元文件設備場景


StretchDIBits
VB聲明
Declare Function StretchDIBits Lib "gdi32" Alias "StretchDIBits" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal dx As Long, ByVal dy As Long, ByVal SrcX As Long, ByVal SrcY As Long, ByVal wSrcWidth As Long, ByVal wSrcHeight As Long, lpBits As Any, lpBitsInfo As BITMAPINFO, ByVal wUsage As Long, ByVal dwRop As Long) As Long
說明
將一幅與設備無關位圖的全部或部分數據直接複製到指定的設備場景。這個函數在設備場景中定義了一個目標矩形，用於接收位圖數據。它也在DIB中定義了一個源矩形，以便從中提取數據。根據設備場景的StretchBlt模式（由SetStretchBltMode函數決定），源矩形會根據需要調整，以便符合目標矩形的要求
返回值
Long，如函數執行成功，返回欲複製的掃瞄線的數量；如返回常數GDI_ERROR，表示出錯
參數表
參數 | 類型及說明
hdc | Long，一個設備場景的句柄。該場景用於接收位圖數據
x,y | Long，用邏輯坐標表示的目標矩形的起點
dx,dy | Long，目標矩形的寬度及高度，以邏輯坐標表示
SrcX,SrcY | Long，用設備坐標表示的源矩形在DIB中的起點
wSrcWidth,wSrcHeight | Long，源矩形的寬度與高度，用設備坐標表示。如其中有一個參數的符號（指正負號）與對應的目標參數不符，位圖就會在對應的軸上作鏡像轉換
lpBits | Any，指向一個緩衝區的指針。這個緩衝區包含了以DIB格式描述的位圖數據；這種格式是由lpBitsInfo指定的
lpBitsInfo | BITMAPINFO，對lpBits DIB的格式和顏色進行描述的一個結構
wUsage | Long，下述常數之一
 | DIB_PAL_COLORS | 顏色表是一個整數數組，其中包含了與目前選入hdc設備場景的調色板相關的索引
 | DIB_RGB_COLORS | 顏色表包含了RG顏色
dwRop | Long，欲進行的光柵運算


選單類1

選單函數：共三頁。第一頁， 第二頁 ， 第三頁
AppendMenu | 在指定的選單裡添加一個選單項
CheckMenuItem | 復選或撤消復選指定的選單條目
CheckMenuRadioItem | 指定一個選單條目被復選成「單選」項目
CreateMenu | 創建新選單
CreatePopupMenu | 創建一個空的彈出式選單
DeleteMenu | 刪除指定的選單條目
DestroyMenu | 刪除指定的選單
DrawMenuBar | 為指定的窗口重畫選單
EnableMenuItem | 允許或禁止指定的選單條目
GetMenu | 取得窗口中一個選單的句柄
GetMenuCheckMarkDimensions | 返回一個選單復選符的大小
GetMenuContextHelpId | 取得一個選單的幫助場景ID
GetMenuDefaultItem | 判斷選單中的哪個條目是默認條目
GetMenuItemCount | 返回選單中條目（選單項）的數量
GetMenuItemID | 返回位於選單中指定位置處的條目的選單ID
GetMenuItemInfo | 取得（接收）與一個選單條目有關的特定信息


AppendMenu
VB聲明
Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
說明
在指定的選單裡添加一個選單項
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hMenu | Long，選單句柄
wFlags | Long，參考ModifyMenu函數中的選單常數標誌定義表，其中列出了允許使用的所有常數
wIDNewItem | Long，指定選單條目的新命令ID。如果在wFlags參數中指定了MF_POPUP字段，那麼這應該是指向一個彈出式選單的句柄
lpNewItem | String（相應的vb聲明見註解），如果在wFlags參數中指定了MF_STRING標誌，這就代表在選單中設置的字串。如設置了MF_BITMAP標誌，這就代表一個Long型變量，其中包含了一個位圖句柄。如設置了MF_OWNERDRAW，這個值就會包括在DRAWITEMSTRUCT和MEASUREITEMSTRUCT結構中，在條目需要重畫的時候由windows發送出去
註解
Declare Function AppendMenu& Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As String)


CheckMenuItem
VB聲明
Declare Function CheckMenuItem Lib "user32" Alias "CheckMenuItem" (ByVal hMenu As Long, ByVal wIDCheckItem As Long, ByVal wCheck As Long) As Long
說明
復選或撤消復選指定的選單條目
返回值
Long，如條目的前一個狀態是「復選」，就返回MF_CHECKED，如果是「未復選」，就返回MF_UNCHECKED。如指定的選單條目不存在就返回-1
參數表
參數 | 類型及說明
hMenu | Long，選單句柄
wIDCheckItem | Long，欲復選或撤消復選的選單條目的標識符。如果在wCheck中指定了MF_BYCOMMAND標誌，這個參數就用於指定要改變的選單條目的命令ID。如果設置了MF_BYPOSITION標誌，這個參數就用於指定條目在選單中的位置（第一個條目的位置是0）
wCheck | Long，參考ModifyMenu函數中的選單常數標誌定義表，其中列出了允許使用的所有常數。針對這個函數，只能指定下述常數：MF_BYCOMMAND，MF_BYPOSITION，MF_CHECKED以及MF_UNCHECKED
註解
在vb裡使用：由這個函數做出的改動可以正常發揮作用，但不會由vb選單的checked屬性反映出來


CheckMenuRadioItem
VB聲明
Declare Function CheckMenuRadioItem Lib "user32" Alias "CheckMenuRadioItem" (ByVal hMenu As Long, ByVal un1 As Long, ByVal un2 As Long, ByVal un3 As Long, ByVal un4 As Long) As Long
說明
指定一個選單條目被復選成「單選」項目。與單選鈕相似，一個特定的組中只能有一個項目被選中。這個組別既可按位置定義，也可按選單ID定義。復選的項目會顯示一個圓形的樣式復選符號（●），而不是一個標準的復選符號（√）
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hMenu | Long，選單句柄
un1 | Long，組內第一個位置或選單ID
un2 | Long，組內最後一個位置或選單ID
un3 | Long，欲復選的位置或選單ID
un4 | Long，下述標誌之一 ：如un1，un2，un3引用選單條目的位置（第一個肯定在位置0處），就設為MF_BYPOSITION；如它們引用的是選單ID，則設為MF_BYCOMMAND
註解
在vb裡使用：由這個函數做出的改動可以正常發揮作用，但不會由vb選單的checked屬性反映出來


CreateMenu
VB聲明
Declare Function CreateMenu Lib "user32" Alias "CreateMenu" () As Long
說明
創建新選單
返回值
Long，如成功則返回新的頂級選單的句柄；零意味著錯誤
註解

最開始創建時，選單是空的。可用選單api函數插入選單條目。一旦選單不再需要，記住用DestroyMenu將其刪除


CreatePopupMenu
VB聲明
Declare Function CreatePopupMenu Lib "user32" Alias "CreatePopupMenu" () As Long
說明
創建一個空的彈出式選單。可用AppendMenu或InsertMenu函數在窗口中添加條目，或者為一個現成的選單添加彈出式選單，並在新建的選單中添加條目
返回值
Long，如成功，返回一個選單句柄；零意味著錯誤
註解

並不推薦用這個函數來創建備用的vb選單，除非是為TrackPopupMenu函數生成選單。這個窗口中使用的命令ID必須與現有vb選單控件的ID相符。或者用一個子類處理控件進行管理


DeleteMenu
VB聲明
Declare Function DeleteMenu Lib "user32" Alias "DeleteMenu" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
說明
刪除指定的選單條目（在vb裡使用：強烈建議用vb選單的visible屬性從選單中刪除條目。如使用這個函數，會造成指定選單其他選單條目的visible屬性錯誤的影響選單條目）
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hMenu | Long，選單句柄
nPosition | Long，欲刪除選單條目的標識符。如在wFlags中設置了MF_BYCOMMAND標誌，這個參數就代表要改變的選單條目的命令ID。如設置了MF_BYPOSITION標誌，這個參數就代表條目在選單中的位置（頭一個條目肯定是零）
wFlags | Long，MF_BYPOSITION或MF_BYCOMMAND，具體由nPosition參數決定
註解
如條目連接了一個彈出式選單，就會清除彈出式選單。用RemoveMenu函數清除一個彈出式選單條目，同時不影響整個彈出式選單


DestroyMenu
VB聲明
Declare Function DestroyMenu Lib "user32" Alias "DestroyMenu" (ByVal hMenu As Long) As Long
說明
刪除指定的選單。如選單屬於另一個選單的一部分，或直接分配給一個窗口，那麼選單會在窗口清除後被自動刪除
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hMenu | Long，欲刪除選單的句柄
註解
這個函數通常用於CreateMenu和CreatePopupMenu函數創建的選單


DrawMenuBar
VB聲明
Declare Function DrawMenuBar Lib "user32" Alias "DrawMenuBar" (ByVal hwnd As Long) As Long
說明
為指定的窗口重畫選單。用api函數改變一個窗口選單的內容時，就要用到這個函數
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，要重畫選單欄的窗口的句柄
註解
在vb裡很少有必要用到這個函數，因為不應該用api函數來改變一個窗口的頂級選單欄


EnableMenuItem
VB聲明
Declare Function EnableMenuItem Lib "user32" Alias "EnableMenuItem" (ByVal hMenu As Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long
說明
允許或禁止指定的選單條目（在vb裡使用：由這個函數做出的改動可以正常發揮作用，但不會由vb選單的enabled屬性反映出來）
返回值
Long，
參數表
參數 | 類型及說明
hMenu | Long，選單句柄
wIDEnableItem | Long，欲允許或禁止的一個選單條目的標識符。如果在wEnable參數中設置了MF_BYCOMMAND標誌，這個參數就代表欲改變選單條目的命令ID。如設置的是MF_BYPOSITION，則這個參數代表選單條目在選單中的位置（第一個條目肯定是零）
wEnable | Long，參考ModifyMenu函數中的選單常數標誌定義表，其中列出了允許使用的所有常數。對於這個函數，只能指定下述常數：MF_BYCOMMAND，MF_BYPOSITION，MF_ENABLED，MF_DISABLED以及MF_GRAYED
註解
如指定的選單條目依附了一個彈出式選單，那麼整個彈出式選單都會受到影響


GetMenu
VB聲明
Declare Function GetMenu Lib "user32" Alias "GetMenu" (ByVal hwnd As Long) As Long
說明
取得窗口中一個選單的句柄
返回值
Long，依附於指定窗口的一個選單的句柄（如果有選單）；否則返回零
參數表
參數 | 類型及說明
hwnd | Long，窗口句柄。對於vb，這應該是一個窗體句柄。注意可能不是子窗口的句柄


GetMenuCheckMarkDimensions
VB聲明
Declare Function GetMenuCheckMarkDimensions Lib "user32" Alias "GetMenuCheckMarkDimensions" () As Long
說明
返回一個選單復選符的大小。參考SetMenuItemBitmaps以進一步瞭解如何使用這個函數
返回值
Long，高字（高16位）指定選單復選符的高度，以像素為單位表示；低字代表寬度


GetMenuContextHelpId
VB聲明
Declare Function GetMenuContextHelpId Lib "user32" Alias "GetMenuContextHelpId" (ByVal hMenu As Long) As Long
說明
取得用SetMenuContextHelpId函數分配給一個選單的幫助場景ID
返回值
Long，如果存在，就返回幫助場景ID；否則返回零
參數表
參數 | 類型及說明
hMenu | Long，選單句柄


GetMenuDefaultItem
VB聲明
Declare Function GetMenuDefaultItem Lib "user32" Alias "GetMenuDefaultItem" (ByVal hMenu As Long, ByVal fByPos As Long, ByVal gmdiFlags As Long) As Long
說明
允許我們判斷選單中的哪個條目是默認條目。這個條目相應的轉換成雙擊選單時執行的操作
返回值
Long，默認選單條目的位置或標識符。如未發現默認條目，就返回-1
參數表
參數 | 類型及說明
hMenu | Long，選單的句柄
fByPos | Long，如果為TRUE，表示接收條目在選單中的位置；FALSE表示接收它的選單ID
gmdiFlags | Long，下述標誌之一：
 | GMDI_GOINTOPOPUPS | 如默認條目是彈出選單，這個函數就會在其中搜索一個默認的選單條目
 | GMDI_USEDISABLED | 指明自己在搜索過程中不想跳過被禁止的選單條目


GetMenuItemCount
VB聲明
Declare Function GetMenuItemCount Lib "user32" Alias "GetMenuItemCount" (ByVal hMenu As Long) As Long
說明
返回選單中條目（選單項）的數量
返回值
Long，選單中的條目數量；-1意味著出錯。會設置GetLastError
參數表
參數 | 類型及說明
hMenu | Long，目標選單的句柄


GetMenuItemID
VB聲明
Declare Function GetMenuItemID Lib "user32" Alias "GetMenuItemID" (ByVal hMenu As Long, ByVal nPos As Long) As Long
說明
返回位於選單中指定位置處的條目的選單ID
返回值
Long，指定條目的選單ID。如條目屬於一個彈出式選單，就返回-1；如指定的條目屬於一個分隔符（比如一條分隔線）則返回0
參數表
參數 | 類型及說明
hMenu | Long，選單的句柄
nPos | Long，條目在選單中的位置。第一個條目的編號是0


GetMenuItemInfo
VB聲明
Declare Function GetMenuItemInfo Lib "user32" Alias "GetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal b As Boolean, lpMenuItemInfo As MENUITEMINFO) As Long
說明
用一個MENUITEMINFO結構取得（接收）與一個選單條目有關的特定信息
返回值
Long，TRUE（非零）表示成功，否則返回零。會設置GetLastError
參數表
參數 | 類型及說明
hMenu | Long，選單的句柄
un | Long，選單條目的選單ID或位置
b | Boolean，如un指定的是條目位置，就為TRUE；如指定的是一個選單ID，則為FALSE
lpMenuItemInfo | MENUITEMINFO，這個結構用於裝載請求的信息


選單類2

選單函數：共三頁。 第一頁 ，第二頁， 第三頁
GetMenuItemRect | 在一個矩形中裝載指定選單條目的屏幕坐標信息
GetMenuState | 取得與指定選單條目狀態有關的信息
GetMenuString | 取得指定選單條目的字串
GetSubMenu | 取得一個彈出式選單的句柄，它位於選單中指定的位置
GetSystemMenu | 取得指定窗口的系統選單的句柄
HiliteMenuItem | 控制頂級選單條目的加亮顯示狀態
InsertMenu | 在選單的指定位置處插入一個選單條目，並根據需要將其他條目向下移動
InsertMenuItem | 插入一個新選單條目
IsMenu | 判斷指定的句柄是否為一個選單的句柄
LoadMenu | 從指定的模塊或應用程序實例中載入一個選單
LoadMenuIndirect | 載入一個選單
MenuItemFromPoint | 判斷哪個選單條目包含了屏幕上一個指定的點
ModifyMenu | 改變選單條目
RemoveMenu | 刪除指定的選單條目
SetMenu | 設置窗口選單
SetMenuContextHelpId | 設置一個選單的幫助場景ID


GetMenuItemRect
VB聲明
Declare Function GetMenuItemRect Lib "user32" Alias "GetMenuItemRect" (ByVal hWnd As Long, ByVal hMenu As Long, ByVal uItem As Long, lprcItem As RECT) As Long
說明
在一個矩形中裝載指定選單條目的屏幕坐標信息
返回值
Long，TRUE（非零）表示成功，否則返回零。會設置GetLastError
參數表
參數 | 類型及說明
hWnd | Long，包含指定選單或彈出式選單的一個窗口的句柄
hMenu | Long，選單的句柄
uItem | Long，欲檢查的選單條目的位置或選單ID
lprcItem | RECT，在這個結構中裝載選單條目的位置及大小（採用屏幕坐標表示）


GetMenuState
VB聲明
Declare Function GetMenuState Lib "user32" Alias "GetMenuState" (ByVal hMenu As Long, ByVal wID As Long, ByVal wFlags As Long) As Long
說明
取得與指定選單條目狀態有關的信息
返回值
Long，在api32.txt文件的常數定義的一系列標誌的組合，請看下表。如條目是個彈出式選單，那麼結構的最低字節就包含了狀態標誌，而第二個字節包含條目在彈出式選單中的數量
MF_HILITE | 選單條目加亮顯示（處於選定狀態）
MF_CHECKED | 選單條目處於復選狀態
MF_DISABLED | 選單條目處於禁止狀態
MF_GRAYED | 選單條目以灰色顯示，處於禁用狀態
MF_MENUBARBREAK | 為這個條目指定一條分隔線。參考ModifyMenu函數
MF_MENUBREAK | 為這個條目指定一個選單分隔標誌。參考ModifyMenu函數
MF_SEPARATOR | 選單條目是一個分隔符
參數表
參數 | 類型及說明
hMenu | 選單句柄
wID | 欲檢查的選單條目的標識符。如果在wFlags參數中設置了MF_BYCOMMAND標誌，這個參數就用於指定要改變的選單條目的命令ID。如果設置的是MF_BYPOSITION標誌，這個參數就用於指定條目在選單中的位置（第一個條目的位置為0）
wFlags | 常數MF_BYCOMMAND或MF_BYPOSITION，取決於wID參數的設置


GetMenuString
VB聲明
Declare Function GetMenuString Lib "user32" Alias "GetMenuStringA" (ByVal hMenu As Long, ByVal wIDItem As Long, ByVal lpString As String, ByVal nMaxCount As Long, ByVal wFlag As Long) As Long
說明
取得指定選單條目的字串
返回值
Long，在lpString中返回的字串的長度（不包括空中止字符）。零意味著出錯
參數表
參數 | 類型及說明
hMenu | Long，選單句柄
wIDItem | Long，欲接收的選單條目的標識符。如果在wFlags參數中設置了MF_BYCOMMAND標誌，這個參數就用於指定要改變的選單條目的命令ID。如果設置的是MF_BYPOSITION標誌，這個參數就用於指定條目在選單中的位置（第一個條目的位置為0）
lpString | String，指定一個預先定義好的字串緩衝區，以便為選單條目裝載字串
nMaxCount | Long，載入lpString緩衝區中的最大字符數量+1
wFlag | Long，常數MF_BYCOMMAND或MF_BYPOSITION，取決於wID參數的設置


GetSubMenu
VB聲明
Declare Function GetSubMenu Lib "user32" Alias "GetSubMenu" (ByVal hMenu As Long, ByVal nPos As Long) As Long
說明
取得一個彈出式選單的句柄，它位於選單中指定的位置
返回值
Long，位於指定位置的彈出式選單的句柄（如果有的話）；否則返回零
參數表
參數 | 類型及說明
hMenu | Long，選單的句柄
nPos | Long，條目在選單中的位置。第一個條目的編號為0


GetSystemMenu
VB聲明
Declare Function GetSystemMenu Lib "user32" Alias "GetSystemMenu" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
說明
取得指定窗口的系統選單的句柄。在vb環境，「系統選單」的正式名稱為「控制選單」，即單擊窗口左上角的控制框時出現的選單
返回值
Long，如執行成功，返回系統選單的句柄；零意味著出錯。如bRevert設為TRUE，也會返回零（簡單的恢復原始的系統選單）
參數表
參數 | 類型及說明
hwnd | Long，窗口的句柄
bRevert | Long，如設為TRUE，表示接收原始的系統選單
註解
在vb裡使用：系統選單會向窗口發送一條WM_SYSCOMMAND消息，而不是WM_COMMAND消息


HiliteMenuItem
VB聲明
Declare Function HiliteMenuItem Lib "user32" Alias "HiliteMenuItem" (ByVal hwnd As Long, ByVal hMenu As Long, ByVal wIDHiliteItem As Long, ByVal wHilite As Long) As Long
說明
控制頂級選單條目的加亮顯示狀態
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
hwnd | Long，擁有頂級選單的一個窗口的句柄
hMenu | Long，hwnd窗口的頂級選單的句柄
wIDHiliteItem | Long，欲加亮或撤消加亮的選單條目的標識符。倘若在wHilite參數中設置了MF_BYCOMMAND標誌，這個參數就用於指定要改變的選單條目的命令ID。如果設置的是MF_BYPOSITION標誌，這個參數就用於指定條目在選單中的位置（第一個條目的位置為0）
wHilite | Long，一系列常數標誌的組合。其中包括MF_BYCOMMAND或MF_BYPOSITION，指出要改變的條目。也包括MF_HILITE，用於設置加亮狀態；或者MF_UNHILITE，用於撤消加亮狀態


InsertMenu
VB聲明
Declare Function InsertMenu Lib "user32" Alias "InsertMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
說明
在選單的指定位置處插入一個選單條目，並根據需要將其他條目向下移動
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hMenu | Long，選單的句柄
nPosition | Long，定義了新條目插入點的一個現有選單條目的標誌符。如果在wFlags中指定了MF_BYCOMMAND標誌，這個參數就代表欲改變的選單條目的命令ID。如設置的是MF_BYPOSITION標誌，這個參數就代表選單條目在選單中的位置，第一個條目的位置為零
wFlags | Long，一系列常數標誌的組合。參考ModifyMenu
wIDNewItem | Long，指定選單條目的新選單ID。如果在wFlags中指定了MF_POPUP標誌，就應該指定彈出式選單的一個句柄
lpNewItem | 如果在wFlags參數中設置了MF_STRING標誌，就代表要設置到選單中的字串（String）。如設置的是MF_BITMAP標誌，就代表一個Long型變量，其中包含了一個位圖句柄
註解
在vb裡使用：這個函數做出的許多改變都可以正常發揮作用，但卻不能由vb選單對像反映出來。添加的命令ID必須能由vb選單系統識別


InsertMenuItem
VB聲明
Declare Function InsertMenuItem Lib "user32" Alias "InsertMenuItemA" (ByVal hMenu As Long, ByVal un As Long, ByVal bool As Boolean, ByVal lpcMenuItemInfo As MENUITEMINFO) As Long
說明
用一個MENUITEMINFO結構指定的特徵插入一個新選單條目
返回值
Long，TRUE（非零）表示成功，否則返回零。會設置GetLastError
參數表
參數 | 類型及說明
hMenu | Long，選單的句柄
un | Long，選單條目的選單ID。新條目會插入由這個參數指定的項目之前
bool | Boolean，如un指定的是條目的位置，就為TRUE，如指定的是選單ID，就為FALSE
lpcMenuItemInfo | MENUITEMINFO，用於設置指定選單條目的特徵
註解


IsMenu
VB聲明
Declare Function IsMenu Lib "user32" Alias "IsMenu" (ByVal hMenu As Long) As Long
說明
判斷指定的句柄是否為一個選單的句柄
返回值
Long，如句柄是選單句柄，就返回TRUE；否則返回零
參數表
參數 | 類型及說明
hMenu | Long，欲測試的選單的句柄


LoadMenu
VB聲明
Declare Function LoadMenu Lib "user32" Alias "LoadMenuA" (ByVal hInstance As Long, ByVal lpString As String) As Long
說明
從指定的模塊或應用程序實例中載入一個選單
返回值
Long，已裝載的選單的句柄；零意味著出錯。會設置GetLastError
參數表
參數 | 類型及說明
hInstance | Long，一個動態鏈接庫的模塊句柄。或指定了特定可執行文件的一個實例句柄，那個可執行文件中包含了選單資源
lpString | String，作為字串使用時，指定欲載入的選單資源的名字；作為Long值使用時，指定欲載入的選單ID。
註解
在vb裡使用：由於vb不能控制那些不與現有vb選單兼容的選單，所以不建議使用這個函數


LoadMenuIndirect
VB聲明
Declare Function LoadMenuIndirect Lib "user32" Alias "LoadMenuIndirectA" (ByVal lpMenuTemplate As Long) As Long
說明
在包含了MENUITEMTEMPLATE數據結構的一個內存塊的基礎上，載入一個選單
返回值
Long，已載入的選單句柄，零意味著出錯。會設置GetLastError
參數表
參數 | 類型及說明
lpMenuTemplate | Long，指向一個MENUITEMTEMPLATEHEADER結構的指針。在內存中，該結構的後面跟隨有一個或多個MENUITEMTEMPLATE數據結構。在windows 95及windows nt 4.0中，可能是指向一個MENUEX_HEADER_TEMPLATE結構的指針；在那個結構後跟隨有一個或多個MENUEX_HEADER_ITEM結構，用於指定擴展選單


MenuItemFromPoint
VB聲明
Declare Function MenuItemFromPoint Lib "user32" Alias "MenuItemFromPoint" (ByVal hWnd As Long, ByVal hMenu As Long, ByVal ptScreen As POINTAPI) As Long
說明
判斷哪個選單條目包含了屏幕上一個指定的點
返回值
Long，包含了指定點的條目的位置。如果沒有選單條目包含了指定的點，就返回-1
參數表
參數 | 類型及說明
hWnd | Long，包含了指定選單的那個窗口的句柄
hMenu | Long，選單句柄
ptScreen | POINTAPI，點的位置。如hMenu是一個頂級選單條，這個點就用hWnd窗口的窗口坐標表示。否則，它採用窗口的客戶區坐標表示


ModifyMenu

ModifyMenu,ModifyMenuBynum
VB聲明
Declare Function ModifyMenu& Lib "user32" Alias "ModifyMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpString As String) Declare Function ModifyMenuBynum& Lib "user32" Alias "ModifyMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpString As Long)
說明
改變選單條目。在vb裡這個函數做出的許多改變都會有效的執行，但不能由vb選單對像反映出來
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hMenu | Long，選單句柄
nPosition | Long，欲改變的選單條目的標識符。如在wFlags參數中指定了MF_BYCOMMAND，這個參數就代表欲改變的選單條目的命令ID。如設置的是MF_BYPOSITION，這個參數就代表選單條目在選單中的位置（第一個條目的位置為零）
wFlags | Long，一系列常數標誌的組合。詳見選單常數標誌表
wIDNewItem | Long，指定選單條目的新命令ID。如在wFlags參數中指定了MF_POPUP標誌，就應是一個彈出式選單的句柄
lpString | String或Long，如在wFlags參數中指定了MF_STRING標誌，就代表欲設置到選單的字串。如設置的是MF_BITMAP，就代表一個Long變量，其中包含了一個位圖句柄。如設置的是MF_OWNERDRAW，那麼這個值就會包括到DRAWITEMSTRUCT和MEASUREITEMSTRUCT結構中，並由windows在條目需要重畫的時候發出
註解
標誌的下述組合形式是不允許的：MF_BYCOMMAND和MF_BYPOSITION；MF_CHECKED和MF_UNCHECKED；MF_MENUBARBREAK和MF_MENUBREAK；MF_DISABLED，MF_ENABLED和MF_GRAYED；MF_BITMAP，MF_STRING，MF_OWNERDRAW和MF_SEPARATOR
選單常數標誌表
MF_BITMAP | 選單條目是一幅位圖。一旦設入選單，這幅位圖就絕對不能刪除。所以不應該使用由vb的image屬性返回的值
MF_BYCOMMAND | 選單條目由選單的命令ID指定
MF_BYPOSITION | 選單條目由條目在選單中的位置決定。零代表選單中的第一個條目
MF_CHECKED | 檢查指定的選單條目。不能與vb的checked屬性兼容
MF_DISABLED | 禁止指定的選單條目。不與vb的enabled屬性兼容
MF_ENABLED | 允許指定的選單條目。不與vb的enabled屬性兼容
MF_GRAYED | 禁止指定的選單條目，並用淺灰色描述它。不與vb的enabled屬性兼容
MF_MENUBARBREAK | 在彈出式選單中，將指定的條目放置於一個新列，並用一條垂直線分隔不同的列
MF_MENUBREAK | 在彈出式選單中，將指定的條目放置於一個新列。在頂級選單中，將條目放置到一個新行
MF_OWNERDRAW | 創建一個物主繪圖選單（由您設計的程序負責描繪每個選單條目）
MF_POPUP | 將一個彈出式選單置於指定的條目。可用於創建子選單及彈出式選單
MF_SEPARATOR | 在指定的條目處顯示一條分隔線
MF_STRING | 在指定的條目處放置一個字串。不與vb的caption屬性兼容
MF_UNCHECKED | 檢查指定的條目。不能與vb的checked屬性兼容


RemoveMenu
VB聲明
Declare Function RemoveMenu Lib "user32" Alias "RemoveMenu" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
說明
刪除指定的選單條目。如刪除的條目屬於一個彈出式選單，那麼這個函數不會同時刪除彈出式選單。首先應該用GetSubMenu函數取得彈出式選單的句柄，再在以後將其刪除
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hMenu | Long，選單的句柄
nPosition | Long，欲改變的選單條目的標識符。如在wFlags參數中指定了MF_BYCOMMAND，這個參數就代表欲改變的選單條目的命令ID。如設置的是MF_BYPOSITION，這個參數就代表選單條目在選單中的位置（第一個條目的位置為零）
wFlags | Long，常數MF_BYCOMMAND或MF_BYPOSITION，取決於nPosition參數
註解
強烈建議大家使用vb選單的visible屬性從選單中刪除條目，而不要用這個函數，否則會造成指定選單中其他選單條目的visible屬性對錯誤的選單條目產生影響


SetMenu
VB聲明
Declare Function SetMenu Lib "user32" Alias "SetMenu" (ByVal hwnd As Long, ByVal hMenu As Long) As Long
說明
設置窗口選單
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，窗口的句柄
hMenu | Long，窗口的新選單的句柄
註解
不建議在vb裡使用這個函數。如堅持使用，務必留意新選單中的命令ID並不兼容於原始的vb窗口。只有窗體窗口才應通過這個函數指定。窗口的前一個選單不會由這個函數刪除


SetMenuContextHelpId
VB聲明
Declare Function SetMenuContextHelpId Lib "user32" Alias "SetMenuContextHelpId" (ByVal hMenu As Long, ByVal dw As Long) As Long
說明
設置用SetMenuContextHelpId函數分配給一個選單的幫助場景ID
返回值
Long，TRUE（非零）表示成功，否則返回零
參數表
參數 | 類型及說明
hMenu | Long，選單的句柄
dw | Long，要設置的幫助場景ID
註解
用這個函數設置的場景ID並不對應於用vb選單欄設計程序分配的場景ID。vb在內部保存有它自己的幫助場景ID。vb的幫助場景ID應是我們優先考慮的方案。盡可能不要用這個函數


選單類3

選單函數：共三頁。 第一頁 ， 第二頁 ，第三頁
SetMenuDefaultItem | 將一個選單條目設為默認條目
SetMenuItemBitmaps | 設置一幅特定位圖，令其在指定的選單條目中使用，代替標準的復選符號（√）
SetMenuItemInfo | 為一個選單條目設置指定的信息
TrackPopupMenu | 在屏幕的任意地方顯示一個彈出式選單
TrackPopupMenuEx | 與TrackPopupMenu相似，只是它提供了額外的功能
完


SetMenuDefaultItem
VB聲明
Declare Function SetMenuDefaultItem Lib "user32" Alias "SetMenuDefaultItem" (ByVal hMenu As Long, ByVal uItem As Long, ByVal fByPos As Long) As Long
說明
將一個選單條目設為默認條目。這個條目會轉換成雙擊選單時執行的操作
返回值
Long，TRUE（非零）表示成功，否則返回零。會設置GetLastError
參數表
參數 | 類型及說明
hMenu | Long，選單句柄
uItem | Long，欲設為默認選單條目的一個條目的位置或選單ID。如果為-1，表示清除當前的默認條目
fByPos | Long，如uItem是條目的位置，就為TRUE；如果是選單ID，就為FALSE


SetMenuItemBitmaps
VB聲明
Declare Function SetMenuItemBitmaps Lib "user32" Alias "SetMenuItemBitmaps" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal hBitmapUnchecked As Long, ByVal hBitmapChecked As Long) As Long
說明
設置一幅特定位圖，令其在指定的選單條目中使用，代替標準的復選符號（√）。位圖的大小必須與選單復選符號的正確大小相符，這個正確大小可以由GetMenuCheckMarkDimensions函數獲得
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hMenu | Long，選單句柄
nPosition | Long，欲設置位圖的一個選單條目的標識符。如在wFlags參數中指定了MF_BYCOMMAND，這個參數就代表欲改變的選單條目的命令ID。如設置的是MF_BYPOSITION，這個參數就代表選單條目在選單中的位置（第一個條目的位置為零）
wFlags | Long，常數MF_BYCOMMAND或MF_BYPOSITION，取決於nPosition參數
hBitmapUnchecked | Long，撤消復選時為選單條目顯示的一幅位圖的句柄。如果為零，表示不在未復選狀態下顯示任何標誌
hBitmapChecked | Long，復選時為選單條目顯示的一幅位圖的句柄。可設為零，表示復選時不顯示任何標誌。如兩個位圖句柄的值都是零，則為這個條目恢復使用默認復選位圖
註解
使用的位圖可能由多個條目共享。一旦不再需要，位圖必須由應用程序清除，因為windows不能自動對它進行清除


SetMenuItemInfo
VB聲明
Declare Function SetMenuItemInfo Lib "user32" Alias "SetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal bool As Boolean, lpcMenuItemInfo As MENUITEMINFO) As Long
說明
為一個選單條目設置指定的信息，具體信息保存於MENUITEMINFO結構中
返回值
Long，TRUE（非零）表示成功，否則返回零。會設置GetLastError
參數表
參數 | 類型及說明
hMenu | Long，選單句柄
un | Long，選單條目的選單ID或位置
bool | Boolean，如un指定了條目的位置，就為TRUE；如指定的是選單ID，就為FALSE
lpcMenuItemInfo | MENUITEMINFO，用於設置目標選單條目的特徵


TrackPopupMenu

TrackPopupMenu, TrackPopupMenuBynum
VB聲明
Declare Function TrackPopupMenu& Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal nReserved As Long, ByVal hwnd As Long, lprc As Rect) Declare Function TrackPopupMenuBynum& Lib "user32" Alias "TrackPopupMenu" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal nReserved As Long, ByVal hwnd As Long, ByVal lprc As Long)
說明
在屏幕的任意地方顯示一個彈出式選單
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hMenu | Long，彈出式選單的句柄
wFlags | Long，位置標誌和滑鼠追蹤標誌的組合，見下表
 | 位置標誌 | 說明
 | TPM_CENTERALIGN | 選單在指定位置水平居中
 | TPM_LEFTALIGN | 選單的左側置於水平x坐標處
 | TPM_RIGHTALIGN | 選單的右側置於水平x坐標處
 | TPM_LEFTBUTTON | 滑鼠左鍵標準運作方式
 | TPM_RIGHTBUTTON | 用滑鼠右鍵進行選單追蹤
x,y | Long，這個點指定了彈出式選單在屏幕坐標系統中的位置
nReserved | Long，未使用，設為零
hwnd | Long，用於接收彈出式選單命令的窗口的句柄。應該使用窗體的窗口句柄——窗體中有一個選單能像彈出式選單那樣接收相同的命令ID集
lprc | Rect，用屏幕坐標定義的一個矩形，如用戶在這個矩形的範圍內單擊，則彈出式選單不會關閉。如單擊彈出式選單之外的任何一個地方，則會關閉選單。可以設為NULL
註解
用這個函數創建的選單，選單中的命令ID並不與vb期望的那些相符


TrackPopupMenuEx
VB聲明
Declare Function TrackPopupMenuEx Lib "user32" Alias "TrackPopupMenuEx" (ByVal hMenu As Long, ByVal un As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal hWnd As Long, lpTPMParams As TPMPARAMS) As Long
說明
與TrackPopupMenu相似，只是它提供了額外的功能
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hMenu | Long，彈出式選單的句柄
un | Long，定位標誌和滑鼠追蹤標誌的組合。參考TrackPopupMenu，另外還包括兩個標誌：TPM_HORIZONTAL或TPM_VERTICAL。參考lpTPMParams參數的說明
n1,n2 | Long，定義了彈出式選單位置的一個x,y點（n1,n2），用屏幕坐標表示
hWnd | Long，用於接收彈出式選單命令的窗口的句柄。應該使用特定窗體的窗口句柄，該窗體有一個選單能夠與彈出式選單一樣接收相同的命令ID集
lpTPMParams | TPMPARAMS，指向一個TPMPARAMS結構的指針。這個結構包含了一個矩形，規定了不能由這個彈出式選單覆蓋的區域。如果在un參數中指定了TPM_HORIZONTAL標誌，windows就會試著設置水平位置，將彈出式選單垂直移到這個矩形的外部。如指定了TPM_VERTICAL，那麼windows會試著水平移動彈出式選單的位置


文本和字體類1

文本和字體函數，共三頁。第一頁， 第二頁 ， 第三頁
AddFontResource | 在Windows系統中添加一種字體資源
CreateFont | 用指定的屬性創建一種邏輯字體
CreateFontIndirect | 用指定的屬性創建一種邏輯字體
CreateScalableFontResource | 為一種TureType字體創建一個資源文件，以便能用API函數AddFontResource將其加入Windows系統
DrawText | 將文本描繪到指定的矩形中
DrawTextEx | 與DrawText相似，只是加入了更多的功能
EnumFontFamilies | 列舉指定設備可用的字體
EnumFontFamiliesEx | 列舉指定設備可用的字體
EnumFonts | 列舉指定設備可用的字體
ExtTextOut | 經過擴展的文本描繪函數。也請參考SetTextAlign函數
GetAspectRatioFilterEx | 用SetMapperFlags要求Windows只選擇與設備當前縱橫比相符的光柵字體時，本函數可判斷縱橫比大小
GetCharABCWidths | 判斷TureType字體中一個或多個字符的A-B-C大小
GetCharABCWidthsFloat | 查詢一種字體中一個或多個字符的A-B-C尺寸
GetCharacterPlacement | 該函數用於瞭解如何用一個給定的字符顯示一個字串
GetCharWidth | 調查字體中一個或多個字符的寬度
GetFontData | 接收一種可縮放字體文件的數據


AddFontResource
VB聲明
Declare Function AddFontResource Lib "gdi32" Alias "AddFontResourceA" (ByVal lpFileName As String) As Long
說明
在Windows系統中添加一種字體資源。添加完畢後，該字體即可由任何Windows應用程序調用
返回值
Long，添加的字體數量，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpFileName | String，字體資源文件的文件名。可以是.FON， .FNT， .TTF 或 .FOT文件
註解

添加了一種資源後必須調用下述API函數：
di% = SendMessageBynum(HWND_BROADCAST, WM_FONTCHANGE, x, y)
其中，HWND_BROADCAST、WM_FONTCHANGE使用來自API32.TXT文件的值。這樣便可告訴所有Windows應用程序字體列表已發生了變化

示例
Call AddFontResource("myfont.ttf")
Call SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0)


CreateFont
VB聲明
Declare Function CreateFont Lib "gdi32" Alias "CreateFontA" (ByVal H As Long, ByVal W As Long, ByVal E As Long, ByVal O As Long, ByVal W As Long, ByVal I As Long, ByVal u As Long, ByVal S As Long, ByVal C As Long, ByVal OP As Long, ByVal CP As Long, ByVal Q As Long, ByVal PAF As Long, ByVal F As String) As Long
說明
用指定的屬性創建一種邏輯字體
返回值
Long，執行成功則返回邏輯字體的句柄，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
H | Long，IfHeight
W | Long，IfWidth
E | Long，IfEscapement
O | Long，IfOrientation
W | Long，IfWeight
I | Long，IfItalic
u | Long，IfUnderline
S | Long，IfStrikeOut
C | Long，IfCharSet
OP | Long，IfOutputPrecision
CP | Long，IfClipPrecision
Q | Long，IfQuality
PAF | Long，IfPitchAndFamily
F | String，IfFaceName
註解
VB的字體屬性在選擇字體的時候顯得更有效


CreateFontIndirect
VB聲明
Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As Long
說明
用指定的屬性創建一種邏輯字體
返回值
Long，執行成功則返回邏輯字體句柄，零表示失敗
參數表
參數 | 類型及說明
lpLogFont | LOGFONT，這個結構定義了邏輯字體請求的屬性
註解
VB的字體屬性在選擇字體的時候顯得更有效


CreateScalableFontResource
VB聲明
Declare Function CreateScalableFontResource Lib "gdi32" Alias "CreateScalableFontResourceA" (ByVal fHidden As Long, ByVal lpszResourceFile As String, ByVal lpszFontFile As String, ByVal lpszCurrentPath As String) As Long
說明
為一種TureType字體創建一個資源文件，以便能用API函數AddFontResource將其加入Windows系統。字體信息本身並不複製到字體資源文件中；相反，資源文件中包含了欲使用的TureType文件的名字
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
fHidden | Long，如果是零，表示創建一個普通的字體資源；如果是1，表示創建一個只讀字體資源，它只能在文檔中嵌入使用
lpszResourceFile | String，欲創建的資源文件的名字。普通文件使用.FOT擴展名，只讀文件使用.FOR擴展名
lpszFontFile | String，TureType字體文件文件的文件名。如果其中包含了一個路徑，就到指定的路徑尋找字體文件，同時不使用lpszCurrentPath參數指定的位置。而且在調用AddFontResource函數之前，會將字體複製到Windows的SYSTEM目錄
lpszCurrentPath | String，由lpszFontFile參數決定


DrawText
VB聲明
Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long
說明
將文本描繪到指定的矩形中
返回值
Long，描繪文字的高度
參數表
參數 | 類型及說明
hdc | Long，欲在其中顯示文字的一個設備場景的句柄
lpStr | String，欲描繪的文本字串
nCount | Long，欲描繪的字符數量。如果要描繪整個字串（直到空中止符），則可將這個參數設為-1
lpRect | RECT，指定用於繪圖的一個格式化矩形（採用邏輯坐標）
wFormat | Long，一個標誌位數組，決定了以何種形式執行繪圖。參考下面總結的常數類型列表
 | 標誌常數 | 說明
 | DT_BOTTOM | 必須同時指定DT_SINGLE。指示文本對齊格式化矩形的底邊
 | DT_CALCRECT | 象下面這樣計算格式化矩形：多行繪圖時矩形的底邊根據需要進行延展，以便容下所有文字；單行繪圖時，延展矩形的右側。不描繪文字。由lpRect參數指定的矩形會載入計算出來的值
 | DT_CENTER | 文本垂直居中
 | DT_EXPANDTABS | 描繪文字的時候，對製表站進行擴展。默認的製表站間距是8個字符。但是，可用DT_TABSTOP標誌改變這項設定
 | DT_EXTERNALLEADING | 計算文本行高度的時候，使用當前字體的外部間距屬性（the external leading attribute）
 | DT_LEFT | 文本左對齊
 | DT_NOCLIP | 描繪文字時不剪切到指定的矩形
 | DT_NOPREFIX | 通常，函數認為 & 字符表示應為下一個字符加上下劃線。該標誌禁止這種行為
 | DT_RIGHT | 文本右對齊
 | DT_SINGLELINE | 只畫單行
 | DT_TABSTOP | 指定新的製表站間距，採用這個整數的高8位
 | DT_TOP | 必須同時指定DT_SINGLE。指示文本對齊格式化矩形的頂部
 | DT_VCENTER | 必須同時指定DT_SINGLE。指示文本對齊格式化矩形的中部
 | DT_WORDBREAK | 進行自動換行。如用SetTextAlign函數設置了TA_UPDATECP標誌，這裡的設置則無效


DrawTextEx
VB聲明
Declare Function DrawTextEx Lib "user32" Alias "DrawTextExA" (ByVal hDC As Long, ByVal lpsz As String, ByVal n As Long, lpRect As RECT, ByVal un As Long, lpDrawTextParams As DRAWTEXTPARAMS) As Long
說明
與DrawText相似，只是加入了更多的功能
返回值
Long，描繪文字的高度
參數表
參數 | 類型及說明
hDC | Long，要在其中繪圖的一個設備場景的句柄
lpsz | String，欲描繪的文本字串
n | Long，欲描繪的字符數量。如果要描繪整個字串（直到空中止符），則可將這個參數設為-1
lpRect | RECT，指定用於繪圖的一個格式化矩形（採用邏輯坐標）
un | Long，一個標誌位。決定了以何種形式執行繪圖。參考DrawText的wFormat參數和下表。其中下表列出的是新增的常數
 | 標誌常數 | 說明
 | DT_EDITCONTROL | 對一個多行編輯控件進行模擬。不顯示部分可見的行
 | DT_ENDELLIPSES | 倘若字串不能在矩形裡全部容下，就在末尾顯示省略號
 | DT_PATHELLIPSES | 如字串包含了 \ 字符，就用省略號替換字串內容，使其能在矩形中全部容下。例如，一個很長的路徑名可能換成這樣顯示——c:\windows\...\doc\readme.txt
 | DT_MODIFYSTRING | 如指定了DT_ENDELLIPSES 或 DT_PATHELLIPSES，就會對字串進行修改，使其與實際顯示的字串相符
 | DT_RTLREADING | 如選入設備場景的字體屬於希伯來或阿拉伯語系，就從右到左描繪文字
lpDrawTextParams | DRAWTEXTPARAMS，這個結構包含了附加的繪圖參數


EnumFontFamilies
VB聲明
Declare Function EnumFontFamilies Lib "gdi32" Alias "EnumFontFamiliesA" (ByVal hdc As Long, ByVal lpszFamily As String, ByVal lpEnumFontFamProc As Long, ByVal lParam As Long) As Long
說明
列舉指定設備可用的字體
返回值
Long，由回調函數返回的前一個值
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
lpszFamily | String，欲枚舉的字體家族。如指定 vbNullString，可枚舉出每種可用字體家族中的一種字體
lpEnumFontFamProc | Long，欲調用的函數地址。這個地址是用 AddressOf 運算符為來自一個標準模塊的函數進行操作，或者利用某個回調控件得到
lParam | Long，指定希望傳遞給回調函數的一個用戶自定義值
註解
這個函數取代了API函數 EnumFonts，因為它能對TureType字體樣式說明進行控制 只有實際存在的字體才會列舉出來，那些可由GDI合成的字體不會列出


EnumFontFamiliesEx
VB聲明
Declare Function EnumFontFamiliesEx Lib "gdi32" Alias "EnumFontFamiliesExA" (ByVal hdc As Long, lpLogFont As LOGFONT, ByVal lpEnumFontProc As Long, ByVal lParam As Long, ByVal dw As Long) As Long
說明
根據一個LOGFONT結構提供的信息，列舉指定設備可用的字體
返回值
Long，由回調函數返回的前一個值
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
lpLogFont | LOGFONT，這個結構指定了欲枚舉的字體。此時用到的字段包括：lfCharSet， lfFaceName 和 lfPitchAndFamily。其他所有字段都會忽略
lpEnumFontFamProc | Long，欲調用的函數地址。這個地址是用 AddressOf 運算符為來自一個標準模塊的函數進行操作，或者利用某個回調控件得到
lParam | Long，指定希望傳遞給回調函數的一個用戶自定義值
dw | Long，保留，設為零
註解
參見EnumFontFamilies函數的註解


EnumFonts
VB聲明
Declare Function EnumFonts Lib "gdi32" Alias "EnumFontsA" (ByVal hDC As Long, ByVal lpsz As String, ByVal lpFontEnumProc As Long, ByVal lParam As Long) As Long
說明
列舉指定設備可用的字體
註解

該函數使用的參數與EnumFontFamilies函數是一樣的，工作原理也大致相同。只是EnumFontFamilies會利用ENUMLOGFONT 和 NEWTEXTMETRIC結構向回調函數傳遞附加的信息，而不是使用LOGFONT 和 TEXTMETRIC結構。請參考EnumFontFamilies函數，那裡有更詳細的解釋


ExtTextOut
VB聲明
Declare Function ExtTextOut Lib "gdi32" Alias "ExtTextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal wOptions As Long, lpRect As Rect, ByVal lpString As String, ByVal nCount As Long, lpDx As Long) As Long
說明
經過擴展的文本描繪函數。也請參考SetTextAlign函數
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
x,y | Long，以邏輯坐標表示的一個點，指定了繪圖起點
wOptions | Long，下述標誌常數的任意組合
 | ETO_CLIPPED | 將文本剪切出指定的矩形
 | ETO_GLPYH_INDEX | lpString是一個字樣索引表。參考對GetCharacterPlacement函數的說明。只適用於Win95
 | ETO_OPAQUE | 在正式描繪文本前，用當前的背景色填充矩形
lpRect | Rect，指定一個矩形，用於對文本進行格式化處理。可指定長整數0，在不用矩形區域的前提下描繪文本
lpString | String，欲描繪的字串
nCount | Long，字串中要顯示出來的字符數
lpDx | Long，如果不是零，這個參數就代表指向一個Long值數組的指針。該數組對每一對字符的間距進行了說明（採用邏輯單位）。其中第一個條目是第一和第二個字符的間距；第二個條目是第二和第三個字符的間距；以此類推。如果為零，函數就使用字體的默認間距設置


GetAspectRatioFilterEx
VB聲明
Declare Function GetAspectRatioFilterEx Lib "gdi32" Alias "GetAspectRatioFilterEx" (ByVal hdc As Long, lpAspectRatio As SIZE) As Long
說明
我們可用SetMapperFlags函數要求Windows只選擇與設備當前縱橫比相符的光柵字體。這個函數可判斷那種特殊選擇過程中使用的縱橫比是多大
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，一個設備場景的句柄
lpAspectRatio | SIZE，用於裝載縱橫比的一個結構


GetCharABCWidths
VB聲明
Declare Function GetCharABCWidths Lib "gdi32" Alias "GetCharABCWidthsA" (ByVal hdc As Long, ByVal uFirstChar As Long, ByVal uLastChar As Long, lpabc As ABC) As Long
說明
判斷TureType字體中一個或多個字符的A-B-C大小
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
uFirstChar | Long，欲調查A-B-C尺寸的第一個字符的ASCII值
uLastChar | Long，欲調查A-B-C尺寸的最後一個字符的ASCII值
lpabc | ABC，在ABC結構數組中的第一個條目。這個數組填充了指定的字符大小設置。該數組的長度必須足夠大，足以容下要求的所有字符
註解
對於非TureType字體用GetCharWidth函數


GetCharABCWidthsFloat
VB聲明
Declare Function GetCharABCWidthsFloat Lib "gdi32" Alias "GetCharABCWidthsFloatA" (ByVal hdc As Long, ByVal iFirstChar As Long, ByVal iLastChar As Long, lpABCF As ABCFLOAT) As Long
說明
查詢一種字體中一個或多個字符的A-B-C尺寸
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
iFirstChar | Long，欲調查A-B-C尺寸的第一個字符的ASCII值
iLastChar | Long，欲調查A-B-C尺寸的最後一個字符的ASCII值
lpABCF | ABCFLOAT，在ABCFLOAT結構數組中的第一個條目。這個數組填充了指定的字符大小設置。該數組的長度必須足夠大，足以容下要求的所有字符
註解
和GetCharABCWidths不同，這個函數適用於任何字符。ABC值是以浮點數的形式返回的，而且可能不是整數——具體取決於用這個函數處理非TureType字體時採用的轉換方式
適用平台
Windows NT


GetCharacterPlacement
VB聲明
Declare Function GetCharacterPlacement Lib "gdi32" Alias " GetCharacterPlacementA" (ByVal hdc As Long, ByVal lpsz As String, ByVal n1 As Long, ByVal n2 As Long, lpGcpResults As GCP_RESULTS, ByVal dw As Long) As Long
說明
該函數用於瞭解如何用一個給定的字符顯示一個字串
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
lpsz | String，欲分析的字串
n1 | Long，字串的長度
n2 | Long，若在dw參數中指定了GCP_MAXEXTENT常數，那麼一旦顯示的字串超出了由該參數指定的寬度（用邏輯單位），函數就會停止處理字串
lpGcpResults | GCP_RESULTS，在這個結構中裝載為這個字串計算出來的信息
dw | Long，下述常數的一個或多個：
 | GCP_CLASSIN | lpGcpResults結構中的lpClass數組包含了字串中各字符的分類信息
 | GCP_DIACRITIC | 在計算時將發音符和「廢」字符考慮在內
 | GCP_DISPLAYZWG | 顯示某些字符集中使用的不可見字符，根據它們在一個詞中的位置修改字符
 | GCP_GLPYPHSHAPE | 允許對字樣（字面）進行特殊處理。根據GetFontLanguageInfo函數的結果使用
 | GCP_JUSTIFY | 調整字樣位置，對字串進行對齊處理，使其與n2參數指定的範圍相符
 | GCP_JUSTIFYIN | lpGcpResults結構中的lpDX參數包含了計算過程中使用的對齊粗細設置
 | GCP_LIGATE | 如當前字體支持，就用連字技術將字符合併成單獨一個字符
 | GCP_MAXEXTENT | 請參考對n2參數的說明
 | GCP_USERKERNING | 計算字符位置時，使用字距表（如果有的話）可用其他標誌對希伯來和阿拉伯字體進行特殊處理。這類語言按照從右到左的順序顯示文字，而且具體顯示的字樣由字符在一個詞中的位置決定


GetCharWidth

GetCharWidth, GetCharWidth32, GetCharWidthFloat
VB聲明
Declare Function GetCharWidth& Lib "gdi32" Alias "GetCharWidthA" (ByVal hDC As Long, ByVal iFirstChar As Long, ByVal iLastChar As Long, lpBuffer As Long) Declare Function GetCharWidth32& Lib "gdi32" Alias "GetCharWidth32A" (ByVal hdc As Long, ByVal iFirstChar As Long, ByVal iLastChar As Long, lpBuffer As Long) Declare Function GetCharWidthFloat& Lib "gdi32" Alias "GetCharWidthFloatA" (ByVal hdc As Long, ByVal iFirstChar As Long, ByVal iLastChar As Long, pxBuffer As Single)
說明
調查字體中一個或多個字符的寬度。在Win32環境中，請使用GetCharWidth32函數。用GetCharWidthFloat則可獲得小數寬度
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hDC | Long，設備場景的句柄
iFirstChar | Long，要調查寬度的第一個字符的ASCII值
iLastChar | Long，要調查寬度的最後一個字符的ASCII值
lpBuffer | Long，指定Long值數組的第一個條目。該數組容納了字體的字符寬度設置
pxBuffer | Single，指定Single值數組的第一個條目。該數組容納了字體的字符寬度設置
註解
對於TureType字體，GetCharABCWidths可獲得更詳細的信息


GetFontData
VB聲明
Declare Function GetFontData Lib "gdi32" Alias "GetFontDataA" (ByVal hdc As Long, ByVal dwTable As Long, ByVal dwOffset As Long, lpvBuffer As Any, ByVal cbData As Long) As Long
說明
接收一種可縮放字體文件的數據。隨後，可用這些數據將字體信息嵌入一個文檔。如果需要在文檔使用一種特殊字體，同時這種字體在大多數系統中都不常見，而且程序員希望文檔無論如何都要顯示這種字體，那麼這種技術就相當有用了
在VB裡使用
未經測試
Use with VB:Untested


文本和字體類2

文本和字體函數，共三頁。 第一頁 ，第二頁， 第三頁
GetFontLanguageInfo | 返回目前選入指定設備場景中的字體的信息
GetGlyphOutline | 取得TureType字體中構成一個字符的曲線信息
GetKerningPairs | 取得指定字體的字距信息
GetOutlineTextMetrics | 接收與TureType字體內部特徵有關的詳細信息
GetRasterizerCaps | 瞭解系統是否有能力支持可縮放的字體
GetTabbedTextExtent | 判斷一個字串佔據的範圍，同時考慮製表站擴充的因素
GetTextAlign | 接收一個設備場景當前的文本對齊標誌
GetTextCharacterExtra | 判斷額外字符間距的當前值
GetTextCharset | 接收當前選入指定設備場景的字體的字符集標識符
GetTextCharsetInfo | 獲取與當前選定字體的字符集有關的詳細信息
GetTextColor | 判斷當前字體顏色。通常也稱為「前景色」
GetTextExtentExPoint | 判斷要填入指定區域的字符數量。也用一個數組裝載每個字符的範圍信息
GetTextExtentPoint | 判斷一個字串的大小（範圍）
GetTextFace | 獲取一種字體的字樣名
GetTextMetrics | 獲取與選入一種設備場景的物理字體有關的信息
GrayString | 描繪一個以灰色顯示的字串。通常由Windows用於標識禁止狀態


GetFontLanguageInfo
VB聲明
Declare Function GetFontLanguageInfo Lib "gdi32" Alias "GetFontLanguageInfo" (ByVal hdc As Long) As Long
說明
返回目前選入指定設備場景中的字體的信息
返回值
Long，如返回零，表示是簡單字體；GCP_ERROR表示出錯。否則，返回下述一個或多個標誌：
GCP_DBCS | 雙字節字符集
GCP_DIACRITIC | 字體包含了發音字符
FLI_GLYPHS | 字體包含了通常不會顯示出來的字樣
GCP_GLYPHSHAPE | 字體包含了特殊字符，用於字樣顯示由除字符值以外的其他因素決定的場合。例如顯示字樣由一個字符在單詞中位置決定，或者顯示單個「連字」，指出這是兩個字符值的組合
GCP_KASHIDA | 在阿拉伯字體中使用
GCP_LIGATE | 字體包含了連字字樣
GCP_USERKERNING | 字體包含了字距表
GCP_REORDER | 字體必須記錄下來，以便正確顯示。隨同希伯來和阿拉伯字體使用
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
註解
從這個函數返回的值可用於設置GetCharacterPlacement函數的標誌


GetGlyphOutline
VB聲明
Declare Function GetGlyphOutline Lib "gdi32" Alias "GetGlyphOutlineA" (ByVal hdc As Long, ByVal uChar As Long, ByVal fuFormat As Long, lpgm As GLYPHMETRICS, ByVal cbBuffer As Long, lpBuffer As Any, lpmat2 As MAT2) As Long
說明
取得TureType字體中構成一個字符的曲線信息。主要用於將文本轉換成曲線，以及用於字體的特殊處理（比如造字程序。無論如何，都要求程序員掌握高深的字體技術）。請參考由微軟發佈的TureType字體規格書，其中對這個字體進行了更詳細的解釋


GetKerningPairs
VB聲明
Declare Function GetKerningPairs Lib "gdi32" Alias "GetKerningPairsA" (ByVal hdc As Long, ByVal cPairs As Long, lpkrnpair As KERNINGPAIR) As Long
說明
取得指定字體的字距信息
返回值
Long，返回的字距對數量，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
cPairs | Long，KERNINGPAIR結構在數組中的數量，由lpkrnpair參數指定。如果將這個參數與lpkrnpair設置成零，可判斷出字距表的大小
lpkrnpair | KERNINGPAIR，指定KERNINGPAIR結構數組中的第一個條目
註解
參考KERNINGPAIR 返回以後，結構會針對數組中的每個條目象下面這樣設置字段： wFirst指定一個雙字符序列的第一個字符；wSecond指定第二個字符。iKernAmount字段指定指定這兩個字符的字間距。 例如，假設第一個字符是"f"，第二個是"i"。那麼在這兩個字符一個緊接一個顯示出來時，字間距就是添加到默認字符間距上的一個邏輯距離。這個值通常為負，因為系統通常會令兩個字符靠得更近


GetOutlineTextMetrics
VB聲明
Declare Function GetOutlineTextMetrics Lib "gdi32" Alias "GetOutlineTextMetricsA" (ByVal hdc As Long, ByVal cbData As Long, lpotm As OUTLINETEXTMETRIC) As Long
說明
接收與TureType字體內部特徵有關的詳細信息。請參考微軟公司發佈的TureType字體規格文件，它提供了這個函數的進一步信息


GetRasterizerCaps
VB聲明
Declare Function GetRasterizerCaps Lib "gdi32" Alias "GetRasterizerCaps" (lpraststat As RASTERIZER_STATUS, ByVal cb As Long) As Long
說明
瞭解系統是否有能力支持可縮放的字體。利用得到的結果，可判斷那種系統中是否允許使用TureType字體
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpraststat | RASTERIZER_STATUS，這個結構用於裝載光柵信息
cb | Long，欲複製到結構中的字符數
註解
結構目前的大小是6個字符，並包含在RASTERIZER_STATUS結構的第一個整數中


GetTabbedTextExtent
VB聲明
Declare Function GetTabbedTextExtent Lib "user32" Alias "GetTabbedTextExtentA" (ByVal hdc As Long, ByVal lpString As String, ByVal nCount As Long, ByVal nTabPositions As Long, lpnTabStopPositions As Long) As Long
說明
判斷一個字串佔據的範圍，同時考慮製表站擴充的因素。也請參考TabbedTextOut函數
返回值
Long，低16位包含了文本寬度，採用設備場景的邏輯坐標表示。高16位則包含了文本高度。零意味著出錯
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
lpString | String，欲計算的字串
nCount | Long，字串中的字符數
nTabPositions | Long，lpnTabStopPositions數組中的製表站數量。如果是零，則lpnTabStopPositions也應是NULL（需另行創建一個函數聲明，將這個參數聲明成ByVal nTabPositions&）。在這種情況下，製表站會根據當前字體的平均字符寬度，設置成默認的8字符間距。如nTabPositions是1，那麼製表站間距就會以lpnTabStopPositions數組的第一個條目為準
lpnTabStopPositions | Long，指定製表站位置數組的第一個條目。這種位置是按升序用設備坐標指定的
註解
進行這種計算的時候，剪切區不會考慮在內


GetTextAlign
VB聲明
Declare Function GetTextAlign Lib "gdi32" Alias "GetTextAlign" (ByVal hdc As Long) As Long
說明
接收一個設備場景當前的文本對齊標誌
返回值
Long，當前的文本對齊標誌。GDI_ERROR表示失敗。會設置GetLastError。文本的對齊方法由幾個常數的組合決定。其中每個常數都來自下述不同的組別。參考下面總結的文本對齊標誌
水平對齊標誌 | TA_CENTER | 文本在約束矩形內居中顯示
 | TA_LEFT | 文本在約束矩形內左對齊（默認設置）
 | TA_RIGHT | 文本在約束矩形內右對齊
垂直對齊標誌 | 定義文本輸出函數的Y參數的含義
 | TA_BASELINE | Y參數指定字體基線的位置
 | TA_BOTTOM | Y參數指定約束矩形底邊的位置
 | TA_TOP | Y參數指定約束矩形頂邊的位置（默認設置）
當前位置 | TA_NOUPDATECP | 文本輸出函數不使用設備場景當前的繪圖位置
 | TA_UPDATECP | 文本輸出函數使用設備場景當前的繪圖位置。完成繪圖後，輸出函數會對當前位置進行更新。文本輸出函數的X和Y參數會被忽略——繪圖會以當前位置為起點
其他 | TA_RTLREADING | 文本輸出從右到左進行。僅在Windows95下適用於希伯來和阿拉伯字體
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
註解
參考對SetTextAlign函數的說明，進一步瞭解文本對齊標誌的情況


GetTextCharacterExtra
VB聲明
Declare Function GetTextCharacterExtra Lib "gdi32" Alias "GetTextCharacterExtraA" (ByVal hdc As Long) As Long
說明
判斷額外字符間距的當前值。請參考SetTextCharacterExtra函數，瞭解進一步的情況
返回值
Long，返回Windows描繪文本時於字符間添加的額外空間大小
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄


GetTextCharset
VB聲明
Declare Function GetTextCharset Lib "gdi32" Alias "GetTextCharset" (ByVal hdc As Long) As Long
說明
接收當前選入指定設備場景的字體的字符集標識符
返回值
Long，字符集標識符。DEFAULT_CHARSET代表默認字符集；-1表示出錯
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄


GetTextCharsetInfo
VB聲明
Declare Function GetTextCharsetInfo Lib "gdi32" Alias "GetTextCharsetInfo" (ByVal hdc As Long, lpSig As FONTSIGNATURE, ByVal dwFlags As Long) As Long
說明
獲取與當前選定字體的字符集有關的詳細信息
返回值
Long，字符集標識符。DEFAULT_CHARSET代表默認字符集；-1表示出錯
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
lpSig | FONTSIGNATURE，用於裝載字符集信息的結構。有關Unicode字體簽名（signature）的資料可在Unicode規格文件中找到
dwFlags | Long，已保留，設為零


GetTextColor
VB聲明
Declare Function GetTextColor Lib "gdi32" Alias "GetTextColor" (ByVal hdc As Long) As Long
說明
判斷當前字體顏色。通常也稱為「前景色」
返回值
Long，文字的當前RGB顏色設置。如果出錯，會返回CLR_INVALID。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
註解
在VB裡用ForeColor屬性設置圖片控件和窗體


GetTextExtentExPoint
VB聲明
Declare Function GetTextExtentExPoint Lib "gdi32" Alias "GetTextExtentExPointA" (ByVal hdc As Long, ByVal lpszStr As String, ByVal cchString As Long, ByVal nMaxExtent As Long, lpnFit As Long, alpDx As Long, lpSize As SIZE) As Long
說明
判斷要填入指定區域的字符數量。也用一個數組裝載每個字符的範圍信息
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
lpszStr | String，準備量度其範圍的字串
cchString | Long，lpszStr字串的長度
nMaxExtent | Long，採用邏輯單位表示的水平範圍
lpnFit | Long，在其中保存欲填充到指定區域的字符數量。可以為NULL（用一個別名化的聲明來設置ByVal As Long）——此時會忽略nMaxExtent設置
As | Long，cchString數組的第一個條目。每個條目都要保存從字串起點到這個字符的距離（採用邏輯單位）。如果不需要這方面的信息，也可設為NULL（用別名聲明設置 ByVal As Long）
lpSize | SIZE，這個結構用於裝載字串範圍的高度和寬度信息
註解
可用這個函數計算自動換行輸出時的字符位置


GetTextExtentPoint

GetTextExtentPoint, GetTextExtentPoint32
VB聲明
Declare Function GetTextExtentPoint& Lib "gdi32" Alias "GetTextExtentPointA" (ByVal hdc As Long, ByVal lpszString As String, ByVal cbString As Long, lpSize As SIZE) Declare Function GetTextExtentPoint32& Lib "gdi32" Alias "GetTextExtentPoint32A" (ByVal hdc As Long, ByVal lpsz As String, ByVal cbString As Long, lpSize As SIZE)
說明
判斷一個字串的大小（範圍）。在Win32環境中，最好使用GetTextExtentPoint32，它提供了更精確的計算結果
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
lpszString | String，欲度量其範圍（extent）的一個字串
cbString | Long，lpszString字串的長度
lpSize | SIZE，這個結構用於裝載字串範圍的高度和寬度信息
註解
這個函數不會將剪切區考慮在內，但卻考慮到了由SetTextCharacterExtra函數設置的任何額外空間（間距）


GetTextFace
VB聲明
Declare Function GetTextFace Lib "gdi32" Alias "GetTextFaceA" (ByVal hdc As Long, ByVal nCount As Long, ByVal lpFacename As String) As Long
說明
獲取一種字體的字樣名
返回值
Long，緩衝區中載入的字節數量。零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
nCount | Long，lpFacename字串的大小
lpFacename | String，指定一個字串緩衝區，用於裝載當前選定字體的字樣名稱。這個緩衝區事先必須初始化成至少nCount+1個字符的長度
註解
類似於讀取VB的FontName屬性


GetTextMetrics
VB聲明
Declare Function GetTextMetrics Lib "gdi32" Alias "GetTextMetricsA" (ByVal hdc As Long, lpMetrics As TEXTMETRIC) As Long
說明
獲取與選入一種設備場景的物理字體有關的信息
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
lpMetrics | TEXTMETRIC，用於填充物理字體屬性信息的一個結構


GrayString

GrayString, GrayStringByString
VB聲明
Declare Function GrayString& Lib "user32" Alias "GrayStringA" (ByVal hDC As Long, ByVal hBrush As Long, ByVal lpOutputFunc As Long, ByVal lpData As Long, ByVal nCount As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long) Declare Function GrayStringByString& Lib "user32" Alias "GrayStringA" (ByVal hDC As Long, ByVal hBrush As Long, ByVal lpOutputFunc As Long, ByVal lpData As String, ByVal nCount As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long)
說明
描繪一個以灰色顯示的字串。通常由Windows用於標識禁止狀態。這個函數使用的是當前字體，但會忽略背景及文本顏色
返回值
Long，非零表示成功。如果TextOut函數或回調控件繪圖事件返回零，那麼該函數也會返回零
參數表
參數 | 類型及說明
hDC | Long，設備場景的句柄
hBrush | Long，用於填充灰色的一個刷子。如果為零就用當前刷子
lpOutputFunc | Long，指向一個函數的指針，該函數用於輸出文本。通常設為零，表示使用TextOut函數。否則可將該參數設成一個進程地址。具體地址可用一個標準函數的AddressOf運算符返回，或者用一個回調控件的相關屬性返回
lpData | Long，如果是一個字串（將lpOutputFunc設為NULL），這就表示要以灰色顯示的一個字串。否則就指定一個Long型變量，將其傳遞給回調函數
nCount | Long，欲顯示的字符數量。如果設為零，而且lpData是個字串，那麼就用於計算字串的長度
X,Y | Long，將字串封閉（約束）起來的一個矩形的X，Y坐標
nWidth | Long，將字串封閉起來的一個矩形的寬度，採用設備坐標表示。如設為零，就根據字串計算出具體的值
nHeight | Long，將字串封閉起來的一個矩形的高度，採用設備坐標表示。如設為零，就根據字串計算出具體的值


文本和字體類3

文本和字體函數，共三頁。 第一頁 ， 第二頁 ，第三頁
PolyTextOut | 描繪一系列字串
RemoveFontResource | 從Windows系統中刪除一種字體資源
SetMapperFlags | Windows對字體進行映射時，可用該函數選擇與目標設備的縱橫比相符的光柵字體
SetTextAlign | 設置文本對齊方式，並指定在文本輸出過程中使用設備場景的當前位置
SetTextCharacterExtra | 描繪文本的時候，指定要在字符間插入的額外間距
SetTextColor | 設置當前文本顏色。這種顏色也稱為「前景色」
SetTextJustification | 通過指定一個文本行應佔據的額外空間，可用這個函數對文本進行兩端對齊處理
TabbedTextOut | 支持製表站的一個文本描繪函數
TextOut | 文本繪圖函數
完


PolyTextOut
VB聲明
Declare Function PolyTextOut Lib "gdi32" Alias "PolyTextOutA" (ByVal hdc As Long, pptxt As POLYTEXT, cStrings As Long) As Long
說明
描繪一系列字串
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，欲在其中繪圖的設備場景
pptxt | POLYTEXT，指定POLYTEXT結構數組中的第一個條目。該結構對要描繪字串的位置及內容進行了說明
cStrings | Long，pptxt數組中的條目數量


RemoveFontResource
VB聲明
Declare Function RemoveFontResource Lib "gdi32" Alias "RemoveFontResourceA" (ByVal lpFileName As String) As Long
說明
從Windows系統中刪除一種字體資源。如刪除的字體目前正由其他應用程序使用，則並不將其立即刪除
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpFileName | String，一個字體資源文件的文件名
註解
刪除一種字體資源後，注意必須調用一下API函數： di% = SendMessageBynum(HWND_BROADCAST, WM_FONTCHANGE, X, Y) 其中，HWND_BROADCAST和WM_FONTCHANGE都是來自API32.TXT文件的常數。它的作用是通知所有Windows應用程序字體列表已發生了變化。 注意磁盤上的字體文件本身並不會由這個函數刪除


SetMapperFlags
VB聲明
Declare Function SetMapperFlags Lib "gdi32" Alias "SetMapperFlags" (ByVal hdc As Long, ByVal dwFlag As Long) As Long
說明
Windows對字體進行映射時，可用該函數選擇與目標設備的縱橫比相符的光柵字體。請參考對GetAspectRatioFilterEx函數的解釋，瞭解進一步的情況
返回值
Long，字體映射標誌的前一個值。GDI_ERROR表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
dwFlag | Long，用ASPECT_FILTERING常數請求GDI選擇與設備縱橫比相符的字體


SetTextAlign
VB聲明
Declare Function SetTextAlign Lib "gdi32" Alias "SetTextAlign" (ByVal hdc As Long, ByVal wFlags As Long) As Long
說明
設置文本對齊方式，並指定在文本輸出過程中使用設備場景的當前位置
返回值
Long，前一個文本對齊標誌，GDI_ERROR表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
wFlags | Long，參考GetTextAlign函數的返回值列表
在VB裡使用
針對自己修改的任何VB窗體或控件，注意確定恢復其原始的對齊排列狀態。可用GetTextAlign函數瞭解目前的對齊方式是什麼


SetTextCharacterExtra
VB聲明
Declare Function SetTextCharacterExtra Lib "gdi32" Alias "SetTextCharacterExtraA" (ByVal hdc As Long, ByVal nCharExtra As Long) As Long
說明
描繪文本的時候，指定要在字符間插入的額外間距
返回值
Long，這個設備場景的前一個額外間距設置
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
nCharExtra | Long，要在字符間插入的額外空間，採用設備場景的邏輯坐標系統
在VB裡使用
如改變了這個設置，注意恢復VB窗體或控件原來的字符間距設置


SetTextColor
VB聲明
Declare Function SetTextColor Lib "gdi32" Alias "SetTextColor" (ByVal hdc As Long, ByVal crColor As Long) As Long
說明
設置當前文本顏色。這種顏色也稱為「前景色」
返回值
Long，文本色的前一個RGB顏色設定。CLR_INVALID表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
crColor | Long，新的文本色
在VB裡使用
如改變了這個設置，注意恢復VB窗體或控件原始的文本顏色


SetTextJustification
VB聲明
Declare Function SetTextJustification Lib "gdi32" Alias "SetTextJustification" (ByVal hdc As Long, ByVal nBreakExtra As Long, ByVal nBreakCount As Long) As Long
說明
通過指定一個文本行應佔據的額外空間，可用這個函數對文本進行兩端對齊處理
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
nBreakExtra | Long，描繪時欲添加到字串的額外空間大小
nBreakCount | Long，用於分散額外空間的分隔字符的數量
在VB裡使用
如使用了這個函數，要確定針對VB窗體或控件清除錯誤條件
註解
額外空間由行內各個分隔字符分攤。這裡的「分隔字符」是由特定的字體定義的，通常都是空格字符。可用GetTextMetrics函數瞭解一種字體採用的分隔字符是什麼。對文本進行兩端對齊排列的時候，通常需要採取的操作步驟如下： 1、用GetTextExtentPoint32這個API函數計算字串佔據的顯示範圍 2、決定為了使一個行兩端對齊，需要加入多少額外的空間（採用邏輯坐標）。這個空間（或距離）通常等於右頁邊距減去文本的水平「範圍」 3、計算一行文本中採用多少個間隔字符（通常是空格） 4、將額外空間以及間隔字符的數量作為參數，調用SetTextJustification函數 5、調用文本繪圖（顯示）函數 這個函數在內部維持著一種錯誤條件，用於糾正對齊過程中出現的誤差。這樣一來，我們就可以區分出行內不同部分間的額外間距（如行內使用了多種字體）。具體的方法是將行分割成幾個段，然後為每一段都調用這個函數。對於一個新行，必須清除這個錯誤條件，方法是向nBreakExtra和nBreakCount參數傳遞零值，然後調用這個函數


TabbedTextOut
VB聲明
Declare Function TabbedTextOut Lib "user32" Alias "TabbedTextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long, ByVal nTabPositions As Long, lpnTabStopPositions As Long, ByVal nTabOrigin As Long) As Long
說明
支持製表站的一個文本描繪函數。也請參考SetTextAlign函數
返回值
Long，返回字串的顯示「範圍」。其中，結果值的高16位代表高度，低16位代表寬度
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
x,y | Long，用邏輯坐標設置的一個點，指定字體的描繪（顯示）起點
lpString | String，欲描繪的字串
nCount | Long，字串中要正式描繪出來的字符數
nTabPositions | Long，lpnTabStopPositions數組中的製表站數量。如果是零，lpnTabStopPositions也應該是NULL（需要另行創建一個聲明，將參數指定成 ByVal nTabPositions& ）——在這種情況下，製表站會根據當前字體的平均字符寬度設置成默認的8字符間距。如nTabPositions為1，那麼製表站間距就會根據lpnTabStopPositions數組的第一個條目設置
lpnTabStopPositions | Long，指定製表站位置數組中的頭一個條目。這些位置用設備坐標按升序指定。如果為負數，表示文本應該右對齊製表站，而不是默認的左對齊（僅適用於Win95）
nTabOrigin | Long，指定製表站起點。如為同一行多次調用該函數，而又希望維持相同的製表起點，這個參數就顯得非常重要


TextOut
VB聲明
Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
說明
文本繪圖函數。也請參考SetTextAlign
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
x,y | Long，繪圖的起點，採用邏輯坐標
lpString | String，欲描繪的字串
nCount | Long，字串中要描繪的字符數量
註解
在一個路徑中，如繪圖背景模式是「不透明」（opaque）——請參考SetBkMode函數，那麼創建的輪廓將由字符單元格減去字符構成。如背景模式為透明，輪廓就由字符的字樣本身構成


列印類1

列印函數，共五頁。第一頁， 第二頁 ， 第三頁 ， 第四頁 ， 第五頁
AbortDoc | 取消一份文檔的列印
AbortPrinter | 刪除與一台印表機關聯在一起的緩衝文件
AddForm | 為印表機的表單列表添加一個新表單
AddJob | 用於獲取一個有效的路徑名，以便用它為作業創建一個後台列印文件。它也會為作業分配一個作業編號
AddMonitor | 為系統添加一個印表機監視器
AddPort | 啟動「添加端口」對話框，允許用戶在系統可用端口列表中加入一個新端口
AddPrinter | 在系統中添加一台新印表機
AddPrinterConnection | 連接指定的印表機
AddPrinterDriver | 為指定的系統添加一個列印驅動程序
AddPrintProcessor | 為指定的系統添加一個列印處理器
AddPrintProvidor | 為系統添加一個列印供應商
AdvancedDocumentProperties | 啟動印表機文檔設置對話框
ClosePrinter | 關閉一個打開的印表機對像
ConfigurePort | 針對指定的端口，啟動一個端口配置對話框
ConnectToPrinterDlg | 啟動連接印表機對話框，用它同訪問網絡的印表機連接
DeleteForm | 從印表機可用表單列表中刪除一個表單


AbortDoc
VB聲明
Declare Function AbortDoc Lib "gdi32" Alias "AbortDoc" (ByVal hdc As Long) As Long
說明
取消一份文檔的列印。自上次調用StartDoc函數以來的所有輸出都會被取消。如對印表機進行了配置，令其在正式列印文檔之前先在列印緩衝區內對文檔進行排隊，那麼文檔的任何一部分都不會列印；否則，就可能出現文檔列印到一半被取消的情況
返回值
Long，大於零表示成功，SP_ERROR表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
在VB裡使用
如將這個函數用於由印表機對象的hDC屬性指定的印表機設備場景，那麼它可以正常發揮作用。然而，倘若之後調用了EndDoc方法，卻有可能得到一條印表機出錯消息。當大家結合API列印函數與VB印表機方法的時候，強烈建議對印表機的錯誤進行跟蹤捕獲；或乾脆避免這種結合


AbortPrinter
VB聲明
Declare Function AbortPrinter Lib "winspool.drv" Alias "AbortPrinter" (ByVal hPrinter As Long) As Long
說明
刪除與一台印表機關聯在一起的緩衝文件
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hPrinter | Long，一個已打開的印表機對象的句柄（用OpenPrinter獲得）
註解
如印表機沒有使用後台列印緩衝文件，那麼該函數將無法發揮作用。例如，後台列印程序可將數據直接發給印表機


AddForm
VB聲明
Declare Function AddForm& Lib "spoolss.dll" Alias "AddFormA" (ByVal hPrinter As Long, ByVal Level As Long, pForm As FORM_INFO_1)
說明
為印表機的表單列表添加一個新表單。「表單」描述了一個頁面大小及佈局，提供了一種與設備無關的機制，可實現Windows NT下的紙張尺寸的標準化
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hPrinter | Long，一個已打開的印表機對象的句柄（用OpenPrinter獲得）
Level | Long，設為1
pForm | FORM_INFO_1，對表單進行描述的一個結構
適用平台
Windows NT
其他
在VB的API文本查看器裡複製的聲明如下： Declare Function AddForm Lib "winspool.drv" Alias "AddFormA" (ByVal hPrinter As Long, ByVal Level As Long, pForm As Byte) As Long


AddJob
VB聲明
Declare Function AddJob Lib "winspool.drv" Alias "AddJobA" (ByVal hPrinter As Long, ByVal Level As Long, pData As Byte, ByVal cdBuf As Long, pcbNeeded As Long) As Long
說明
用於獲取一個有效的路徑名，以便用它為作業創建一個後台列印文件。它也會為作業分配一個作業編號
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hPrinter | Long，一個已打開的印表機對象的句柄（用OpenPrinter獲得）
Level | Long，設為1
pData | Byte，緩衝區會引用一個ADDJOB_INFO_1結構
cdBuf | Long，pData緩衝區中的字符數量
pcbNeeded | Long，指向一個Long型變量的指針，該變量用於保存請求的緩衝區長度，或者實際讀入的字節數量
註解
調用這個函數以後，可創建指定的文件，向其中寫入數據，然後用API函數ScheduleJob令其將數據發給印表機


AddMonitor
VB聲明
Declare Function AddMonitor Lib "winspool.drv" Alias "AddMonitorA" (ByVal pName As String, ByVal Level As Long, pMonitors As Byte) As Long
說明
為系統添加一個印表機監視器
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
pName | String，欲在其中安裝監視器的一個服務器的名字。對於本地（本機）監視器，請設置成vbNullString
Level | Long，設為2
pMonitors | Byte，指定一個結構中的第一個字節。那個結構又包含了一個MONITOR_INFO_2結構


AddPort
VB聲明
Declare Function AddPort Lib "winspool.drv" Alias "AddPortA" (ByVal pName As String, ByVal hwnd As Long, ByVal pMonitorName As String) As Long
說明
啟動「添加端口」對話框，允許用戶在系統可用端口列表中加入一個新端口
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
pName | String，欲在其中安裝端口的一個服務器的名字。對本地（本機）端口，請設置成vbNullString
hwnd | Long，指定AddPort對話框的父窗口的句柄
pMonitorName | String，用於指定端口的一個監視器的名稱


AddPrinter
VB聲明
Declare Function AddPrinter Lib "winspool.drv" Alias "AddPrinterA" (ByVal pName As String， ByVal Level As Long， pPrinter As Any) As Long
說明
在系統中添加一台新印表機
返回值
Long，如執行成功，返回一台新印表機的句柄；零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
pName | String，欲在其中安裝印表機的一個服務器的名字。對本地印表機，設為vbNullString
Level | Long，設為2
pPrinter | Any，指定一個緩衝區的第一個條目。該緩衝區包含了一個PRINTER_INFO_2結構。結構中的下述字段會設為有效值：pPrinterName， pPortName， pDriverName， pPrintProcessor 和 pDataType。也可像PRINTER_INFO_2那樣設置pPrinter字段。也可以設置下述字段：Attributes， DefaultPriority， pComment， pDevMode， pLocation， pParameters， Priority， pSecurityDescriptor， pSepFile， pShareName， StartTime 和 UntilTime。而其他字段都應置空
註解
在NT下，調用者必須有足夠的權限對指定服務器上的印表機進行配置


AddPrinterConnection
VB聲明
Declare Function AddPrinterConnection Lib "winspool.drv" Alias "AddPrinterConnectionA" (ByVal pName As String) As Long
說明
連接指定的印表機
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
pName | String，網絡上的一台印表機的名字


AddPrinterDriver
VB聲明
Declare Function AddPrinterDriver Lib "winspool.drv" Alias "AddPrinterDriverA" (ByVal pName As String, ByVal Level As Long, pDriverInfo As Any) As Long
說明
為指定的系統添加一個列印驅動程序
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
pName | String，指定要在其中安裝驅動程序的一台服務器的名字。對於本地系統，設為vbNullString
Level | Long，2或3（2僅適用於NT 3.51）
pDriverInfo | Any，指定一個緩衝區，其中包含了一個DRIVER_INFO_2 或 DRIVER_INFO_3結構，它們指定了要添加的驅動程序
註解
在調用這個函數之前，所有驅動程序文件都必須位於適當的目錄


AddPrintProcessor
VB聲明
Declare Function AddPrintProcessor Lib "winspool.drv" Alias "AddPrintProcessorA" (ByVal pName As String, ByVal pEnvironment As String, ByVal pPathName As String, ByVal pPrintProcessorName As String) As Long
說明
為指定的系統添加一個列印處理器
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
pName | String，指定要在其中安裝驅動程序的一台服務器的名字。對於本地系統，設為vbNullString
pEnvironment | String，要在其中添加列印處理器的一個環境（如「Windows NT x86」）。對於當前（本地）系統環境，則設為vbNullString
pPathName | String，包含了列印管理器的一個文件的名字。文件必須位於列印處理器目錄中
pPrintProcessorName | String，列印處理器的名字


AddPrintProvidor
VB聲明
Declare Function AddPrintProvidor Lib "winspool.drv" Alias "AddPrintProvidorA" (ByVal pName As String, ByVal Level As Long, pProvidorInfo As Byte) As Long
說明
為系統添加一個列印供應商
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
pName | String，指出要在其中安裝列印供應商的一台服務器的名字。對於本地系統，設為vbNullString
Level | Long，設為1
pProvidorInfo | Byte，包含了一個PROVIDOR_INFO_1結構的緩衝區


AdvancedDocumentProperties
VB聲明
Declare Function AdvancedDocumentProperties Lib "winspool.drv" Alias "AdvancedDocumentPropertiesA" (ByVal hwnd As Long, ByVal hPrinter As Long, ByVal pDeviceName As String, pDevModeOutput As DEVMODE, pDevModeInput As DEVMODE) As Long
說明
啟動印表機文檔設置對話框。這個函數幾乎完全等價於調用DocumentProperties函數，同時將fMode設為DM_IN_PROMPT。請參考對DocumentProperties函數的說明，瞭解這個函數的詳細情況
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
註解

將pDevModeOutput設為0後可得到要求的DEVMODE結構的大小


ClosePrinter
VB聲明
Declare Function ClosePrinter Lib "winspool.drv" Alias "ClosePrinter" (ByVal hPrinter As Long) As Long
說明
關閉一個打開的印表機對像
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hPrinter | Long，一個打開的印表機對象的句柄


ConfigurePort
VB聲明
Declare Function ConfigurePort Lib "winspool.drv" Alias "ConfigurePortA" (ByVal pName As String, ByVal hwnd As Long, ByVal pPortName As String) As Long
說明
針對指定的端口，啟動一個端口配置對話框
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
pName | String，欲對其端口進行配置的一台服務器的名字。對於本地系統，請設為vbNullString
hwnd | Long，對話框父窗口的句柄
pPortName | String，端口名


ConnectToPrinterDlg
VB聲明
Declare Function ConnectToPrinterDlg Lib "winspool.drv" Alias "ConnectToPrinterDlg" (ByVal hwnd As Long, ByVal flags As Long) As Long
說明
啟動連接印表機對話框，用它同訪問網絡的印表機連接
返回值
Long，已連接或選擇的印表機的句柄，零意味著失敗或用戶取消了操作
參數表
參數 | 類型及說明
hwnd | Long，對話框的父窗口句柄
flags | Long，保留，設為零


DeleteForm
VB聲明
Declare Function DeleteForm Lib "winspool.drv" Alias "DeleteFormA" (ByVal hPrinter As Long, ByVal pFormName As String) As Long
說明
從印表機可用表單列表中刪除一個表單
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hPrinter | Long，一個打開的印表機的名字（用OpenPrinter獲得）
pFormName | String，欲刪除的表單的名字
適用平台
Windows NT
註解
不能刪除內建表單。請參考AddForm函數瞭解進一步的情況


列印類2

列印函數，共五頁。 第一頁 ，第二頁， 第三頁 ， 第四頁 ， 第五頁
DeleteMonitor | 刪除指定的列印監視器
DeletePort | 啟動「刪除端口」對話框，允許用戶從當前系統刪除一個端口
DeletePrinter | 將指定的印表機標誌為從系統中刪除
DeletePrinterConnection | 刪除與指定印表機的連接
DeletePrinterDriver | 從系統刪除一個印表機驅動程序
DeletePrintProcessor | 從指定系統刪除一個列印處理器
DeletePrintProvidor | 從系統中刪除一個列印供應商
DeviceCapabilities | 利用這個函數可獲得與一個設備的能力有關的信息
DocumentProperties | 印表機配置控制函數
EndDocAPI | 結束一個成功的列印作業
EndDocPrinter | 在後台列印程序的級別指定一個文檔的結束
EndPage | 用這個函數完成一個頁面的列印，並準備設備場景，以便列印下一個頁
EndPagePrinter | 指定一個頁在列印作業中的結尾
EnumForms | 枚舉一台印表機可用的表單
EnumJobs | 枚舉列印隊列中的作業
EnumMonitors | 枚舉可用的列印監視器


DeleteMonitor
VB聲明
Declare Function DeleteMonitor Lib "winspool.drv" Alias "DeleteMonitorA" (ByVal pName As String, ByVal pEnvironment As String, ByVal pMonitorName As String) As Long
說明
刪除指定的列印監視器
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
pName | String，監視器所在的服務器的名字。用vbNullString指定本地系統
pEnvironment | String，欲在其中刪除監視器的環境。用vbNullString指定當前系統
pMonitorName | String，欲刪除監視器的名字
註解
參考AddMonitor函數，瞭解進一步的信息


DeletePort
VB聲明
Declare Function DeletePort Lib "winspool.drv" Alias "DeletePortA" (ByVal pName As String, ByVal hwnd As Long, ByVal pPortName As String) As Long
說明
啟動「刪除端口」對話框，允許用戶從當前系統刪除一個端口
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
pName | String，欲在其中刪除端口的服務器的名字。vbNullString表示使用本地端口
hwnd | Long，DeletePort對話框的父窗口的句柄
pPortName | String，欲刪除的端口的名字
註解
如印表機已連接到端口，則函數執行會失敗


DeletePrinter
VB聲明
Declare Function DeletePrinter Lib "winspool.drv" Alias "DeletePrinter" (ByVal hPrinter As Long) As Long
說明
將指定的印表機標誌為從系統中刪除
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hPrinter | Long，已打開的印表機對象的句柄
註解
除非所有待決的列印作業都已完成，否則印表機不會實際刪除


DeletePrinterConnection
VB聲明
Declare Function DeletePrinterConnection Lib "winspool.drv" Alias "DeletePrinterConnectionA" (ByVal pName As String) As Long
說明
刪除與指定印表機的連接
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
pName | String，要刪除的印表機連接


DeletePrinterDriver
VB聲明
Declare Function DeletePrinterDriver Lib "winspool.drv" Alias "DeletePrinterDriverA" (ByVal pName As String, ByVal pEnvironment As String, ByVal pDriverName As String) As Long
說明
從系統刪除一個印表機驅動程序
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
pName | String，服務器的名字。針對本地驅動程序設為vbNullString
pEnvironment | String，指定欲在其中刪除驅動程序的一個環境（如「Windows NT x86」）。對於當前（本地）系統環境，則設為vbNullString
pDriverName | String，要刪除的驅動程序的名字
註解
驅動程序文件不會從系統物理性的刪除，只是不能繼續使用


DeletePrintProcessor
VB聲明
Declare Function DeletePrintProcessor Lib "winspool.drv" Alias "DeletePrintProcessorA" (ByVal pName As String, ByVal pEnvironment As String, ByVal pPrintProcessorName As String) As Long
說明
從指定系統刪除一個列印處理器
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
pName | String，服務器的名字。針對本地處理器設為vbNullString
pEnvironment | String，指定欲刪除列印處理器的一個環境（如「Windows NT x86」）。對於當前（本地）系統環境，則設為vbNullString
pPrintProcessorName | String，要刪除的列印處理器的名字


DeletePrintProvidor
VB聲明
Declare Function DeletePrintProvidor Lib "winspool.drv" Alias "DeletePrintProvidorA" (ByVal pName As String, ByVal pEnvironment As String, ByVal pPrintProvidorName As String) As Long
說明
從系統中刪除一個列印供應商
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
pName | String，服務器的名字。針對本地服務器設為vbNullString
pEnvironment | String，指定欲刪除列印供應商的一個環境（如「Windows NT x86」）。對於當前（本地）系統環境，則設為vbNullString
pPrintProvidorName | String，要刪除的列印供應商的名字


DeviceCapabilities
VB聲明
Declare Function DeviceCapabilities Lib "winspool.drv" Alias "DeviceCapabilitiesA" (ByVal lpDeviceName As String, ByVal lpPort As String, ByVal iIndex As Long, ByVal lpOutput As String, lpDevMode As DEVMODE) As Long
說明
利用這個函數可獲得與一個設備的能力有關的信息
返回值
Long，由iIndex參數的值決定，請參考設備能力常數表。如函數執行失敗，或印表機的驅動程序不支持這個函數，那麼函數就會返回-1
參數表
參數 | 類型及說明
lpDeviceName | String，設備名
lpPort | String，指定連接了指定設備的那個端口
iIndex | Long，欲測試的能力。請參考設備能力常數表，其中列出了可選的值
lpOutput | String，指定一個緩衝區的地址，能力數據會裝載到這個緩衝區中。在設備能力常數表中，針對每個fwCapabilities值的緩衝區的內容都進行了總結。這個表格同時總結了應將參數設為vbNullString的一些情況
lpDevMode | DEVMODE，一個DEVMODE結構的地址，或者為零。如指定了那個結構，函數會根據這個結構的設置來接收信息。如果為零，函數就會根據印表機驅動程序的默認值接收信息
註解
使用lpOutput時要注意：在許多時候，這個函數會返回一系列名稱的列表。例如，假設將fwCapabilities標誌設為DC_PAPERNAMES，那麼就會得到一系列支持的紙張尺寸的名字。在這種情況下，lpOutput緩衝區應該是一個String變量，而且根據設備能力常數表的總結預先初始化成合適的長度。函數會在緩衝區中載入所有名稱，而且每個名稱在字串中都佔用固定的空間。所以，我們完全能用Mid函數提取出每一個條目。 某些情況下，lpOutput需要指向一個數值數組的指針
設備能力常數表
fwCapabilities | 說明
DC_BINADJUST | 返回來自API32.TXT的某個常數。它應帶有 DCBA_ 前綴，用於指定當前紙張源的正確紙張方向。僅適用於Win95
DC_BINNAMES | 如lpOutput為零，就返回由印表機支持的紙匣數量。否則，lpOutput應指向一個緩衝區（長度至少為24×紙匣數）。每24個字節都會保存一個紙匣的NULL中止名稱
DC_BINS | 如lpOutput為零，就返回由印表機支持的紙匣數量。否則，lpOutput應指向一個整數數組（長度至少為紙匣數量）。這些值對應於為DEVMODE結構定義的 DMBIN_??? 常數
DC_COPIES | 返回印表機能夠列印的最大副本數量
DC_DATATYPE_PRODUCED | 接收由印表機支持的一系列數據類型。這些類型可作為由StartDoc函數使用的DOCINFO結構的輸出數據類型提供。如這個函數返回-1，那麼支持的唯一數據類型就是 RAW 。僅適用於Win95
DC_DRIVER | 返回印表機驅動程序的版本號
DC_DUPLEX | 如印表機有雙面列印功能，就返回1；否則返回0
DC_EMF_COMPLIANT | 如印表機能直接支持增強型圖元文件，就返回TRUE。僅適用於Win95
DC_ENUMRESOLUTIONS | 如lpOutput為零，就返回由印表機支持的分辨率數量。否則，lpOutput應該是一個指向Long型數組的指針。該數組至少應包含（2×分辨率數量）個條目。每對條目都反映出水平和垂直分辨率（以每英寸的點數——dpi——為單位）
DC_EXTRA | 返回與具體設備有關的特殊字節，它們要為這個設備追加到DEVMODE結構後面
DC_FIELDS | 針對設備默認的DEVMODE數據結構，返回dmFields字段的值
DC_FILEDEPENDENCIES | 如lpOutput為零，就返回印表機驅動程序要求的文件數量。否則，lpOutput應指向一個至少有（64×文件數）個字節的緩衝區。每64個字節都會保存一個請求文件的NULL中止名稱
DC_MAXEXTENT | 返回一個Long型值，其中包含印表機支持的最大紙張長度和寬度。其中，低字（16位）包含的是寬度數據。它們是由dmPaperWidth 和 dmPaperLength這兩個DEVMODE字段的最大值
DC_MINEXTENT | 返回一個Long型值，其中包含印表機支持的最小紙張長度和寬度。其中，低字（16位）包含的是寬度數據。它們是由dmPaperWidth 和 dmPaperLength這兩個DEVMODE字段的最大值
DC_ORIENTATION | 返回橫向模式和縱向模式間的旋轉度數。如果是零，表示驅動程序不支持橫向列印模式。對於激光印表機，90度是最常見的一個設置；而對於點陣式印表機，一般都是270度
DC_PAPERNAMES | 如lpOutput為零，就返回由印表機支持的紙張尺寸數量。否則，lpOutput就應指向一個緩衝區（長度至少為64×紙張尺寸種數）。每64個字節都會裝載一種支持的紙張尺寸的空中止名稱
DC_PAPERS | 如lpOutput為零，就返回由印表機支持的紙張尺寸數量。否則，lpOutput就應指向一個整數數組（長度至少為紙張的尺寸種數）。值對應於為DEVMODE結構定義的 DMPAPER_??? 常數
DC_SIZE | 返回印表機DEVMODE數據結構的dmSize字段
DC_TRUETYPE | 下述常數之一：
 | DCTT_BITMAP | 設備能將TrueType字體當作圖形列印
 | DCTT_DOWNLOAD | 設備能下載TrueType字體
 | DCTT_OUTLINE | 設備能下載輪廓型TrueType字體
 | DCTT_SUBDEV | 設備能取代與對應的TrueType字體兼容的內建字體
DC_VERSION | 返回設備驅動程序的規格版本號


DocumentProperties
VB聲明
Declare Function DocumentProperties& Lib "winspool.dll" Alias "DocumentPropertiesA" (ByVal hwnd As Long, ByVal hPrinter As Long, ByVal pDeviceName As String, ByVal pDevModeOutput As Long, ByVal pDevModeInput As Long, ByVal fMode As Long)
說明
這是一個靈活的印表機配置控制函數。該函數定義了兩個DEVMODE結構，可在創建一個設備場景時為單個應用程序改變印表機設置。甚至能在文檔列印期間改變印表機設置
返回值
Long，由fMode字段的值決定。如下所示： 若fMode為零，這個函數就返回DEVMODE結構的尺寸。注意這個結構可能比類型定義文件API32.TXT中規定的尺寸大 若fMode設置了DM_IN_PROMPT標誌，那麼印表機設置對話框就會出現。在這種情況下，返回值將是常數IDOK 或 IDCANCEL——具體由用戶關閉對話框時按下的按鈕決定 在其他任何情況下，該函數執行成功後會返回IDOK。而在任何情況下，如函數執行失敗，都會返回一個負數
參數表
參數 | 類型及說明
hwnd | Long，對話框父窗口的句柄。這通常是當前的活動窗體
hPrinter | Long，一個已打開的印表機對象的句柄
pDeviceName | String，印表機的名字
pDevModeOutput | Long，指向一個DEVMODE數據結構的指針。請參考DocumentProperties運行模式表。注意這個指針必須引用一個足夠大的緩衝區，它能同時容下專用印表機驅動程序數據，以及標準的DEVMODE結構
pDevModeInput | Long，指向一個DEVMODE數據結構的指針。請參考DocumentProperties運行模式表
fMode | Long，決定這個函數運作模式的一個標誌。請參考DocumentProperties運行模式表
DocumentProperties運行模式表
常數標誌 | 運行模式
無 | 不使用pDevModeInput。pDevModeOutput可能為零。函數會返回由這兩個參數引用的DEVMODE結構需要的大小
DM_IN_BUFFER | pDevModeInput緩衝區應載入印表機驅動程序的新位置。在調用這個函數判斷應使用結構中的哪些字段前，應設置結構的dmFields字段
DM_IN_PROMPT | 顯示出印表機設置對話框，以便用戶指定輸出時採用的印表機設置。如指定了DM_IN_BUFFER，那麼在顯示對話框前，輸入緩衝區中指定的任何字段都會與當前的印表機DEVMODE結構合併起來
DM_OUT_BUFFER | 令印表機設置信息輸出到由pDevModeOutput參數指定的緩衝區。這些設置由兩個輸入標誌決定，而且由此反映了原始的輸入結構、當前的印表機設置以及用戶在印表機設置對話框中作出的任何修改。如未指定這個標誌，lpdmOutput參數就可以設為零


EndDocAPI
VB聲明
Declare Function EndDocAPI& Lib "gdi32" Alias "EndDoc" (ByVal hDC As Long)
說明
結束一個成功的列印作業
返回值
Long，大於零表示成功，小於或等於零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hDC | Long，設備場景的句柄


EndDocPrinter
VB聲明
Declare Function EndDocPrinter Lib "winspool.drv" Alias "EndDocPrinter" (ByVal hPrinter As Long) As Long
說明
在後台列印程序的級別指定一個文檔的結束
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hPrinter | Long，一個已打開的印表機的句柄（用用OpenPrinter獲得）
註解
在應用程序的級別並非特別有用。後台列印程序用它標識列印作業中一個文檔的結束


EndPage
VB聲明
Declare Function EndPage Lib "gdi32" Alias "EndPage" (ByVal hdc As Long) As Long
說明
用這個函數完成一個頁面的列印，並準備設備場景，以便列印下一個頁
返回值
Long，大於零表示成功，小於或等於零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
在VB裡使用
使用VB的印表機對像時，應該使用NewPage方法來代替這個函數
註解
這個函數的執行可能相當耗時——具體取決於正在進行的繪圖操作的複雜程度、使用什麼操作系統以及印表機與本機連接還是與遠程主機連接。為了讓用戶能隨時取消列印，在執行期間，這個函數會定時調用由API調用SetAbortProc指定的取消例程


EndPagePrinter
VB聲明
Declare Function EndPagePrinter Lib "winspool.drv" Alias "EndPagePrinter" (ByVal hPrinter As Long) As Long
說明
指定一個頁在列印作業中的結尾
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hPrinter | Long，一個已打開的印表機對象的句柄（用OpenPrinter獲得）
註解
在應用程序的級別並非特別有用，後台列印程序用它在實際印表機數據中標識一個頁的結尾


EnumForms
VB聲明
Declare Function EnumForms Lib "winspool.drv" Alias "EnumFormsA" (ByVal hPrinter As Long, ByVal Level As Long, pForm As Byte, ByVal cbBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long
說明
枚舉一台印表機可用的表單
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hPrinter | Long，一個已打開的印表機對象的句柄（用OpenPrinter獲得）
Level | Long，設為1
pForm | Byte，一個包含FORM_INFO_1結構的緩衝區
cbBuf | Long，pForm緩衝區中的字符數量
pcbNeeded | Long，指向一個Long型變量的指針，該變量用於保存請求的緩衝區長度，或者實際讀入的字節數量
pcReturned | Long，載入緩衝區的結構數量（用於那些能返回多個結構的函數）
適用平台
Windows NT
註解
參考AddForm函數，瞭解進一步的情況


EnumJobs
VB聲明
Declare Function EnumJobs Lib "winspool.drv" Alias "EnumJobsA" (ByVal hPrinter As Long, ByVal FirstJob As Long, ByVal NoJobs As Long, ByVal Level As Long, pJob As Byte, ByVal cdBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long
說明
枚舉列印隊列中的作業
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hPrinter | Long，一個已打開的印表機對象的句柄（用OpenPrinter獲得）
FirstJob | Long，作業列表中要枚舉的第一個作業的索引（注意編號從0開始）
NoJobs | Long，要枚舉的作業數量
Level | Long，1或2
pJob | Byte，包含 JOB_INFO_1 或 JOB_INFO_2 結構的緩衝區
cbBuf | Long，pJob緩衝區中的字符數量
pcbNeeded | Long，指向一個Long型變量的指針，該變量用於保存請求的緩衝區長度，或者實際讀入的字節數量
pcReturned | Long，載入緩衝區的結構數量（用於那些能返回多個結構的函數）
適用平台


EnumMonitors
VB聲明
Declare Function EnumMonitors Lib "winspool.drv" Alias "EnumMonitorsA" (ByVal pName As String, ByVal Level As Long, pMonitors As Byte, ByVal cbBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long
說明
枚舉可用的列印監視器
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
pName | String，服務器的名字。用vbNullString指定本地系統
Level | Long，設為1
pMonitors | Byte，包含MONINTOR_INFO_1結構的緩衝區
cbBuf | Long，pMonitors緩衝區中的字符數量
pcbNeeded | Long，指向一個Long型變量的指針，該變量用於保存請求的緩衝區長度，或者實際讀入的字節數量
pcReturned | Long，載入緩衝區的結構數量（用於那些能返回多個結構的函數）
註解
MONINTOR_INFO_1結構有一個字段包含了列印監視器的名字


列印類3

列印函數，共五頁。 第一頁 ， 第二頁 ，第三頁， 第四頁 ， 第五頁
EnumPorts | 枚舉一個系統可用的端口
EnumPrinterDrivers | 枚舉指定系統中已安裝的印表機驅動程序
EnumPrinters | 枚舉系統中安裝的印表機
EnumPrintProcessorDatatypes | 枚舉由一個列印處理器支持的數據類型
EnumPrintProcessors | 枚舉系統中可用的列印處理器
Escape | 設備控制函數
FindClosePrinterChangeNotification | 關閉用FindFirstPrinterChangeNotification函數獲取的一個印表機通告對像
FindFirstPrinterChangeNotification | 創建一個新的改變通告對像，以便我們注意印表機狀態的各種變化
FindNextPrinterChangeNotification | 用這個函數判斷觸發一次印表機改變通告信號的原因
FreePrinterNotifyInfo | 釋放由FindNextPrinterChangeNotification函數分配的一個緩衝區
GetForm | 取得與指定表單有關的信息
GetJob | 獲取與指定作業有關的信息
GetPrinter | 取得與指定印表機有關的信息
GetPrinterData | 為印表機設置註冊表配置信息
GetPrinterDriver | 針對指定的印表機，獲取與印表機驅動程序有關的信息
GetPrinterDriverDirectory | 判斷指定系統中包含了印表機驅動程序的目錄是什麼


EnumPorts
VB聲明
Declare Function EnumPorts Lib "winspool.drv" Alias "EnumPortsA" (ByVal pName As String, ByVal Level As Long, ByVal lpbPorts As Long, ByVal cbBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long
說明
枚舉一個系統可用的端口
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
pName | String，指定服務器的名字。用vbNullString指定本地系統
Level | Long，1或2（1用於NT 3.51），分別指定PORT_INFO_1 或 PORT_INFO_2
lpbPorts | Long，包含PORT_INFO_1 或 PORT_INFO_2結構的緩衝區
cbBuf | Long，lpbPorts緩衝區中的字符數量
pcbNeeded | Long，指向一個Long型變量的指針，該變量用於保存請求的緩衝區長度，或者實際讀入的字節數量
pcReturned | Long，載入緩衝區的結構數量（用於那些能返回多個結構的函數）
註解
參考AddPort函數，瞭解進一步的情況


EnumPrinterDrivers
VB聲明
Declare Function EnumPrinterDrivers Lib "winspool.drv" Alias "EnumPrinterDriversA" (ByVal pName As String, ByVal pEnvironment As String, ByVal Level As Long, pDriverInfo As Byte, ByVal cdBuf As Long, pcbNeeded As Long, pcRetruned As Long) As Long
說明
枚舉指定系統中已安裝的印表機驅動程序
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
pName | String，指定服務器的名字。用vbNullString指定本地系統
pEnvironment | String，欲在其中對驅動程序進行枚舉的環境（如：Windows NT x86）。如設為vbNullString，表示使用當前（本地）系統環境
Level | Long，1，2或3（3僅適用於Windows 95和NT 4.0）
pDriverInfo | Byte，包含DRIVER_INFO_1， DRIVER_INFO_2 或 DRIVER_INFO_3結構的緩衝區
cbBuf | Long，pDriverInfo緩衝區中的字符數量
pcbNeeded | Long，指向一個Long型變量的指針，該變量用於保存請求的緩衝區長度，或者實際讀入的字節數量
pcReturned | Long，載入緩衝區的結構數量（用於那些能返回多個結構的函數）


EnumPrinters
VB聲明
Declare Function EnumPrinters Lib "winspool.drv" Alias "EnumPrintersA" (ByVal flags As Long, ByVal name As String, ByVal Level As Long, pPrinterEnum As Byte, ByVal cdBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long
說明
枚舉系統中安裝的印表機
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
flags | Long，一個或多個下述標誌
 | PRINTER_ENUM_LOCAL | 枚舉本地印表機（包括Windows 95中的網絡印表機）。名字會被忽略
 | PRINTER_ENUM_NAME | 枚舉由name參數指定的印表機。其中的名字可以是一個供應商、域或服務器。如name為NULL，則枚舉出可用的印表機
 | PRINTER_ENUM_SHARE | 枚舉共享印表機（必須同其他常數組合使用）
 | PRINTER_ENUM_CONNECTIONS | 枚舉網絡連接列表中的印表機（即使目前沒有連接——僅適用於NT）
 | PRINTER_ENUM_NETWORK | 枚舉通過網絡連接的印表機。級別（Level）必須為1。僅適用於NT
 | PRINTER_ENUM_REMOTE | 枚舉通過網絡連接的印表機和列印服務器。級別必須為1。僅適用於NT
name | String，vbNullString表示枚舉同本機連接的印表機。否則由標誌和級別決定
Level | Long，1，2，4或5（4僅適用於NT；5僅適用於Win95和NT 4.0），指定欲枚舉的結構的類型。如果是1，則name參數由標誌設置決定。如果是2或5，那麼name就代表欲對其印表機進行枚舉的服務器的名字；或者為vbNullString。如果是4，那麼只有PRINTER_ENUM_LOCAL和PRINTER_ENUM_CONNECTIONS才有效。名字必須是vbNullString
pPrinterEnum | Byte，包含PRINTER_ENUM_x結構的緩衝區，其中的x代表級別（Level）
cbBuf | Long，pPrinterEnum緩衝區中的字符數量
pcbNeeded | Long，指向一個Long型變量的指針，該變量用於保存請求的緩衝區長度，或者實際讀入的字節數量
pcReturned | Long，載入緩衝區的結構數量（用於那些能返回多個結構的函數）
註解
第4和第5級將它們的結構建立在系統註冊表的基礎上，而且比第2級快得多。後者要求每台印表機都處於打開狀態 請參考微軟Win32手冊，瞭解這個函數進一步的情況


GetPrinterData
VB聲明
Declare Function GetPrinterData Lib "winspool.drv" Alias "GetPrinterDataA" (ByVal hPrinter As Long, ByVal pValueName As String, pType As Long, pData As Byte, ByVal nSize As Long, pcbNeeded As Long) As Long
說明
為印表機設置註冊表配置信息
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hPrinter | Long，一個已打開的印表機的句柄（用OpenPrinter獲得）
pValueName | String，欲設置的註冊表值的名稱
pType | Long，指定數據類型。使用來自API32.TXT的、以REG_??開頭的一個常數
pData | Byte，指定一個Byte數組以接收數據
nSize | Long，以字節表示的pData數組的長度
pcbNeeded | Long，指向一個Long型變量的指針，該變量用於保存請求的緩衝區長度，或者實際讀入的字節數量


EnumPrintProcessorDatatypes
VB聲明
Declare Function EnumPrintProcessorDatatypes Lib "winspool.drv" Alias "EnumPrintProcessorDatatypesA" (ByVal pName As String, ByVal pPrintProcessorName As String, ByVal Level As Long, pDatatypes As Byte, ByVal cdBuf As Long, pcbNeeded As Long, pcRetruned As Long) As Long
說明
枚舉由一個列印處理器支持的數據類型
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
pName | String，指定服務器的名字。用vbNullString表示使用本地系統
pPrintProcessorName | String，欲對其數據類型進行枚舉的列印處理器的名字
Level | Long，設為1
pDatatypes | Byte，包含DATATYPES_INFO_1結構的緩衝區
cbBuf | Long，pDatatypes緩衝區中的字符數量
pcbNeeded | Long，指向一個Long型變量的指針，該變量用於保存請求的緩衝區長度，或者實際讀入的字節數量
pcReturned | Long，載入緩衝區的結構數量（用於那些能返回多個結構的函數）
註解
DATATYPES_INFO_1結構包含了單個字段，其中保存了數據類型的名稱


EnumPrintProcessors
VB聲明
Declare Function EnumPrintProcessors Lib "winspool.drv" Alias "EnumPrintProcessorsA" (ByVal pName As String, ByVal pEnvironment As String, ByVal Level As Long, pPrintProcessorInfo As Byte, ByVal cdBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long
說明
枚舉系統中可用的列印處理器
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
pName | String，指定服務器的名字。用vbNullString表示使用本地系統
pEnvironment | String，欲枚舉的列印處理器的環境（如：Windows NT x86）。如設為vbNullString，表示使用當前（本地）系統環境
Level | Long，設為1
pPrintProcessorInfo | Byte，包含PRINTPROCESSOR_INFO_1結構的緩衝區
cbBuf | Long，pPrintProcessorInfo緩衝區中的字符數量
pcbNeeded | Long，指向一個Long型變量的指針，該變量用於保存請求的緩衝區長度，或者實際讀入的字節數量
pcReturned | Long，載入緩衝區的結構數量（用於那些能返回多個結構的函數）


Escape
VB聲明
Declare Function Escape Lib "gdi32" Alias "Escape" (ByVal hdc As Long, ByVal nEscape As Long, ByVal nCount As Long, ByVal lpInData As String, lpOutData As Any) As Long
說明
一個靈活的設備控制函數
返回值
Long，對於QUERYESCSUPPORT，如支持指定的換碼，則返回TRUE（非零）；否則返回零。對於PASSTHROUGH，大於零值表示成功；如指定的換碼不支持，則返回零；如果出錯，則返回負值
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
nEscape | Long，換碼數量，由API32.TXT文件中的一個常數定義。這決定了具體的運作方式。請參考註解
nCount | Long，lpInData緩衝區的大小，用字節數表示
lpInData | String，由換碼類型決定。對於QUERYESCSUPPORT，這代表指向一個整數變量的指針，那個變量包含了要測試的換碼值。對於PASSTHROUGH，這代表指向一個數據塊的指針，那個數據塊包含於要發送數據的頭16位字節數量中。數據塊剩餘的部分包含了要發送給印表機的實際數據緩衝區
lpOutData | Any，指定一個輸出緩衝區，它的具體使用由換碼決定。它不由QUERYESCSUPPORT或PASSTHROUGH使用，而且應設為NULL（ByVal 0&）
註解
只有兩個換碼在Win32環境中經常用到。請用QUERYESCSUPPORT換碼判斷一個換碼是否得到了驅動程序的支持。用PASSTHROUGH換碼將原始數據直接發給一台印表機。其他換碼在Win32仍然得到了支持，但目的只是為了與Win16保持兼容


FindClosePrinterChangeNotification
VB聲明
Declare Function FindClosePrinterChangeNotification Lib "winspool.drv" Alias "FindClosePrinterChangeNotification" (ByVal hChange As Long) As Long
說明
關閉用FindFirstPrinterChangeNotification函數獲取的一個印表機通告對像
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hChange | Long，欲關閉的印表機通告對像句柄
適用平台
Windows NT


FindFirstPrinterChangeNotification
VB聲明
Declare Function FindFirstPrinterChangeNotification& Lib "winspool.dll" (ByVal hPrinter As Long, ByVal fdwFlags As Long, ByVal fdwOptions As Long, pPrinterNotifyOptions As Byte)
說明
創建一個新的改變通告對像，以便我們注意印表機狀態的各種變化
返回值
Long，執行成功則返回改變通告對象的句柄。INVALID_HANDLE_VALUE表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hPrinter | Long，一個已打開的印表機對象的句柄（用OpenPrinter獲得）
fdwFlags | Long，來自API32.TXT文件的、帶有PRINTER_CHANGE_??前綴的某個常數，它們對要觀察的對象進行了描述。如pPrinterNotifyOptions不為零，那麼可將這個參數設為零
fdwOptions | Long，保留，設為零
pPrinterNotifyOptions | Byte，指定一個緩衝區，其中包含了一個PRINTER_NOTIFY_OPTIONS結構。而這個結構又包含了指向一個或多個PRINTER_NOTIFY_OPTIONS_TYPE結構的指針。可將這個參數設為零（將聲明方式改為ByVal As Long並傳遞零值），以便用fdwFlags字段指定想觀察的變化
適用平台
Windows NT
其他
以下的聲明是從VB的API文本查看器裡複製的： Declare Function FindFirstPrinterChangeNotification Lib "winspool.drv" Alias "FindFirstPrinterChangeNotification" (ByVal hPrinter As Long, ByVal fdwFlags As Long, ByVal fdwOptions As Long, ByVal pPrinterNotifyOptions As String) As Long


FindNextPrinterChangeNotification
VB聲明
Declare Function FindNextPrinterChangeNotification& Lib "winspool.dll" (ByVal hChange As Long, pdwChange As Long, ByVal pvReserved As Long, ByVal ppPrinterNotifyInfo As Long)
說明
用這個函數判斷觸發一次印表機改變通告信號的原因
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hChange | Long，一個印表機通告改變對象的句柄
pdwChange | Long，指定用於裝載特定標誌的一個Long型值，該標誌標誌著信號的來源。請在API32.TXT文件中尋找以PRINTER_CHANGE_???前綴開頭的常數
pvReserved | Long，指定一個PRINTER_NOTIFY_OPTIONS結構的地址。如這個結構的Flags字段設為PRINTER_NOTIFY_OPTIONS_REFRESH，那麼ppPrinterNotifyInfo緩衝區就會載入正在監視的所有事件的狀態——並不僅是那些觸發了通告信號的事件。結構中所有其他字段會被忽略。可設為NULL（零），表示只返回與狀態改變有關信息
ppPrinterNotifyInfo | Long，由系統分配的一個緩衝區的地址。完成後，應該用FreePrinterNotifyInfo函數將這個緩衝區刪除。緩衝區內包含了一個PRINTER_NOTIFY_INFO結構，其後跟隨一系列PRINTER_NOTIFY_INFO_DATA結構（具體數量由第一個結構決定）
適用平台
Windows NT
其他
在VB的API文本查看器中複製的聲明如下： Declare Function FindNextPrinterChangeNotification Lib "winspool.drv" Alias "FindNextPrinterChangeNotification" (ByVal hChange As Long, pdwChange As Long, ByVal pvReserved As String, ByVal ppPrinterNotifyInfo As Long) As Long


FreePrinterNotifyInfo
VB聲明
Declare Function FreePrinterNotifyInfo Lib "winspool.drv" (ByVal addr As Long) As Long
說明
釋放由FindNextPrinterChangeNotification函數分配的一個緩衝區
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
addr | Long，指定由FindNextPrinterChangeNotification函數分配的一個系統緩衝區的地址
適用平台
Windows NT


GetForm
VB聲明
Declare Function GetForm Lib "winspool.drv" Alias "GetFormA" (ByVal hPrinter As Long, ByVal pFormName As String, ByVal Level As Long, pForm As Byte, ByVal cbBuf As Long, pcbNeeded As Long) As Long
說明
取得與指定表單有關的信息
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hPrinter | Long，一個已打開的印表機的句柄（用OpenPrinter獲得）
pFormName | String，想獲取信息的一個表單的名字
Level | Long，設為1
pForm | Byte，包含FORM_INFO_1結構的緩衝區
cbBuf | Long，pForm緩衝區中的字符數量
pcbNeeded | Long，指向一個Long型變量的指針，該變量用於保存請求的緩衝區長度，或者實際讀入的字節數量
適用平台
Windows NT


GetJob
VB聲明
Declare Function GetJob Lib "winspool.drv" Alias "GetJobA" (ByVal hPrinter As Long, ByVal JobId As Long, ByVal Level As Long, pJob As Byte, ByVal cdBuf As Long, pcbNeeded As Long) As Long
說明
獲取與指定作業有關的信息
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hPrinter | Long，一個已打開的印表機的句柄（用OpenPrinter獲得）
JobId | Long，作業編號
Level | Long，1或2
pJob | Byte，包含JOB_INFO_1 或 JOB_INFO_2結構的緩衝區，結構中包含了與列印作業有關的信息
cbBuf | Long，pJob緩衝區中的字符數量
pcbNeeded | Long，指向一個Long型變量的指針，該變量用於保存請求的緩衝區長度，或者實際讀入的字節數量


GetPrinter
VB聲明
Declare Function GetPrinter Lib "winspool.drv" Alias "GetPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, pPrinter As Any, ByVal cbBuf As Long, pcbNeeded As Long) As Long
說明
取得與指定印表機有關的信息
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hPrinter | Long，一個已打開的印表機的句柄（用OpenPrinter獲得）
Level | Long，1，2，3（僅適用於NT），4（僅適用於NT），或者5（僅適用於Windows 95 和 NT 4.0）
pPrinter | Any，包含PRINTER_INFO_x結構的緩衝區。x代表級別
cbBuf | Long，pPrinterEnum緩衝區中的字符數量
pcbNeeded | Long，指向一個Long型變量的指針，該變量用於保存請求的緩衝區長度，或者實際讀入的字節數量
註解
只有在發出調用的應用程序有足夠的權限時，PRINTER_INFO_x結構中的一些字段才能夠被讀取。這種權限由系統當前的安全設置決定


GetPrinterDriver
VB聲明
Declare Function GetPrinterDriver Lib "winspool.drv" Alias "GetPrinterDriverA" (ByVal hPrinter As Long, ByVal pEnvironment As String, ByVal Level As Long, pDriverInfo As Byte, ByVal cdBuf As Long, pcbNeeded As Long) As Long
說明
針對指定的印表機，獲取與印表機驅動程序有關的信息
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hPrinter | Long，一個已打開的印表機的句柄（用OpenPrinter獲得）
pEnvironment | String，欲獲取的驅動程序環境（如：Windows NT x86）。如設為vbNullString，表示使用當前（本地）系統環境
Level | Long，1，2或3（僅適用於Windows 95 和 NT 4.0）
pDriverInfo | Byte，載入一個 DRIVER_INFO_x結構的緩衝區。其中的x代表級別（Level）設置
cbBuf | Long，pDriverInfo緩衝區中的字符數量
pcbNeeded | Long，指向一個Long型變量的指針，該變量用於保存請求的緩衝區長度，或者實際讀入的字節數量


GetPrinterDriverDirectory
VB聲明
Declare Function GetPrinterDriverDirectory Lib "winspool.drv" Alias "GetPrinterDriverDirectoryA" (ByVal pName As String, ByVal pEnvironment As String, ByVal Level As Long, pDriverDirectory As Byte, ByVal cdBuf As Long, pcbNeeded As Long) As Long
說明
判斷指定系統中包含了印表機驅動程序的目錄是什麼
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
pName | String，服務器的名字。如設為vbNullString，表示使用本地系統
pEnvironment | String，欲在其中獲取目錄的一個環境（如：Windows NT x86）。vbNullString表示使用當前（本地）系統環境
Level | Long，設為1
pDriverDirectory | Byte，指定一個緩衝區，其中會載入印表機驅動程序目錄的完整路徑名。可定義成ByVal As String，以便將字節數組分配給一個字串，從而避免執行ANSI到Unicode格式的轉換
cbBuf | Long，pDriverDirectory緩衝區中的字符數量
pcbNeeded | Long，指向一個Long型變量的指針，該變量用於保存請求的緩衝區長度，或者實際讀入的字節數量


列印類4

列印函數，共五頁。 第一頁 ， 第二頁 ， 第三頁 ，第四頁， 第五頁
GetPrintProcessorDirectory | 判斷指定系統中包含了印表機處理器驅動程序及文件的目錄
OpenPrinter | 打開指定的印表機，並獲取印表機的句柄
PrinterMessageBox | 在擁有指定列印作業的系統上顯示一個印表機出錯消息框
PrinterProperties | 啟動印表機屬性對話框，以便對印表機進行配置
ReadPrinter | 從印表機讀入數據
ResetDC | 重設一個設備場景
ResetPrinter | 改變指定印表機的默認數據類型及文檔設置
ScheduleJob | 提交一個要列印的作業
Setabortproc | 該函數叫「取消函數」。它告訴windows是繼續列印，還是立即取消
SetForm | 為指定表單設置信息
SetJob | 對一個列印作業的狀態進行控制
SetPrinter | 對一台印表機的狀態進行控制
SetPrinterData | 設置印表機的註冊表配置信息
StartDoc | 開始一個列印作業
StartDocPrinter | 在後台列印的級別啟動一個新文檔
StartPage | 列印一個新頁前要先調用這個函數


GetPrintProcessorDirectory
VB聲明
Declare Function GetPrintProcessorDirectory Lib "winspool.drv" Alias "GetPrintProcessorDirectoryA" (ByVal pName As String, ByVal pEnvironment As String, ByVal Level As Long, ByVal pPrintProcessorInfo As String, ByVal cdBuf As Long, pcbNeeded As Long) As Long
說明
判斷指定系統中包含了印表機處理器驅動程序及文件的目錄
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
pName | String，指定服務器的名字。設置成vbNullString則表示使用本地系統
pEnvironment | String，欲在其中獲取目錄的一個環境（如：Windows NT x86）。用vbNullString表示使用當前（本地）系統環境
Level | Long，設為1
pPrintProcessorInfo | String，指定一個緩衝區，其中載入印表機處理器目錄的完整路徑。可定義成ByVal As String，以便將字節數組分配給一個字串，從而取消進行ANSI到Unicode轉換的必要
cbBuf | Long，pPrintProcessorInfo緩衝區中的字符數量
pcbNeeded | Long，指向一個Long型變量的指針，該變量用於保存請求的緩衝區長度，或者實際讀入的字節數量


OpenPrinter
VB聲明
Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, pDefault As PRINTER_DEFAULTS) As Long
說明
打開指定的印表機，並獲取印表機的句柄
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
pPrinterName | String，要打開的印表機的名字
phPrinter | Long，用於裝載印表機的句柄
pDefault | PRINTER_DEFAULTS，這個結構保存要載入的印表機信息


PrinterMessageBox
VB聲明
Declare Function PrinterMessageBox Lib "winspool.drv" Alias "PrinterMessageBoxA" (ByVal hPrinter As Long, ByVal error As Long, ByVal hwnd As Long, ByVal pText As String, ByVal pCaption As String, ByVal dwType As Long) As Long
說明
在擁有指定列印作業的系統上顯示一個印表機出錯消息框。如一名用戶在遠程登錄，這種做法便相當有用
返回值
Long，IDOK， IDRETRY 或 IDCANCEL；由用戶的輸入決定（如消息框在遠程系統顯示，則肯定是IDOK）
參數表
參數 | 類型及說明
hPrinter | Long，出現錯誤的印表機的句柄
error | Long，ERROR_OUT_OF_PAPER（缺紙）或ERROR_NOT_READY（未就緒）
hwnd | Long，指定消息框的父窗口。可以為NULL
pText | Long，欲顯示的消息正文
pCaption | Long，消息框的標題
dwType | Long，指定任何一個標準的MessageBox標誌。建議使用MB_ICONSTOP 或 MB_RETRYCANCEL 或 MB_SETFOREGROUND
適用平台
Windows NT


PrinterProperties
VB聲明
Declare Function PrinterProperties Lib "winspool.drv" Alias "PrinterProperties" (ByVal hwnd As Long, ByVal hPrinter As Long) As Long
說明
啟動印表機屬性對話框，以便對印表機進行配置
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，對話框的父窗口
hPrinter | Long，一個已打開的印表機的句柄
註解
如印表機打開的時候沒有使用足夠的訪問權限，對話框的有些功能也許會禁止使用


ReadPrinter
VB聲明
Declare Function ReadPrinter Lib "winspool.drv" Alias "ReadPrinter" (ByVal hPrinter As Long, pBuf As Any, ByVal cdBuf As Long, pNoBytesRead As Long) As Long
說明
從印表機讀入數據
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hPrinter | Long，一個已打開的印表機的句柄（用OpenPrinter獲得）
pBuf | Any，指定一個緩衝區或結構，用於裝載來自印表機的數據
cdBuf | Long，欲讀入的緩衝區大小或字節數
pNoBytesRead | Long，用於裝載實際讀取字節數的一個變量
註解
為使這個函數正常使用，端口必須是雙向的


ResetDC
VB聲明
Declare Function ResetDC Lib "gdi32" Alias "ResetDCA" (ByVal hdc As Long, lpInitData As DEVMODE) As Long
說明
根據提供的DEVMODE結構，對一個設備場景進行重設。這樣便允許我們在列印期間改變印表機的配置。利用這個函數，可將文檔中的某個頁改為橫向列印。可試著用DocumentProperties函數取得一個設備的默認DEVMODE結構
返回值
Long，執行成功則返回設備場景的句柄，零表示失敗
參數表
參數 | 類型及說明
hdc | Long，設備場景的句柄
lpInitData | DEVMODE，指定一個緩衝區的第一個字節。該緩衝區包含了用於那個設備的一個有效DEVMODE結構。記住在這個緩衝區中包括設備專用的數據區
註解
這個函數可成功用於由VB的Printer對象的hDC屬性返回的設備場景上 注意一定要正確設置lpdm的dmFields字段 這個函數在StartPage 和 EndPage之間會被禁用——即只能在頁與頁之間調用這個函數，不能在頁內調用 驅動程序、設備和輸出端口不可以用這個函數更改


ResetPrinter
VB聲明
Declare Function ResetPrinter Lib "winspool.drv" Alias "ResetPrinterA" (ByVal hPrinter As Long, pDefault As PRINTER_DEFAULTS) As Long
說明
改變指定印表機的默認數據類型及文檔設置
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hPrinter | Long，欲修改的一台印表機的句柄
pDefault | PRINTER_DEFAULTS，定義了印表機新設置的一個結構。參考OpenPrinter函數的說明，瞭解這個結構進一步的細節。結構中的DesiredAccess字段會被忽略
適用平台
Windows NT


ScheduleJob
VB聲明
Declare Function ScheduleJob Lib "winspool.drv" Alias "ScheduleJob" (ByVal hPrinter As Long, ByVal JobId As Long) As Long
說明
提交一個要列印的作業
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hPrinter | Long，一台已打開的印表機句柄
JobId | Long，以前用AddJob函數獲得的作業編號
註解
參考AddJob函數以獲得進一步的信息


Setabortproc
VB聲明
Declare Function SetAbortProc Lib "gdi32" Alias "SetAbortProc" (ByVal hDC As Long, ByVal lpAbortProc As Long) As Long
說明
該函數叫「取消函數」。它告訴windows是繼續列印，還是立即取消。該函數的作用是為windows指定取消函數的地址。由於vb不支持函數的地址概念，所以要使用dwcbk32.ocx通用回調定制控件，否則就不能使用這個函數。
返回值
Long，非零表示成功，SP_ERROR表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpAbortProc | Long，一個取消函數的地址。可用dwcbk32d.ocx定制控件的Procaddress屬性或取。
hDC | Long ，一個設備場景的句柄。


SetForm
VB聲明
Declare Function SetForm& Lib "spoolss.dll" Alias "SetFormA" (ByVal hPrinter As_ Long, ByVal pFormName As String, ByVal Level As Long, pForm As Byte)
說明
為指定表單設置信息。
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
Level | Long，設為1
pForm | Byte，包含一個有效FORM_INFO_1結構的緩衝區。
pFormName | String，欲設置表單的名字。
hPrinter | Long，指定一個打開印表機的句柄（用openprinter取得）
適用平台
windows NT
註解
請參考AddForm函數。


SetJob
VB聲明
Declare Function SetJob Lib "winspool.drv" Alias "SetJobA" (ByVal hPrinter As Long, ByVal JobId As Long, ByVal Level As Long, pJob As Byte, ByVal Command As Long) As Long
說明
對一個列印作業的狀態進行控制。
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hPrint | Long，指定一個打開印表機的句柄（用openprinter取得）
JobId | Long，要修改的作業的編號
Level | Long，0，1或2
pJob | Byte，指定一個緩衝區。如級別（Level）設為1或2，那該緩衝區就包含了一個JOB_INFO_1或JOB_INFO_2結構。如級別為0，緩衝區為NULL（變成ByVal As Long，以便傳遞零值）。如指定了一個結構，則來自那個結構的信息會用於改變列印作業的設置（除JobId，pPrinterName，pMachineName，pDriverName，Size，Submitte以及Time字段外）
Command | Long，下述常數之一：
 | JOB_CONTROL_CANCEL：取消作業
 | JOB_CONTROL_PAUSE ：暫停作業
 | JOB_CONTROL_RESTART：重新啟動一個已開始列印的作業
 | JOB_CONTROL_RESUME：恢復一個暫停的作業


SetPrinter
VB聲明
Declare Function SetPrinter Lib "winspool.drv" Alias "SetPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, pPrinter As Byte, ByVal Command As Long) As Long
說明
對一台印表機的狀態進行控制。
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
Level | Long，0，2或3（4或5用於windows95，5或6用於NT4.0）。
pPrinter | Byte，包含一個PRINTER_INFO_x的結構的緩衝區，其中的x代表級別的設定（Level）。假如級別為零，並且Command設為PRINTER_CONTROL_SET_STATUS，那緩衝區就包含了一個PRINTER_CONTROL_STATUS結構。否則，如級別為零，就設為NULL（要把聲明變成ByVal As Long，以便傳遞零值）
Command | Long，下述值之一：
 | 零，根據PRINTER_INFO_x結構改變印表機
 | PRINTER_CONTROL_CANCEL：取消作業
 | PRINTER_CONTROL_PURGE：刪除印表機的所有作業
 | PRINTER_CONTROL_RESUME：惠復一台暫停的印表機
 | PRINTER_CONTROL_SET_STATUS：載入印表機的PRINTER_CONTROL_STATUS結構（不可NT3.51下使用）
hPrinter | Long，指定一個已打開的印表機的句柄（用openprinter取得）
註解
在PRINTER_INFO_2結構的基礎上設置印表機狀態時，pServerName，AveragePPM，Status和cJobs字段都會被忽略。


SetPrinterData
VB聲明
Declare Function SetPrinterData Lib "winspool.drv" Alias "SetPrinterDataA" (ByVal hPrinter As Long, ByVal pValueName As String, ByVal dwType As Long, pData As Byte, ByVal cbData As Long) As Long
說明
設置印表機的註冊表配置信息。
返回值
Long，ERROR_SUCCESS表示成功，一個錯誤值表示失敗。
參數表
參數 | 類型及說明
hPrinter | Long，指定一個已打開的印表機的句柄（用openprinter取得）
pValueName | String，欲設置的註冊表值名
dwType | Long，定義數據的類型，使用來自API32. txt文件的，以REG_起頭的一個常數。
pData | Byte，指定一個緩衝區的第一個條目，緩衝區中包含了要設置的適當的數據類型
cbData | Long，緩衝區pData的長度


StartDoc
VB聲明
Declare Function StartDoc Lib "gdi32" Alias "StartDocA" (ByVal hdc As Long, lpdi As DOCINFO) As Long
說明
開始一個列印作業。
返回值
Long，如執行成功，返回文檔的作業編號，常數SP_ERROR失敗。會設置GetLastError
參數表
參數 | 類型及說明
ipdi | DOCINFO，對文檔定義的一個結構
hdc | Long，設備場景的句柄
cbSize | Long，結構的大小，目前是12個字節
lpszDocName | String，指向一個字串的指針，該字串包含了文檔名。這個文檔名會在列印管理程序中顯示出來
lpszOutput | String，指向一個字串的指針，該字串包含了輸出文件的名字。可設為vbNullString。表示將輸出結果傳送到設備
註解
對DOCINFO結構的定義如下： Type DOCINFO cbSize As Long lpszDocName As String lpszOutput As String End Type


StartDocPrinter
VB聲明
Declare Function StartDocPrinter Lib "winspool.drv" Alias "StartDocPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, pDocInfo As Byte) As Long
說明
在後台列印的級別啟動一個新文檔。
返回值
Long，非零表示成功，零表示失敗。
參數表
參數 | 類型及說明
hPrinter | Long，指定一個已打開的印表機的句柄（用openprinter取得）
Level | Long，1或2（僅用於win95）
pDocInfo | Byte，包含一個DOC_INFO_1或DOC_INFO_2結構得緩衝區
註解
在應用程序的級別並非有用。後台列印程序用它標識一個文檔的開始


StartPage
VB聲明
Declare Function StartPage Lib "gdi32" Alias "StartPage" (ByVal hdc As Long) As Long
說明
列印一個新頁前要先調用這個函數。
返回值
Long，非零表示成功，零表示失敗。
參數表
參數 | 類型及說明
hdc | Long，一個設備場景的句柄
註解
參考EndPage函數的「移植問題」


列印類5

列印函數，共五頁。 第一頁 ， 第二頁 ， 第三頁 ， 第四頁 ，第五頁
StartPagePrinter | 在列印作業中指定一個新頁的開始
WritePrinter | 將發送目錄中的數據寫入印表機
 | 完


StartPagePrinter
VB聲明
Declare Function StartPagePrinter Lib "winspool.drv" Alias "StartPagePrinter" (ByVal hPrinter As Long) As Long
說明
在列印作業中指定一個新頁的開始。
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hPrinter | Long，指定一個已打開的印表機的句柄（用openprinter取得）
註解
在應用程序的級別並非特別有用


WritePrinter
VB聲明
Declare Function WritePrinter Lib "winspool.drv" Alias "WritePrinter" (ByVal hPrinter As Long, pBuf As Any, ByVal cdBuf As Long, pcWritten As Long) As Long
說明
將發送目錄中的數據寫入印表機
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hPrinter | Long，指定一個已打開的印表機的句柄（用openprinter取得）
pBuf | 任何類型，包含了要寫入印表機的數據的一個緩衝區或結構
cdBuf | Long，pBuf緩衝區的長度
pcWritten | Long，指定一個Long型變量，用於裝載實際寫入的字節數


文件處理類1

文件處理函數，共八頁。第一頁， 第二頁 ， 第三頁 ， 第四頁 ， 第五頁 ， 第六頁 ， 第七頁 ， 第八頁
CloseHandle | 關閉一個內核對象。其中包括文件、文件映射、進程、線程、安全和同步對像等
CompareFileTime | 對比兩個文件的時間
CopyFile | 複製文件
CreateDirectory | 創建一個新目錄
CreateFile | 打開和創建文件、管道、郵槽、通信服務、設備以及控制台
CreateFileMapping | 創建一個新的文件映射對像
DeleteFile | 刪除指定文件
DeviceIoControl | 對設備執行指定的操作
DosDateTimeToFileTime | 將DOS日期和時間值轉換成一個 win32 FILETIME 值
FileTimeToDosDateTime | 將一個 win32 FILETIME 值轉換成DOS日期和時間值
FileTimeToLocalFileTime | 將一個FILETIME結構轉換成本地時間
FileTimeToSystemTime | 根據一個FILETIME結構的內容，裝載一個SYSTEMTIME結構
FindClose | 關閉由FindFirstFile函數創建的一個搜索句柄
FindFirstFile | 根據文件名查找文件
FindNextFile | 根據調用FindFirstFile函數時指定的一個文件名查找下一個文件
FlushFileBuffers | 針對指定的文件句柄，刷新內部文件緩衝區


CloseHandle
VB聲明
Declare Function CloseHandle Lib "kernel32" Alias "CloseHandle" (ByVal hObject As Long) As Long
說明
關閉一個內核對象。其中包括文件、文件映射、進程、線程、安全和同步對像等。涉及文件處理時，這個函數通常與vb的close命令相似。應盡可能的使用close，因為它支持vb的差錯控制。注意這個函數使用的文件句柄與vb的文件編號是完全不同的
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hObject | Long，欲關閉的一個對象的句柄
註解
除非對內核對象的所有引用都已關閉，否則該對像不會實際刪除


CompareFileTime
VB聲明
Declare Function CompareFileTime Lib "kernel32" Alias "CompareFileTime" (lpFileTime1 As FILETIME, lpFileTime2 As FILETIME) As Long
說明
根據FILETIME結構的信息，對比兩個文件的時間
返回值
Long，如兩個時間相等，就返回零；如lpFileTime1小於lpFileTime2，返回-1；如lpFileTime2小於lpFileTime1，返回1
參數表
參數 | 類型及說明
lpFileTime1 | FILETIME，參考FILETIME
lpFileTime2


CopyFile
VB聲明
Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
說明
複製文件。與vb的filecopy命令相似
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpExistingFileName | String，源文件名
lpNewFileName | String，目標文件名
bFailIfExists | Long，如果設為TRUE（非零），那麼一旦目標文件已經存在，則函數調用會失敗。否則目標文件被改寫


CreateDirectory

CreateDirectory, CreateDirectoryEx
VB聲明
Declare Function CreateDirectory& Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpNewDirectory As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) Declare Function CreateDirectoryEx& Lib "kernel32" Alias "CreateDirectoryExA" (ByVal lpTemplateDirectory As String, ByVal lpNewDirectory As String, lpSecurityAttributes As SECURITY_ATTRIBUTES)
說明
創建一個新目錄
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpTemplateDirectory | String，指定一個模板目錄的名字，從中複製默認屬性（比如目錄中文件的默認壓縮方式）。如設為vbNullString，則表示不使用模板
lpNewDirectory | String，新目錄的名字
lpSecurityAttributes | SECURITY_ATTRIBUTES，這個結構定義了目錄的安全特性——如果操作系統支持的話


CreateFile
VB聲明
Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
說明
這是一個全功能的例程，可打開和創建文件、管道、郵槽、通信服務、設備以及控制台
返回值
Long，如執行成功，則返回文件句柄。INVALID_HANDLE_VALUE表示出錯，會設置GetLastError。即使函數成功，但若文件存在，且指定了CREATE_ALWAYS 或 OPEN_ALWAYS，GetLastError也會設為ERROR_ALREADY_EXISTS
參數表
參數 | 類型及說明
lpFileName | String，要打開的文件的名字
dwDesiredAccess | Long，如果為 GENERIC_READ 表示允許對設備進行讀訪問；如果為 GENERIC_WRITE 表示允許對設備進行寫訪問（可組合使用）；如果為零，表示只允許獲取與一個設備有關的信息
dwShareMode | Long，零表示不共享； FILE_SHARE_READ 和/或 FILE_SHARE_WRITE 表示允許對文件進行共享訪問
lpSecurityAttributes | SECURITY_ATTRIBUTES，指向一個SECURITY_ATTRIBUTES結構的指針，定義了文件的安全特性（如果操作系統支持的話）
dwCreationDisposition | Long，下述常數之一：
 | CREATE_NEW | 創建文件；如文件存在則會出錯
 | CREATE_ALWAYS | 創建文件，會改寫前一個文件
 | OPEN_EXISTING | 文件必須已經存在。由設備提出要求
 | OPEN_ALWAYS | 如文件不存在則創建它
 | TRUNCATE_EXISTING | 講現有文件縮短為零長度
dwFlagsAndAttributes | Long，一個或多個下述常數
 | FILE_ATTRIBUTE_ARCHIVE | 標記歸檔屬性
 | FILE_ATTRIBUTE_COMPRESSED | 將文件標記為已壓縮，或者標記為文件在目錄中的默認壓縮方式
 | FILE_ATTRIBUTE_NORMAL | 默認屬性
 | FILE_ATTRIBUTE_HIDDEN | 隱藏文件或目錄
 | FILE_ATTRIBUTE_READONLY | 文件為只讀
 | FILE_ATTRIBUTE_SYSTEM | 文件為系統文件
 | FILE_FLAG_WRITE_THROUGH | 操作系統不得推遲對文件的寫操作
 | FILE_FLAG_OVERLAPPED | 允許對文件進行重疊操作
 | FILE_FLAG_NO_BUFFERING | 禁止對文件進行緩衝處理。文件只能寫入磁盤捲的扇區塊
 | FILE_FLAG_RANDOM_ACCESS | 針對隨機訪問對文件緩衝進行優化
 | FILE_FLAG_SEQUENTIAL_SCAN | 針對連續訪問對文件緩衝進行優化
 | FILE_FLAG_DELETE_ON_CLOSE | 關閉了上一次打開的句柄後，將文件刪除。特別適合臨時文件
 | 也可在Windows NT下組合使用下述常數標記：
 | SECURITY_ANONYMOUS， SECURITY_IDENTIFICATION， SECURITY_IMPERSONATION， SECURITY_DELEGATION， SECURITY_CONTEXT_TRACKING， SECURITY_EFFECTIVE_ONLY
hTemplateFile | Long，如果不為零，則指定一個文件句柄。新文件將從這個文件中複製擴展屬性
註解
打開一個通信端口時（如COM1），無論如何都要設置成 OPEN_EXISTING 這個函數代替了lOpen 和 lCreate函數，應該是我們的首選


CreateFileMapping
VB聲明
Declare Function CreateFileMapping Lib "kernel32" Alias "CreateFileMappingA" (ByVal hFile As Long, lpFileMappigAttributes As SECURITY_ATTRIBUTES, ByVal flProtect As Long, ByVal dwMaximumSizeHigh As Long, ByVal dwMaximumSizeLow As Long, ByVal lpName As String) As Long
說明
創建一個新的文件映射對像
返回值
Long，新建文件映射對象的句柄；零意味著出錯。會設置GetLastError。即使函數成功，但倘若返回的句柄屬於一個現成的文件映射對像，那麼GetLastError也會設置成ERROR_ALREADY_EXISTS。在這種情況下，文件映射的長度就是現有對象的長度，而不是這個函數指定的尺寸
參數表
參數 | 類型及說明
hFile | Long，指定欲在其中創建映射的一個文件句柄。&HFFFFFFFF&表示在內存中創建一個文件映射
lpFileMappigAttributes | SECURITY_ATTRIBUTES，指定一個安全對像，在創建文件映射時使用。如果為NULL（用ByVal As Long傳遞零），表示使用默認安全對像
flProtect | Long，下述常數之一：
 | PAGE_READONLY | 以只讀方式打開映射
 | PAGE_READWRITE | 以可讀、可寫方式打開映射
 | PAGE_WRITECOPY | 為寫操作留下備份
 | 可組合使用下述一個或多個常數
 | SEC_COMMIT | 為文件映射一個小節中的所有頁分配內存
 | SEC_IMAGE | 文件是個可執行文件
 | SEC_RESERVE | 為沒有分配實際內存的一個小節保留虛擬內存空間
dwMaximumSizeHigh | Long，文件映射的最大長度（高32位）
dwMaximumSizeLow | Long，文件映射的最小長度（低32位）。如這個參數和dwMaximumSizeHigh都是零，就用磁盤文件的實際長度
lpName | String，指定文件映射對象的名字。如存在這個名字的一個映射，函數就會打開它。用vbNullString創建一個無名的文件映射


DeleteFile
VB聲明
Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long
說明
刪除指定文件
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpFileName | String，欲刪除文件的名字
註解
與vb的kill語句相似，在windows 95下使用這個函數要小心——即使文件當前正由一個應用程序打開，該函數也會將其刪除


DeviceIoControl
VB聲明
Declare Function DeviceIoControl Lib "kernel32" Alias "DeviceIoControl" (ByVal hDevice As Long, ByVal dwIoControlCode As Long, lpInBuffer As Any, ByVal nInBufferSize As Long, lpOutBuffer As Any, ByVal nOutBufferSize As Long, lpBytesReturned As Long, lpOverlapped As OVERLAPPED) As Long
說明
對設備執行指定的操作
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hDevice | Long，設備句柄
dwIoControlCode | Long，帶有 FSCTL_ 前綴的常數。參考設備控制選項的部分列表
lpInBuffer | Any，具體取決於dwIoControlCode參數。參考設備控制選項的部分列表
nInBufferSize | Long，輸入緩衝區的長度
lpOutBuffer | Any，具體取決於dwIoControlCode參數。參考設備控制選項的部分列表
nOutBufferSize | Long，輸出緩衝區的長度
lpBytesReturned | Long，實際裝載到輸出緩衝區的字節數量
lpOverlapped | OVERLAPPED，這個結構用於重疊操作。針對同步操作，請用ByVal As Long傳遞零值
註解
可用於windows 95 和 windows nt，但並非所有的操作都得到了兩種操作系統的同時支持


DosDateTimeToFileTime
VB聲明
Declare Function DosDateTimeToFileTime Lib "kernel32" Alias "DosDateTimeToFileTime" (ByVal wFatDate As Long, ByVal wFatTime As Long, lpFileTime As FILETIME) As Long
說明
將DOS日期和時間值轉換成一個 win32 FILETIME 值
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
wFatDate | Long，16位DOS日期值
wFatTime | Long，16位DOS時間值
lpFileTime | FILETIME，用於裝載win32時間的一個結構


FileTimeToDosDateTime
VB聲明
Declare Function FileTimeToDosDateTime Lib "kernel32" Alias "FileTimeToDosDateTime" (lpFileTime As FILETIME, ByVal lpFatDate As Long, ByVal lpFatTime As Long) As Long
說明
將一個 win32 FILETIME 值轉換成DOS日期和時間值
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpFileTime | FILETIME，包含了欲轉換時間的一個結構
lpFatDate | Long，16位DOS日期值
lpFatTime | Long，16位DOS時間值


FileTimeToLocalFileTime
VB聲明
Declare Function FileTimeToLocalFileTime Lib "kernel32" Alias "FileTimeToLocalFileTime" (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long
說明
將一個FILETIME結構轉換成本地時間
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpFileTime | FILETIME，包含了UTC時間信息的一個結構
lpLocalFileTime | FILETIME，用於裝載轉換過後的本地時間的結構


FileTimeToSystemTime
VB聲明
Declare Function FileTimeToSystemTime Lib "kernel32" Alias "FileTimeToSystemTime" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long
說明
根據一個FILETIME結構的內容，裝載一個SYSTEMTIME結構
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpFileTime | FILETIME，包含了文件時間的一個結構
lpSystemTime | SYSTEMTIME，用於裝載系統時間信息的一個結構


FindClose
VB聲明
Declare Function FindClose Lib "kernel32" Alias "FindClose" (ByVal hFindFile As Long) As Long
說明
關閉由FindFirstFile函數創建的一個搜索句柄
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hFindFile | Long，由FindFirstFile函數提供的搜索句柄


FindFirstFile
VB聲明
Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
說明
根據文件名查找文件
返回值
Long，如執行成功，返回一個搜索句柄。如果出錯，返回一個INVALID_HANDLE_VALUE常數，一旦不再需要，應該用FindClose函數關閉這個句柄
參數表
參數 | 類型及說明
lpFileName | String，欲搜索的文件名。可包含通配符，並可包含一個路徑或相對路徑名
lpFindFileData | WIN32_FIND_DATA，這個結構用於裝載與找到的文件有關的信息。該結構可用於後續的搜索
註解
由這個函數返回的句柄可以作為一個參數用於FindNextFile函數。這樣一來，就可以方便的枚舉出與lpFileName參數指定的文件名相符的所有文件


FindNextFile
VB聲明
Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
說明
根據調用FindFirstFile函數時指定的一個文件名查找下一個文件
返回值
Long，非零表示成功，零表示失敗。如不再有與指定條件相符的文件，會將GetLastError設置成ERROR_NO_MORE_FILES
參數表
參數 | 類型及說明
hFindFile | Long，由FindFirstFile函數返回的搜索句柄
lpFindFileData | WIN32_FIND_DATA，這個結構用於裝載與找到的文件有關的信息


FlushFileBuffers
VB聲明
Declare Function FlushFileBuffers Lib "kernel32" Alias "FlushFileBuffers" (ByVal hFile As Long) As Long
說明
針對指定的文件句柄，刷新內部文件緩衝區
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hFile | Long，文件句柄


文件處理類2

文件處理函數，共八頁。 第一頁 ，第二頁， 第三頁 ， 第四頁 ， 第五頁 ， 第六頁 ， 第七頁 ， 第八頁
FlushViewOfFile | 將寫入文件映射緩衝區的所有數據都刷新到磁盤
GetBinaryType | 判斷文件是否可以執行
GetCompressedFileSize | 判斷一個壓縮文件在磁盤上實際佔據的字節數
GetCurrentDirectory | 在一個緩衝區中裝載當前目錄
GetDiskFreeSpace | 獲取與一個磁盤的組織有關的信息，以及瞭解剩餘空間的容量
GetDiskFreeSpaceEx | 獲取與一個磁盤的組織以及剩餘空間容量有關的信息
GetDriveType | 判斷一個磁盤驅動器的類型
GetExpandedName | 取得一個壓縮文件的全名
GetFileAttributes | 判斷指定文件的屬性
GetFileInformationByHandle | 這個函數提供了獲取文件信息的一種機制
GetFileSize | 判斷文件長度
GetFileTime | 取得指定文件的時間信息
GetFileType | 在給出文件句柄的前提下，判斷文件類型
GetFileVersionInfo | 從支持版本標記的一個模塊裡獲取文件版本信息
GetFileVersionInfoSize | 針對包含了版本資源的一個文件，判斷容納文件版本信息需要一個多大的緩衝區
GetFullPathName | 獲取指定文件的完整路徑名


FlushViewOfFile
VB聲明
Declare Function FlushViewOfFile Lib "kernel32" Alias "FlushViewOfFile" (lpBaseAddress As Any, ByVal dwNumberOfBytesToFlush As Long) As Long
說明
將寫入文件映射緩衝區的所有數據都刷新到磁盤
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpBaseAddress | Any，包含了刷新基本地址的一個Long值（參考註解）
dwNumberOfBytesToFlush | Long，欲刷新的字節數
註解
如與遠程系統建立了文件映射，那麼雖然這個函數可保證數據已在當前系統寫入，但不能保證數據實際寫入遠程系統的磁盤——除非用FILE_FLAG_WRITE_THROUGH 選項打開文件。該選項的作用是禁止寫延遲，所有更新的數據都必須立即寫入磁盤 這個函數的另一種聲明形式：Declare Function FlushViewOfFile& Lib "kernel32" (ByVal lpBaseAddress As Long, ByVal dwNumberOfBytesToFlush As Long)


GetBinaryType
VB聲明
Declare Function GetBinaryType Lib "kernel32" Alias "GetBinaryTypeA" (ByVal lpApplicationName As String, lpBinaryType As Long) As Long
說明
判斷文件是否可以執行
返回值
Long，非零表示成功，零表示失敗
參數表
參數 | 類型及說明
lpApplicationName | String，欲測試文件的完整路徑名
lpBinaryType | Long，用於裝載文件類型的一個變量。這些類型由下述任何一個常數定義：
 | SCS_32BIT_BINARY | win32執行程序
 | SCS_DOS_BINARY | DOS執行程序
 | SCS_OS216_BINARY | 16位OS/2執行程序
 | SCS_PIF_BINARY | 用於執行DOS程序的一個pif文件
 | SCS_POSIX_BINARY | 一個Posix應用
 | SCS_WOW_BINARY | 16位windows執行程序


GetCompressedFileSize
VB聲明
Declare Function GetCompressedFileSize Lib "kernel32" Alias "GetCompressedFileSizeA" (ByVal lpFileName As String, lpFileSizeHigh As Long) As Long
說明
判斷一個壓縮文件在磁盤上實際佔據的字節數
返回值
Long，返回文件長度。&HFFFFFFFF表示出錯。注意如lpFileSizeHigh不為NULL，且結果為&HFFFFFFFF，那麼必須調用GetLastError，判斷是否實際發生了一個錯誤，因為這是一個有效的結果
參數表
參數 | 類型及說明
lpFileName | String，欲測試的文件名
lpFileSizeHigh | Long，指定一個Long值，用於裝載一個64位文件尺寸的高32位。如長度沒有超過2︿32字節，則可設為NULL（變成ByVal）
註解
如磁盤捲已被壓縮，可檢查這個函數的結果是否與GetFileSize函數的結果有異，從而判斷文件是否也被壓縮（如有異，表明文件已被壓縮）


GetCurrentDirectory
VB聲明
Declare Function GetCurrentDirectory Lib "kernel32" Alias "GetCurrentDirectory" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
說明
在一個緩衝區中裝載當前目錄
返回值
Long，裝載到lpBuffer的字節數。如nBufferLength的長度不夠，不足以容納目錄，則返回值是必要的緩衝區長度（要求至少這個長度），其中包括空中止字符。零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
nBufferLength | Long，lpBuffer緩衝區的長度
lpBuffer | String，指定一個預定義字串，用於裝載當前目錄


GetDiskFreeSpace
VB聲明
Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTtoalNumberOfClusters As Long) As Long
說明
獲取與一個磁盤的組織有關的信息，以及瞭解剩餘空間的容量
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpRootPathName | String，不包括卷名的一個磁盤根路徑
lpSectorsPerCluster | Long，用於裝載一個簇內扇區數的變量
lpBytesPerSector | Long，用於裝載一個扇區內字節數的變量
lpNumberOfFreeClusters | Long，用於裝載磁盤上剩餘簇數的變量
lpTtoalNumberOfClusters | Long，用於裝載磁盤上總簇數的變量
註解
在採用FAT16格式的windows95系統中，如一個驅動器（分區）的容量超過了2GB，則不應使用這個函數。此時，這個函數能識別的最大分區容量只有2GB


GetDiskFreeSpaceEx
VB聲明
Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" (ByVal lpRootPathName As String, lpFreeBytesAvailableToCaller As LARGE_INTEGER, lpTotalNumberOfBytes As LARGE_INTEGER, lpTotalNumberOfFreeBytes As LARGE_INTEGER) As Long
說明
獲取與一個磁盤的組織以及剩餘空間容量有關的信息
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpRootPathName | String，不包括卷名的磁盤根路徑名
lpFreeBytesAvailableToCaller | LARGE_INTEGER，指定一個變量，用於容納調用者可用的字節數量
lpTotalNumberOfBytes | LARGE_INTEGER，指定一個變量，用於容納磁盤上的總字節數
lpTotalNumberOfFreeBytes | LARGE_INTEGER，指定一個變量，用於容納磁盤上可用的字節數
適用平台
Windows 95 OSR2，Windows NT 4.0
註解
LARGE_INTEGER結構與FILETIME結構在內部完全一致。正式調用前，用GetVersionEx判斷函數是否得到了支持。在Windows 95 OSR2環境中，OSVERSIONINFO結構的dwBuildNumbe字段會大於1000


GetDriveType
VB聲明
Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
說明
判斷一個磁盤驅動器的類型
返回值
Long，如驅動器不能識別，則返回零。如指定的目錄不存在，則返回1。如執行成功，則用下述任何一個常數指定驅動器類型：DRIVE_REMOVABLE， DRIVE_FIXED， DRIVE_REMOTE， DRIVE_CDROM 或 DRIVE_RAMDISK
參數表
參數 | 類型及說明
nDrive | String，包含了驅動器根目錄路徑的一個字串


GetExpandedName
VB聲明
Declare Function GetExpandedName Lib "lz32.dll" Alias "GetExpandedNameA" (ByVal lpszSource As String, ByVal lpszBuffer As String) As Long
說明
取得一個壓縮文件的全名。文件必須是用 COMPRESS.EXE 程序壓縮的，而且在壓縮時適用/r選項
返回值
Long，1表示成功，LZERROR_BADVALUE 表示失敗
參數表
參數 | 類型及說明
lpszSource | String，壓縮文件的名字
lpszBuffer | String，指定一個緩衝區，用於裝載文件全名
註解
注意事先將lpszBuffer字串初始化成一個合適的長度，使其足以容納文件名


GetFileAttributes
VB聲明
Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long
說明
判斷指定文件的屬性
返回值
Long，-1表示出錯。如返回包含了標誌的一個Long值，則指定文件的屬性。其中的標誌對應於帶有FILE_ATTRIBUTE_???前綴的常數。具體參考BY_HANDLE_FILE_INFORMATION結構的File Attribute Types table表格
參數表
參數 | 類型及說明
lpFileName | String，指定欲獲取屬性的一個文件的名字


GetFileInformationByHandle
VB聲明
Declare Function GetFileInformationByHandle Lib "kernel32" Alias "GetFileInformationByHandle" (ByVal hFile As Long, lpFileInformation As BY_HANDLE_FILE_INFORMATION) As Long
說明
這個函數提供了獲取文件信息的一種機制——在一個BY_HANDLE_FILE_INFORMATION結構中裝載與文件有關的信息
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hFile | Long，文件的句柄
lpFileInformation | BY_HANDLE_FILE_INFORMATION，用於容納文件信息的結構


GetFileSize
VB聲明
Declare Function GetFileSize Lib "kernel32" Alias "GetFileSize" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long
說明
判斷文件長度
返回值
Long，返回文件長度。&HFFFFFFFF表示出錯。注意如lpFileSizeHigh不為NULL，且結果為&HFFFFFFFF，那麼必須調用GetLastError，判斷是否實際發生了一個錯誤，因為這是一個有效的結果
參數表
參數 | 類型及說明
hFile | Long，文件的句柄
lpFileSizeHigh | Long，指定一個長整數，用於裝載一個64位文件長度的頭32位。如這個長度沒有超過2︿32字節，則該參數可以設為NULL（變成ByVal）


GetFileTime
VB聲明
Declare Function GetFileTime Lib "kernel32" Alias "GetFileTime" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
說明
取得指定文件的時間信息
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hFile | Long，文件的句柄
lpCreationTime | FILETIME，用於裝載文件的創建時間
lpLastAccessTime | FILETIME，用於裝載文件上一次訪問的時間（FAT文件系統不支持這一特性）
lpLastWriteTime | FILETIME，用於裝載文件上一次修改的時間
註解
如果不需要特定的信息，那麼lpCreationTime，lpLastAccessTime，lpLastWriteTime都可以設置為零（用ByVal As Long）。這個函數返回的文件時間採用UTC格式


GetFileType
VB聲明
Declare Function GetFileType Lib "kernel32" Alias "GetFileType" (ByVal hFile As Long) As Long
說明
在給出文件句柄的前提下，判斷文件類型
返回值
Long，下述常數之一：
FILE_TYPE_UNKNOWN | 文件類型未知
FILE_TYPE_DISK | 屬於磁盤文件
FILE_TYPE_CHAR | 文件是一個控制台或印表機
FILE_TYPE_PIPE | 文件是個管道
參數表
參數 | 類型及說明
hFile | Long，要檢查的文件的句柄


GetFileVersionInfo
VB聲明
Declare Function GetFileVersionInfo& Lib "version.dll" Alias "GetFileVersionInfoA" (ByVal lptstrFilename As String, ByVal dwHandle As Long, ByVal dwLen As Long, lpData As Byte)
說明
從支持版本標記的一個模塊裡獲取文件版本信息
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lptstrFilename | String，欲從中載入版本信息的一個文件的名字
dwHandle | Long，win32中未用
dwLen | Long，由lpData參數指定的字節數組或緩衝區的大小。用GetFileVersionInfoSize函數判斷要求的緩衝區長度有多大
lpData | Byte，指定一個字節緩衝區的第一個字節。該緩衝區用於裝載文件的版本信息
註解
在win32下不用dwHandle參數
其他
請看vb的api文本查看器中的聲明：Declare Function GetFileVersionInfo Lib "version.dll" Alias "GetFileVersionInfoA" (ByVal lptstrFilename As String, ByVal dwHandle As Long, ByVal dwLen As Long, lpData As Any) As Long


GetFileVersionInfoSize
VB聲明
Declare Function GetFileVersionInfoSize Lib "version.dll" Alias "GetFileVersionInfoSizeA" (ByVal lptstrFilename As String, lpdwHandle As Long) As Long
說明
針對包含了版本資源的一個文件，判斷容納文件版本信息需要一個多大的緩衝區
返回值
Long，容納文件的版本資源所需的緩衝區長度。如文件不包含版本信息，則返回一個0值。會設置GetLastError
參數表
參數 | 類型及說明
lptstrFilename | String，包含了版本資源的一個文件的名字
lpdwHandle | Long，在這個變量中載入0值
註解
lpdwHandle參數在win32中已經放棄


GetFullPathName
VB聲明
Declare Function GetFullPathName& Lib "kernel32" Alias "GetFullPathNameA" (ByVal lpFileName As String, ByVal nBufferLength As Long, ByVal lpBuffer As String, lpFilePart As Long)
說明
獲取指定文件的完整路徑名
返回值
Long，裝載到lpBuffer中的字符數量（排除空中止字符）。如緩衝區的長度不足以容下完整的路徑，則返回值就是要求的緩衝區大小。零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpFileName | String，指定文件名（長文件名或8.3格式的DOS文件名）
nBufferLength | Long，lpBuffer字串的長度
lpBuffer | String，指定一個預先定義好的字串，用於裝載目標文件的驅動器及路徑名稱。如存在長文件名，那麼這個參數保存的就肯定是長文件名
lpFilePart | Long，指定一個長整數變量，用於裝載文件名起始的地方。參考註解
註解
lpFilePart參數在vb裡很難使用。它的問題在於：儘管windows在這個Long值中裝載lpBuffer字串中的地址，用它表示路徑信息文件名部分的起始處。但非常不幸，由vb創建的、傳遞給api的ANSI字串緩衝區也會使用這個地址。等這個函數返回的時候，vb已將返回的（lpBuffer）字串複製回它的內部Unicode字串緩衝區，所以lpFilePart地址已沒有任何意義。因此，我們面臨兩種選擇。首先，可以簡單的不使用lpFilePart信息（忽略windows裝載在參數中的值）。其次，可以將lpBuffer參數變成一個字節數組（lpFilePart As Byte——將數組的第一個元素作為參數傳遞）
其他
在vb的api文本查看器中複製的聲明為：Declare Function GetFullPathName Lib "kernel32" Alias "GetFullPathNameA" (ByVal lpFileName As String, ByVal nBufferLength As Long, ByVal lpBuffer As String, ByVal lpFilePart As String) As Long


文件處理類3

文件處理函數，共八頁。 第一頁 ， 第二頁 ，第三頁， 第四頁 ， 第五頁 ， 第六頁 ， 第七頁 ， 第八頁
GetLogicalDrives | 判斷系統中存在哪些邏輯驅動器字母
GetLogicalDriveStrings | 獲取一個字串，其中包含了當前所有邏輯驅動器的根驅動器路徑
GetOverlappedResult | 判斷一個重疊操作當前的狀態
GetPrivateProfileInt | 為初始化文件（.ini文件）中指定的條目獲取一個整數值
GetPrivateProfileSection | 獲取指定小節（在.ini文件中）所有項名和值的一個列表
GetPrivateProfileString | 為初始化文件中指定的條目取得字串
GetProfileInt | 取得win.ini初始化文件中指定條目的一個整數值
GetProfileSection | 獲取指定小節（在win.ini文件中）所有項名和值的一個列表
GetProfileString | 為win.ini初始化文件中指定的條目取得字串
GetShortPathName | 獲取指定文件的短路徑名
GetSystemDirectory | 取得Windows系統目錄（即System目錄）的完整路徑名
GetTempFileName | 這個函數包含了一個臨時文件的名字，它可由應用程序使用
GetTempPath | 獲取為臨時文件指定的路徑
GetVolumeInformation | 獲取與一個磁盤捲有關的信息
GetWindowsDirectory | 獲取Windows目錄的完整路徑名
hread | 參考lread


GetLogicalDrives
VB聲明
Declare Function GetLogicalDrives Lib "kernel32" Alias "GetLogicalDrives" () As Long
說明
判斷系統中存在哪些邏輯驅動器字母
返回值
Long，這個結構中的二進制位標誌著存在哪些驅動器。其中，位0設為1表示驅動器A:存在於系統中；位1設為1表示存在B:驅動器；以次類推


GetLogicalDriveStrings
VB聲明
Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
說明
獲取一個字串，其中包含了當前所有邏輯驅動器的根驅動器路徑
返回值
Long，裝載到lpBuffer的字符數量（排除空中止字符）。如緩衝區的長度不夠，不能容下路徑，則返回值就變成要求的緩衝區大小。零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
nBufferLength | Long，lpBuffer字串的長度
lpBuffer | String，用於裝載邏輯驅動器名稱的字串。每個名字都用一個NULL字符分隔，在最後一個名字後面用兩個NULL表示中止（空中止）


GetOverlappedResult
VB聲明
Declare Function GetOverlappedResult Lib "kernel32" Alias "GetOverlappedResult" (ByVal hFile As Long, lpOverlapped As OVERLAPPED, lpNumberOfBytesTransferred As Long, ByVal bWait As Long) As Long
說明
判斷一個重疊操作當前的狀態
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError。如bWait為FALSE，而且異步操作仍在執行，則函數回返回零，而GetLastError會設置成ERROR_IO_INCOMPLETE
參數表
參數 | 類型及說明
hFile | Long，指定一個文件、管道或通信設備的句柄
lpOverlapped | OVERLAPPED，為欲檢查的I/O操作指定的一個結構
lpNumberOfBytesTransferred | Long，用於容納傳輸字節數量的一個變量
bWait | Long，如果為TRUE，就一直等到異步操作結束才返回。FALSE表示立即返回


GetPrivateProfileInt
VB聲明
Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long
說明
為初始化文件中指定的條目獲取一個整數值
返回值
Long，找到的條目的值；如指定的條目未找到，就返回默認值。如找到的數字不是一個合法的整數，函數會返回其中合法的一部分。如，對於「xyz=55zz」這個條目，函數返回55。這個函數也能理解採用標準C語言格式的十六進制數字：用0x作為一個十六進制數字的前綴——所以0x55ab等價於vb的&H55AB
參數表
參數 | 類型及說明
lpApplicationName | String，指定在其中查找條目的小節。注意這個字串是不區分大小寫的
lpKeyName | String，欲獲取的設置項或條目。這個支持不區分大小寫
nDefault | Long，指定條目未找到時返回的默認值
lpFileName | String，初始化文件的名字。如果沒有指定完整的路徑名，windows就會在Windows目錄中搜索文件
註解
在Windows NT中，有些初始化文件實際是在註冊表中。可在註冊表的下面這個項處找到這些文件的一個列表：HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping


GetPrivateProfileSection
VB聲明
Declare Function GetPrivateProfileSection Lib "kernel32" Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
說明
獲取指定小節所有項名和值的一個列表
返回值
Long，裝載到lpReturnedString緩衝區的字符數量。如緩衝區的容量不夠大，不能容下所有信息，就返回nSize-2
參數表
參數 | 類型及說明
lpAppName | String，欲獲取的小節。注意這個字串不區分大小寫
lpReturnedString | String，項和值字串的列表。每個字串都由一個NULL字符分隔，最後一個字串後面用兩個NULL字符中止
nSize | Long，lpReturnedString緩衝區的大小。在windows系統中最大值為32767
lpFileName | String，初始化文件的名字。如沒有指定完整路徑名，windows就在Windows目錄中查找文件
註解
參考對GetPrivateProfileInt函數的註解


GetPrivateProfileString
VB聲明
Declare Function GetPrivateProfileString& Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String)
說明
為初始化文件中指定的條目取得字串
返回值
Long，複製到lpReturnedString緩衝區的字節數量，其中不包括那些NULL中止字符。如lpReturnedString緩衝區不夠大，不能容下全部信息，就返回nSize-1（若lpApplicationName或lpKeyName為NULL，則返回nSize-2）
參數表
參數 | 類型及說明
lpApplicationName | String，欲在其中查找條目的小節名稱。這個字串不區分大小寫。如設為vbNullString，就在lpReturnedString緩衝區內裝載這個ini文件所有小節的列表
lpKeyName | String，欲獲取的項名或條目名。這個字串不區分大小寫。如設為vbNullString，就在lpReturnedString緩衝區內裝載指定小節所有項的列表
lpDefault | String，指定的條目沒有找到時返回的默認值。可設為空（""）
lpReturnedString | String，指定一個字串緩衝區，長度至少為nSize
nSize | Long，指定裝載到lpReturnedString緩衝區的最大字符數量
lpFileName | String，初始化文件的名字。如沒有指定一個完整路徑名，windows就在Windows目錄中查找文件
註解
如lpKeyName參數為vbNullString，那麼lpReturnedString緩衝區會載入指定小節所有設置項的一個列表。每個項都用一個NULL字符分隔，最後一個項用兩個NULL字符中止。也請參考GetPrivateProfileInt函數的註解
其他
在vb的api文本查看器中複製的聲明為：Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long


GetProfileInt
VB聲明
Declare Function GetProfileInt Lib "kernel32" Alias "GetProfileIntA" (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal nDefault As Long) As Long
說明
取得win.ini初始化文件中指定條目的一個整數值
返回值
Long，找到條目的值；如指定的條目未找到，就返回默認值。如找到的數字不是一個合法的整數，函數就會返回其中合法的一部分。例如，對於「xyz=55zz」這個條目，函數會返回55。這個函數也能理解採用標準C語言格式的十六進制數字：用0x作為一個十六進制數字的前綴——所以0x55ab等價於vb的&H55AB
參數表
參數 | 類型及說明
lpAppName | String，欲在其中搜索條目的小節名。這個字串不區分大小寫
lpKeyName | String，欲獲取的項名或條目名。這個字串不區分大小寫
nDefault | Long，指定在條目未找到時返回的默認值
註解
參考對GetPrivateProfileInt函數的註解


GetProfileSection
VB聲明
Declare Function GetProfileSection Lib "kernel32" Alias "GetProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long
說明
獲取指定小節（在win.ini文件中）所有項名和值的一個列表
返回值
Long，裝載到lpReturnedString緩衝區的字符數量。如緩衝區的長度不足以容下所有信息，則返回nSize-2
參數表
參數 | 類型及說明
lpAppName | String，欲獲取的小節。這個字串不區分大小寫
lpReturnedString | String，用於容納項和值字串列表的一個緩衝區。每個字串都用一個NULL分隔，最後一個字串用兩個NULL字符中止
nSize | Long，lpReturnedString緩衝區的大小，在windows 95中最大為32767
註解
參考GetPrivateProfileInt函數的註解


GetProfileString
VB聲明
Declare Function GetProfileString Lib "kernel32" Alias "GetProfileStringA" (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long
說明
為win.ini初始化文件中指定的條目取得字串
返回值
Long，複製到lpReturnedString緩衝區的字節數量，其中不包括那些NULL中止字符。如lpReturnedString緩衝區不夠大，不能容下全部信息，就返回nSize-1（若lpAppName或lpKeyName為NULL，則返回nSize-2）
參數表
參數 | 類型及說明
lpAppName | String，要在其中查找條目的小節名。這個字串不區分大小寫。如果為vbNullString，則在lpReturnedString緩衝區裝載這個.ini文件的所有小節的一個列表
lpKeyName | String，欲獲取的項名或條目名。這個字串不區分大小寫。如果為vbNullString，則在lpReturnedString緩衝區裝載指定小節內所有項的一個列表
lpDefault | String，指定條目未找到時返回的默認值。可設為空（""）
lpReturnedString | String，指定一個預先初始化好的字串緩衝區，長度至少為nSize個字符
nSize | Long，裝載到lpReturnedString緩衝區的最大字符數
註解
如lpKeyName參數為零，那麼lpReturnedString緩衝區會載入指定小節內所有設置項的一個列表。每個項都用一個NULL字符分隔，最後那個項用兩個NULL字符中止


GetShortPathName
VB聲明
Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathName" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
說明
獲取指定文件的短路徑名
返回值
Long，裝載到lpszShortPath緩衝區的字符數量。如lpszShortPath的長度不足，不能容下文件名，就返回需要的緩衝區長度
參數表
參數 | 類型及說明
lpszLongPath | String，指定欲獲取短路徑名的那個文件的名字。可以是個完整路徑，或者由當前目錄決定
lpszShortPath | String，指定一個緩衝區，用於裝載文件的短路徑和文件名
cchBuffer | Long，lpszShortPath緩衝區長度


GetSystemDirectory
VB聲明
Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
說明
這個函數能取得Windows系統目錄（System目錄）的完整路徑名。在這個目錄中，包含了所有必要的系統文件。根據微軟的標準，其他定制控件和一些共享組件也可放到這個目錄。通常應避免在這個目錄裡創建文件。在網絡環境中，往往需要管理員權限才可對這個目錄進行寫操作
返回值
Long，裝載到lpBuffer緩衝區的字符數量。如lpBuffer不夠大，不能容下文件名，則返回要求的緩衝區長度
參數表
參數 | 類型及說明
lpBuffer | String，用於裝載系統目錄路徑名的一個字串緩衝區。它應事先初始化成nSize+1個字符的長度。通常至少要為這個緩衝區分配MAX_PATH個字符的長度
nSize | Long，lpBuffer字串的最大長度


GetTempFileName
VB聲明
Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" (ByVal lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long
說明
這個函數包含了一個臨時文件的名字，它可由應用程序使用
返回值
Long，最終用於生成文件名的wUnique數字的值。如wUnique參數不為零，這就是參數的值。零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpszPath | String，臨時文件使用的目錄。通常用GetTempPath函數獲得
lpPrefixString | String，要使用的文件名前綴。頭三個字符作為文件名前綴使用
wUnique | Long，追加到前綴字串後面的數字。如果為0，則這個函數會用一個隨機數字生成文件。隨後，它會檢查是否存在同名的文件。如果存在，函數會增加這個數字，並繼續嘗試，直到生成一個獨一無二的名字為止。文件在驅動器上會以長度為0字節的形式保存。如果不為零，就不會創建文件，而且函數不會核實它是否一個獨一無二的文件名
lpTempFileName | String，用於裝載新建臨時文件名的緩衝區，這個緩衝區的長度至少應為MAX_PATH個字符
註解
函數使用的文件名肯定採用ANSI字符集。臨時文件不會被windows自動刪除


GetTempPath
VB聲明
Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
說明
獲取為臨時文件指定的路徑
返回值
Long，裝載到lpBuffer的字符數。如當前緩衝區的長度不夠，不能容下整個路徑，則返回lpBuffer需要的長度。零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
nBufferLength | Long，lpBuffer字串的長度
lpBuffer | String，用於裝載臨時文件路徑的一個預初始化字串
註解
臨時路徑是由TMP環境變量指定的一個路徑。如TMP不存在，則是由TEMP環境變量指定的路徑。如果這兩個環境變量都不存在，就是當前目錄


GetVolumeInformation
VB聲明
Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
說明
獲取與一個磁盤捲有關的信息
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpRootPathName | String，欲獲取信息的那個卷的根路徑
lpVolumeNameBuffer | String，用於裝載卷名（卷標）的一個字串
nVolumeNameSize | Long，lpVolumeNameBuffer字串的長度
lpVolumeSerialNumber | Long，用於裝載磁盤捲序列號的變量
lpMaximumComponentLength | Long，指定一個變量，用於裝載文件名每一部分的長度。例如，在「c:\component1\component2.ext」的情況下，它就代表component1或component2名稱的長度
lpFileSystemFlags | Long，用於裝載一個或多個二進制位標誌的變量。對這些標誌位的解釋如下：
 | FS_CASE_IS_PRESERVED | 文件名的大小寫記錄於文件系統
 | FS_CASE_SENSITIVE | 文件名要區分大小寫
 | FS_UNICODE_STORED_ON_DISK | 文件名保存為Unicode格式
 | FS_PERSISTANT_ACLS | 文件系統支持文件的訪問控制列表（ACL）安全機制
 | FS_FILE_COMPRESSION | 文件系統支持逐文件的進行文件壓縮
 | FS_VOL_IS_COMPRESSED | 整個磁盤捲都是壓縮的
lpFileSystemNameBuffer | String，指定一個緩衝區，用於裝載文件系統的名稱（如FAT，NTFS以及其他）
nFileSystemNameSize | Long，lpFileSystemNameBuffer字串的長度


GetWindowsDirectory
VB聲明
Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
說明
這個函數能獲取Windows目錄的完整路徑名。在這個目錄裡，保存了大多數windows應用程序文件及初始化文件
返回值
Long，複製到lpBuffer的一個字串的長度。如lpBuffer不夠大，不能容下整個字串，就會返回lpBuffer要求的長度。零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpBuffer | String，指定一個字串緩衝區，用於裝載Windows目錄名。除非是根目錄，否則目錄中不會有一個中止用的「\」字符
nSize | Long，lpBuffer字串的最大長度


hread
VB聲明
Declare Function hread Lib "kernel32" Alias "_hread" (ByVal hFile As Long, lpBuffer As Any, ByVal lBytes As Long) As Long
說明
參考lread
註解

這個函數在win16中用於讀取大於64KB的數據塊。但win32的文件I/O函數並不受這個64KB的限制


文件處理類4

文件處理函數，共八頁。 第一頁 ， 第二頁 ， 第三頁 ，第四頁， 第五頁 ， 第六頁 ， 第七頁 ， 第八頁
hwrite | 參考lwrite函數
lclose | 關閉指定的文件
lcreat | 創建一個文件
llseek | 設置文件中進行讀寫的當前位置
LockFile | 鎖定文件的某一部分，使其不與其他應用程序共享
LockFileEx | 與LockFile相似，只是它提供了更多的功能
lopen | 以二進制模式打開指定的文件
lread | 將文件中的數據讀入內存緩衝區
lwrite | 將數據從內存緩衝區寫入一個文件
LZClose | 關閉由LZOpenFile 或 LZInit函數打開的一個文件
LZCopy | 複製一個文件
LZInit | 這個函數用於初始化內部緩衝區
LZOpenFile | 該函數能執行大量不同的文件處理，而且兼容於壓縮文件
LZRead | 將數據從文件讀入內存緩衝區
LZSeek | 設置一個文件中進行讀寫的當前位置
MapViewOfFile | 將一個文件映射對像映射到當前應用程序的地址空間


hwrite
VB聲明
Declare Function hwrite Lib "kernel32" Alias "_hwrite" (ByVal hFile As Long, ByVal lpBuffer As String, ByVal lBytes As Long) As Long
說明
參考lwrite函數
註解

這個函數在win16中用於寫入大於64KB的數據塊。但win32的文件I/O函數並不受這個64KB的限制


lclose
VB聲明
Declare Function lclose Lib "kernel32" Alias "_lclose" (ByVal hFile As Long) As Long
說明
關閉指定的文件，請參考CloseHandle函數，瞭解進一步的情況


lcreat
VB聲明
Declare Function lcreat Lib "kernel32" Alias "_lcreat" (ByVal lpPathName As String, ByVal iAttribute As Long) As Long
說明
創建一個文件。如文件已經存在，就會將其縮短成零長度，並將其打開，以便讀寫
返回值
Long，如執行成功，返回打開文件的句柄。如果出錯，則返回HFILE_ERROR.
參數表
參數 | 類型及說明
lpPathName | String，欲創建的文件的名字
iAttribute | Long，下述值之一 0——文件能夠讀寫 1——創建只讀文件 2——創建隱藏文件 3——創建系統文件
註解
該函數會打開已由其他應用程序打開的文件，所以使用它時要小心。win32的CreateFile函數已取代了這個函數。這個函數與vb的open語句作用相同


llseek
VB聲明
Declare Function llseek Lib "kernel32" Alias "_llseek" (ByVal hFile As Long, ByVal lOffset As Long, ByVal iOrigin As Long) As Long
說明
設置文件中進行讀寫的當前位置。該函數與vb的seek語句類似。如果用vb的open命令打開了一個文件，那麼不要再對這個文件使用llseek函數
返回值
Long，返回一個新位置，設置成從文件起始處算起的一個偏移量。HFILE_ERROR表示函數執行出錯。會設置GetLastError
參數表
參數 | 類型及說明
hFile | Long，系統文件句柄
lOffset | Long，字節偏移量
iOrigin | Long，下述常數之一
 | FILE_BEGIN | lOffset將新位置指定成從文件起始處的一個偏移距離
 | FILE_CURRENT | lOffset將新位置指定成從當前位置開始的一個偏移距離
 | FILE_END | lOffset將新位置指定成從文件結尾開始的的一個偏移距離
註解
參考SetFilePointer函數，認識能對較大文件進行處理的一個近似函數.


LockFile
VB聲明
Declare Function LockFile Lib "kernel32" Alias "LockFile" (ByVal hFile As Long, ByVal dwFileOffsetLow As Long, ByVal dwFileOffsetHigh As Long, ByVal nNumberOfBytesToLockLow As Long, ByVal nNumberOfBytesToLockHigh As Long) As Long
說明
在windows中，文件可用共享模式打開——在這種情況下，多個進程可同時訪問該文件。利用這個函數，要對文件進行讀寫的一個應用程序可將文件的某一部分鎖定起來，使其不能由其他應用程序訪問。這樣便避免了同時讀寫時發生的衝突
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hFile | Long，欲鎖定文件的句柄
dwFileOffsetLow | Long，指定欲鎖定區域起始處的低32位地址
dwFileOffsetHigh | Long，指定欲鎖定區域起始處的高32位地址
nNumberOfBytesToLockLow | Long，鎖定區域包含字符數量的低32位值
nNumberOfBytesToLockHigh | Long，鎖定區域包含字符數量的高32位值
註解
鎖定的區域不能進行重疊操作。由不同的操作系統決定，可能要求先運行share.exe才能保證該函數正常工作


LockFileEx
VB聲明
Declare Function LockFileEx Lib "kernel32" Alias "LockFileEx" (ByVal hFile As Long, ByVal dwFlags As Long, ByVal dwReserved As Long, ByVal nNumberOfBytesToLockLow As Long, ByVal nNumberOfBytesToLockHigh As Long, lpOverlapped As OVERLAPPED) As Long
說明
與LockFile相似，只是它提供了更多的功能
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hFile | Long，欲鎖定文件的句柄
dwFlags | Long，指定下述一個或兩個常數
 | LOCKFILE_FAIL_IMMEDIATELY | 指出如鎖定失敗，函數應返回一個錯誤。否則，應用程序線程就會暫時掛起，並一直等待，直到能進行鎖定為止
 | LOCKFILE_EXCLUSIVE_LOCK | 指出鎖定區域不可由另一個線程或進程讀寫。否則這個區域就只能防範「寫」——其他進程仍然能夠讀取鎖定區域的內容
dwReserved | Long，未使用，設為零
nNumberOfBytesToLockLow | Long，鎖定區域包含字符數的低32位
nNumberOfBytesToLockHigh | Long，鎖定區域包含字符數的高32位
lpOverlapped | OVERLAPPED，包含了文件中相對於鎖定區域起始處的偏移量
註解
鎖定區域不可重疊操作（即多個進程同時操作）


lopen
VB聲明
Declare Function lopen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long
說明
以二進制模式打開指定的文件
返回值
Long，如執行成功，返回打開文件的句柄。HFILE_ERROR表示出錯。會設置GetLastError
參數表
參數 | 類型及說明
lpPathName | String，欲打開文件的名字
iReadWrite | Long，訪問模式和共享模式常數的一個組合，如下所示：
 | 1、訪問模式
 | READ | 打開文件，讀取其中的內容
 | READ_WRITE | 打開文件，對其進行讀寫
 | WRITE | 打開文件，在其中寫入內容
 | 2、共享模式（參考OpenFile函數的標誌常數表）
 | OF_SHARE_COMPAT， OF_SHARE_DENY_NONE， OF_SHARE_DENY_READ， OF_SHARE_DENY_WRITE， OF_SHARE_EXCLUSIVE
註解
CreateFile函數在win32下提供了更多的功能


lread
VB聲明
Declare Function lread Lib "kernel32" Alias "_lread" (ByVal hFile As Long, lpBuffer As Any, ByVal wBytes As Long) As Long
說明
將文件中的數據讀入內存緩衝區
返回值
Long，返回實際讀入的字節數。HFILE_ERROR意味著函數執行出錯。如這個數字小於wBytes，則表明早已抵達了文件的末尾。會設置GetLastError
參數表
參數 | 類型及說明
hFile | Long，文件句柄
lpBuffer | Any，指定一個內存塊的指針，數據將讀入這個內存塊
wBytes | Long，要讀入的字節數


lwrite
VB聲明
Declare Function lwrite Lib "kernel32" Alias "_lwrite" (ByVal hFile As Long, ByVal lpBuffer As String, ByVal wBytes As Long) As Long
說明
將數據從內存緩衝區寫入一個文件
返回值
Long，寫入的字節數。HFILE_ERROR意味著函數執行出錯。如這個數字小於wBytes，則表明早已抵達了文件的末尾。會設置GetLastError
參數表
參數 | 類型及說明
hFile | Long，文件句柄
lpBuffer | String，指定一個內存塊的指針，把這個內存塊的數據寫入文件
wBytes | Long，要寫入的字節數


LZClose
VB聲明
Declare Sub LZClose Lib "lz32.dll" Alias "LZClose" (ByVal hfFile As Long)
說明
關閉由LZOpenFile 或 LZInit函數打開的一個文件
參數表
參數 | 類型及說明
hfFile | Long，欲關閉的句柄。這是由LZOpenFile 或 LZInit函數返回的一個句柄，不是普通的系統文件句柄


LZCopy
VB聲明
Declare Function LZCopy Lib "lz32.dll" Alias "LZCopy" (ByVal hfSource As Long, ByVal hfDest As Long) As Long
說明
複製一個文件。如源文件已壓縮，則會在複製期間解壓。文件必須是用微軟公司的compress.exe或等效工具壓縮的
返回值
Long，如執行成功，返回目標文件的大小，以字節為單位。如執行出錯，會返回小於零的一個常數，如下表
LZERROR_BADINHANDLE | 源文件無效
LZERROR_BADOUTHANDLE | 目標文件無效
LZERROR_GLOBALLOC | 內部解壓緩衝區的內存容量不足
LZERROR_GLOBLOCK | 內部解壓緩衝區的句柄無效
LZERROR_READ | 無效的源文件格式
LZERROR_UNKNOWNALG | 解壓DLL不能識別源文件採用的壓縮算法
LZERROR_WRITE | 在磁盤上寫入輸出文件時出錯，通常是由於磁盤空間不足造成的
參數表
參數 | 類型及說明
hfSource | Long，指定源文件句柄。這是由LZOpenFile 或 LZInit函數返回的一個句柄
hfDest | Long，指定目標文件句柄。這是由LZOpenFile 或 LZInit函數返回的一個句柄


LZInit
VB聲明
Declare Function LZInit Lib "lz32.dll" Alias "LZInit" (ByVal hfSrc As Long) As Long
說明
這個函數用於初始化內部緩衝區。對一個給出打開文件句柄的一個文件進行解壓時，將用到這個緩衝區
返回值
Long，由lz32.dll庫使用的、那個文件的一個特殊句柄。這個文件句柄兼容於LZCopy， CopyLZFiles， LZRead 和 LZSeek函數。如果出錯，該函數會返回下表列出的出錯代碼之一。注意完成後一定用LZClose關閉這個句柄
LZERROR_BADINHANDLE | 源文件無效
LZERROR_BADOUTHANDLE | 目標文件無效
LZERROR_GLOBALLOC | 內部解壓緩衝區的內存容量不足
LZERROR_GLOBLOCK | 內部解壓緩衝區的句柄無效
LZERROR_READ | 無效的源文件格式
LZERROR_UNKNOWNALG | 解壓DLL不能識別源文件採用的壓縮算法
LZERROR_WRITE | 在磁盤上寫入輸出文件時出錯，通常是由於磁盤空間不足造成的
參數表
參數 | 類型及說明
hfSrc | Long，文件的句柄
註解
最多只能同時打開16個壓縮文件句柄


LZOpenFile
VB聲明
Declare Function LZOpenFile Lib "lz32.dll" Alias "LZOpenFileA" (ByVal lpszFile As String, lpOf As OFSTRUCT, ByVal style As Long) As Long
說明
該函數能執行大量不同的文件處理，而且兼容於壓縮文件
返回值
Long，如函數執行成功，且樣式（style）參數不為OF_READ，就返回常規的文件句柄，具體請參考OpenFile函數的說明。如樣式參數為OF_READ，而且文件是壓縮的，就會返回一個特殊的文件句柄，以便由LZCopy， LZRead 和 LZSeek函數使用。如出錯，返回如下表所示的一個常數：
LZERROR_BADINHANDLE | 源文件無效
LZERROR_BADOUTHANDLE | 目標文件無效
LZERROR_GLOBALLOC | 內部解壓緩衝區的內存容量不足
LZERROR_GLOBLOCK | 內部解壓緩衝區的句柄無效
LZERROR_READ | 無效的源文件格式
LZERROR_UNKNOWNALG | 解壓DLL不能識別源文件採用的壓縮算法
LZERROR_WRITE | 在磁盤上寫入輸出文件時出錯，通常是由於磁盤空間不足造成的
參數表
參數 | 類型及說明
lpszFile | String，欲打開的文件名
lpOf | OFSTRUCT，該結構填充的數據包括與本次處理的文件和結果有關的信息
style | Long，處理方式標誌常數的一種組合。參考OpenFile函數的標誌常數表
註解
參考OpenFile函數


LZRead
VB聲明
Declare Function LZRead Lib "lz32.dll" Alias "LZRead" (ByVal hfFile As Long, ByVal lpvBuf As String, ByVal cbread As Long) As Long
說明
將數據從文件讀入內存緩衝區。如hfFile是一個壓縮文件的句柄，同時那個壓縮文件是由LZOpenFile 或 LZInit函數打開的，這個函數就會在讀入數據的同時對文件進行解壓處理
返回值
Long，實際讀入的字節數。如這個數字小於cbread，表明早已抵達了文件的末尾。如出錯，返回下表列出的常數之一
LZERROR_BADINHANDLE | 源文件無效
LZERROR_BADOUTHANDLE | 目標文件無效
LZERROR_GLOBALLOC | 內部解壓緩衝區的內存容量不足
LZERROR_GLOBLOCK | 內部解壓緩衝區的句柄無效
LZERROR_READ | 無效的源文件格式
LZERROR_UNKNOWNALG | 解壓DLL不能識別源文件採用的壓縮算法
LZERROR_WRITE | 在磁盤上寫入輸出文件時出錯，通常是由於磁盤空間不足造成的
參數表
參數 | 類型及說明
hfFile | Long，源文件的特殊句柄。這個句柄是由LZOpenFile 或 LZInit函數提供的
lpvBuf | String，一個內存塊的指針，數據將讀入這個內存塊
cbread | Long，指定lpvBuf緩衝區的長度


LZSeek
VB聲明
Declare Function LZSeek Lib "lz32.dll" Alias "LZSeek" (ByVal hfFile As Long, ByVal lOffset As Long, ByVal nOrigin As Long) As Long
說明
設置一個文件中進行讀寫的當前位置。如hfFile是一個壓縮文件的句柄，同時那個壓縮文件是由LZOpenFile 或 LZInit函數打開的，這個函數就會根據文件的解壓版本進行查找
返回值
Long，返回一個新位置，採用從文件起始處計算的字節偏移量。如出錯，返回下表列出的常數之一
LZERROR_BADINHANDLE | 源文件無效
LZERROR_BADOUTHANDLE | 目標文件無效
LZERROR_GLOBALLOC | 內部解壓緩衝區的內存容量不足
LZERROR_GLOBLOCK | 內部解壓緩衝區的句柄無效
LZERROR_READ | 無效的源文件格式
LZERROR_UNKNOWNALG | 解壓DLL不能識別源文件採用的壓縮算法
LZERROR_WRITE | 在磁盤上寫入輸出文件時出錯，通常是由於磁盤空間不足造成的
參數表
參數 | 類型及說明
hfFile | Long，源文件的特殊句柄。這個句柄是由LZOpenFile 或 LZInit函數提供的
lOffset | Long，以字節數表示的偏移量
nOrigin | Long，下述值之一 0——lOffset將新位置指定成從文件的起始處計算偏移 1——lOffset將新位置指定成從當前位置開始計算偏移 2——lOffset將新位置指定成從文件的結尾處計算偏移


MapViewOfFile

MapViewOfFile, MapViewOfFileEx
VB聲明
Declare Function MapViewOfFile& Lib "kernel32" (ByVal hFileMappingObject As Long, ByVal dwDesiredAccess As Long, ByVal dwFileOffsetHigh As Long, ByVal dwFileOffsetLow As Long, ByVal dwNumberOfBytesToMap As Long) Declare Function MapViewOfFileEx& Lib "kernel32" (ByVal hFileMappingObject As Long, ByVal dwDesiredAccess As Long, ByVal dwFileOffsetHigh As Long, ByVal dwFileOffsetLow As Long, ByVal dwNumberOfBytesToMap As Long, lpBaseAddress As Any)
說明
將一個文件映射對像映射到當前應用程序的地址空間。MapViewOfFileEx允許我們指定一個基本地址來進行映射
返回值
Long，文件映射在內存中的起始地址。零表示出錯。會設置GetLastError
參數表
參數 | 類型及說明
hFileMappingObject | Long，文件映射對象的句柄
dwDesiredAccess | Long，下述常數之一：
 | FILE_MAP_WRITE | 映射可讀可寫。文件映射對像必須通過PAGE_READWRITE訪問創建
 | FILE_MAP_READ | 映射只讀。文件映射對像必須通過PAGE_READ 或 PAGE_READWRITE訪問創建
 | FILE_MAP_ALL_ACCESS | 與FILE_MAP_WRITE相同
 | FILE_MAP_COPY | 映射時保留寫操作的副本。文件映射對像必須用PAGE_WRITECOPY訪問在win95下創建
dwFileOffsetHigh | Long，文件中映射起點的高32位地址
dwFileOffsetLow | Long，文件中映射起點的低32位地址
dwNumberOfBytesToMap | Long，文件中要映射的字節數。用零映射整個文件映射對像
lpBaseAddress | Long，指定映射文件映射對象的地址。如這個地址處沒有足夠的內存空間，那麼對MapViewOfFileEx的調用會失效。零表示允許windows尋找一個地址
註解
dwFileOffsetLow和dwFileOffsetHigh必須反映一個偏移距離，它由系統的內存分配精度決定。例如，假設系統的內存精度是64KB（即最小分配單位是64KB），則這些值必須是64KB的整數倍。大多數應用程序都簡單的用零從文件的起始處開始映射。lpBaseAddress也必須是內存分配精度的整數倍
其他
聲明中的參數類型為Any，而參數表中都是Long，我也不明白。但關於這個函數的英文資料的確是這樣的。


文件處理類5

文件處理函數，共八頁。 第一頁 ， 第二頁 ， 第三頁 ， 第四頁 ，第五頁， 第六頁 ， 第七頁 ， 第八頁
MoveFile | 移動文件
OpenFile | 這個函數能執行大量不同的文件操作
OpenFileMapping | 打開一個現成的文件映射對像
QueryDosDevice | 在Windows NT中，DOS設備名會映射成NT系統設備名。該函數可判斷當前的設備映射情況
ReadFile | 從文件中讀出數據
ReadFileEx | 與ReadFile相似，只是它只能用於異步讀操作，並包含了一個完整的回調
RegCloseKey | 關閉系統註冊表中的一個項（或鍵）
RegConnectRegistry | 訪問遠程系統的部分註冊表
RegCreateKey | 在指定的項下創建或打開一個項
RegCreateKeyEx | 在指定項下創建新項的更複雜的方式。在Win32環境中建議使用這個函數
RegDeleteKey | 刪除現有項下方一個指定的子項
RegDeleteValue | 刪除指定項下方的一個值
RegEnumKey | 枚舉指定項的子項。在Win32環境中應使用RegEnumKeyEx
RegEnumKeyEx | 枚舉指定項下方的子項
RegEnumValue | 枚舉指定項的值
RegFlushKey | 將對項和它的子項作出的改動實際寫入磁盤


MoveFile

MoveFile, MoveFileEx
VB聲明
Declare Function MoveFile& Lib "kernel32" Alias "MoveFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String) Declare Function MoveFileEx& Lib "kernel32" Alias "MoveFileExA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal dwFlags As Long)
說明
移動文件。如dwFlags設為零，則MoveFile完全等價於MoveFileEx
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpExistingFileName | String，欲移動的文件名
lpNewFileName | String，新文件名
dwFlags | Long，一個或多個下述常數
 | MOVEFILE_REPLACE_EXISTING | 如目標文件存在，則將其替換
 | MOVEFILE_COPY_ALLOWED | 如移動到一個不同的卷，則複製文件並刪除原來的文件
 | MOVEFILE_DELAY_UNTIL_REBOOT | 移動操作在系統下次重新啟動時正式進行。這樣便可在Windows NT中改換系統文件
註解
這兩個函數通常不能將文件從一個卷移動到另一個卷。但如設置了MOVEFILE_COPY_ALLOWED標記，MoveFileEx可以做到這一點


OpenFile
VB聲明
Declare Function OpenFile Lib "kernel32" Alias "OpenFile" (ByVal lpFileName As String, lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As Long
說明
這個函數能執行大量不同的文件操作。和這個函數相比，請優先考慮win32的CreateFile函數（它能打開命名管道和控制Unicode文件名，同時不受128個字符的路徑名稱的限制）
返回值
Long，如執行成功，返回文件句柄。注意文件句柄可能是無效的；例如，假設指定了OF_EXIST標誌，文件在函數返回前會關閉，但它打開時的句柄卻永遠不會返回。如果出錯，函數會返回HFILE_ERROR；此時，由lpReOpenBuff指定的OFSTRUCT結構的nErrCode會設置成發生的錯誤。表OpenFile-2（OFSTRUCT出錯代碼）對這些錯誤進行了總結。會設置GetLastError
參數表
參數 | 類型及說明
lpFileName | String，欲打開文件的名字
lpReOpenBuff | OFSTRUCT，該結構填充的數據包括與文件和操作結果有關的信息
wStyle | Long，參考表OpenFile-1（OpenFile函數的標誌常數表）總結的標誌常數的組合，它決定了要採取的操作方式
表OpenFile-1（OpenFile函數的標誌常數表）
wStyle常數 | 說明
OF_CREATE | 創建指定的文件。如已經存在，則將其縮減為零長度
OF_DELETE | 刪除指定的文件
OF_EXIST | 通過嘗試打開文件的做法，判斷一個文件是否存在。如文件存在，則將其關閉。此時，函數會返回文件打開時使用的句柄，但這個句柄是無效的。如指定的文件不存在，則返回一個負數
OF_PARSE | 填寫lpReOpenBuff結構的內容，但不執行其他任何操作
OF_PROMPT | 如文件不存在，則顯示一個消息框，在其中列出重試和取消按鈕
OF_READ | 以只讀方式打開文件
OF_READWRITE | 以可讀、可寫的方式打開文件
OF_REOPEN | 打開lpReOpenBuff結構內指定的文件，而不是用lpFileName參數
OF_SEARCH | 強迫windows查找文件——即使指定了特定的路徑
OF_SHARE_COMPAT | 文件可由多個應用程序打開多次
OF_SHARE_DENY_NONE | 可打開文件，以便由其他程序讀寫
OF_SHARE_DENY_READ | 禁止其他程序讀寫文件內容
OF_SHARE_DENY_WRITE | 其他程序可以讀文件，但不能寫文件
OF_SHARE_EXCLUSIVE | 其他任何一個程序都不能再打開這個文件
OF_WRITE | 文件以只寫模式打開
表OpenFile-2（OFSTRUCT出錯代碼）
十六進制值 | 說明 | 十六進制值 | 說明
1 | 函數無效 | 2 | 文件未找到
3 | 路徑未找到 | 4 | 無可用文件句柄
5 | 拒絕訪問 | 6 | 句柄無效
7 | DOS內存衝突 | 8 | 無足夠內存完成操作
9 | 無效塊 | A | 非法環境
B | 無效格式 | C | 無效訪問
D | 無效數據 |  |
F | 無效驅動器 | 10 | 當前目錄無效
11 | 設備有異 | 12 | 沒有更多的文件
13 | 寫保護錯 | 14 | 非法單位
15 | 驅動器未準備好 | 16 | 無效命令
17 | CRC校驗錯 | 18 | 無效長度
19 | 搜索錯誤 | 1A | 磁盤不兼容MS-DOS
1B | 扇區未找到 | 1C | 缺紙
1D | 寫錯誤 | 1E | 讀錯誤
1F | 驅動器常規錯誤 | 20 | 共享違例
21 | 文件鎖定違例 | 22 | 不正確的磁盤
23 | 無可用的文件控制塊 | 24 | 共享緩衝區溢出
32 | 不支持的設備 | 33 | 遠程設備不可用
34 | 重名錯誤 | 35 | 網絡路徑錯誤
36 | 網絡忙 | 37 | 非法設備
38 | 命令太多 | 39 | 網卡硬體錯誤
3A | 網絡響應錯誤 | 3B | 其他網絡錯誤
3C | 遠程適配器錯誤 | 3D | 列印隊列滿
3E | 後台列印緩衝區滿 | 3F | 列印取消
40 | 刪除的網絡名 | 41 | 拒絕網絡訪問
42 | 無效設備類型 | 43 | 無效網絡名
44 | 名字太多 | 45 | 會話太多
46 | 共享暫停 | 47 | 請求未接受
48 | 重定向暫停 | 50 | 文件退出
51 | 文件控制塊重複 | 52 | 不能創建
53 | 中斷24錯誤 | 54 | 缺少結構
55 | 已經分配 | 56 | 密碼無效
57 | 參數無效 | 58 | 網絡寫錯誤


OpenFileMapping
VB聲明
Declare Function OpenFileMapping Lib "kernel32" Alias "OpenFileMappingA" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal lpName As String) As Long
說明
打開一個現成的文件映射對像
返回值
Long，指定文件映射對象的句柄。零表示出錯。會設置GetLastError
參數表
參數 | 類型及說明
dwDesiredAccess | Long，帶有前綴FILE_MAP_???的一個常數。參考MapViewOfFile函數的dwDesiredAccess參數的說明
bInheritHandle | Long，如這個函數返回的句柄能由當前進程啟動的新進程繼承，則這個參數為TRUE
lpName | String，指定要打開的文件映射對像名稱


QueryDosDevice
VB聲明
Declare Function QueryDosDevice Lib "kernel32" Alias "QueryDosDeviceA" (ByVal lpDeviceName As String, ByVal lpTargetPath As String, ByVal ucchMax As Long) As Long
說明
在Windows NT中，DOS設備名會映射成NT系統設備名。該函數可判斷當前的設備映射情況
返回值
Long，零表示出錯。如執行成功，返回保存到lpTargetPath的字符數。會設置GetLastError
參數表
參數 | 類型及說明
lpDeviceName | String，如果是vbNullString，那麼lpTargetPath會載入當前映射的MS-DOS名稱的一個列表。如果是個MS-DOS名，則lpTargetPath會載入一個設備映射列表（第一個名字是活動映射，後續的名字是以前尚未刪掉的映射）
lpTargetPath | String，名稱列表，具體取決於lpDeviceName參數。這些名字用NULL字符分隔。列表最後用兩個連續的NULL字符中止
ucchMax | Long，lpTargetPath緩衝區的大小
註解
可用DefineDosDevice函數將映射變成DOS設備名
適用平台
Windows NT


ReadFile
VB聲明
Declare Function ReadFile Lib "kernel32" Alias "ReadFile" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As OVERLAPPED) As Long
說明
從文件中讀出數據。與lread函數相比，這個函數要明顯靈活的多。該函數能夠操作通信設備、管道、套接字以及郵槽
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError。如啟動的是一次異步讀操作，則函數會返回零值，並將ERROR_IO_PENDING設置成GetLastError的結果。如結果不是零值，但讀入的字節數小於nNumberOfBytesToRead參數指定的值，表明早已抵達了文件的結尾
參數表
參數 | 類型及說明
hFile | Long，文件的句柄
lpBuffer | Any，用於保存讀入數據的一個緩衝區
nNumberOfBytesToRead | Long，要讀入的字符數
lpNumberOfBytesRead | Long，從文件中實際讀入的字符數
lpOverlapped | OVERLAPPED，如文件打開時指定了FILE_FLAG_OVERLAPPED，那麼必須用這個參數引用一個特殊的結構。那個結構定義了一次異步讀取操作。否則，應將這個參數設為NULL（將函數聲明成ByVal As Long，並傳遞零值）
註解
並非每種操作系統都支持對每種設備進行異步操作。Windows 95不支持對一個磁盤文件進行異步讀操作（重複讀）


ReadFileEx
VB聲明
Declare Function ReadFileEx Lib "kernel32" Alias "ReadFileEx" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpOverlapped As OVERLAPPED, ByVal lpCompletionRoutine As Long) As Long
說明
與ReadFile相似，只是它只能用於異步讀操作，並包含了一個完整的回調
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hFile | Long，文件的句柄
lpBuffer | Any，指定容納讀入數據的一個緩衝區。除非讀操作執行完畢，否則不要訪問這個緩衝區
nNumberOfBytesToRead | Long，要讀入的字節數
lpOverlapped | OVERLAPPED，定義了一個異步操作的結構。使用這個函數時，結構中的hEvent字段會被忽略
lpCompletionRoutine | Long，回調函數的返回值


RegCloseKey
VB聲明
Declare Function RegCloseKey Lib "advapi32.dll" Alias "RegCloseKey" (ByVal hKey As Long) As Long
說明
關閉系統註冊表中的一個項（或鍵）
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一個錯誤代碼
參數表
參數 | 類型及說明
hKey | Long，要關閉的項


RegConnectRegistry
VB聲明
Declare Function RegConnectRegistry Lib "advapi32.dll" Alias "RegConnectRegistryA" (ByVal lpMachineName As String, ByVal hKey As Long, phkResult As Long) As Long
說明
訪問遠程系統的部分註冊表
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一個錯誤代碼
參數表
參數 | 類型及說明
lpMachineName | String，欲連接的系統。採用「\\計算機名」的形式
hKey | Long，HKEY_LOCAL_MACHINE 或 HKEY_USERS
phkResult | Long，用於裝載指定項句柄的一個變量


RegCreateKey
VB聲明
Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
說明
在指定的項下創建一個新項。如指定的項已經存在，那麼函數會打開現有的項
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一個錯誤代碼
參數表
參數 | 類型及說明
hKey | Long，要打開項的句柄，或者一個標準項名
lpSubKey | String，欲創建的新子項。可同時創建多個項，只需用反斜槓將它們分隔開即可。例如level1\level2\newkey
phkResult | Long，指定一個變量，用於裝載新子項的句柄


RegCreateKeyEx
VB聲明
Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As Long
說明
在指定項下創建新項的更複雜的方式。在Win32環境中建議使用這個函數。如指定的項已經存在，則函數會打開現有的項
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一個錯誤代碼
參數表
參數 | 類型及說明
hKey | Long，一個打開項的句柄，或者一個標準項名
lpSubKey | String，欲創建的新子項的名字
Reserved | Long，設為零
lpClass | String，項的類名
dwOptions | Long，下述常數為零：REG_OPTION_VOLATILE——這個項不正式保存下來，系統重新啟動後會消失
samDesired | Long，帶有前綴KEY_??的一個或多個常數。它們組合起來描述了允許對這個項進行哪些操作
lpSecurityAttributes | SECURITY_ATTRIBUTES，對這個項的安全特性進行描述的一個結構（用ByVal As Long傳遞空值）。不適用於windows 95
phkResult | Long，指定用於裝載新子項句柄的一個變量
lpdwDisposition | Long，用於裝載下列某個常數的一個變量： REG_CREATED_NEW_KEY——新建的一個子項 REG_OPENED_EXISTING_KEY——打開一個現有的項
註解
REG_OPTION_VOLATILE不適用於windows 95


RegDeleteKey
VB聲明
Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
說明
刪除現有項下方一個指定的子項
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一個錯誤代碼
參數表
參數 | 類型及說明
hKey | Long，一個已打開項的句柄，或者標準項名之一
lpSubKey | String，要刪除項的名字。這個項的所有子項也會刪除


RegDeleteValue
VB聲明
Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
說明
刪除指定項下方的一個值
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一個錯誤代碼
參數表
參數 | 類型及說明
hKey | Long，一個已打開項的句柄，或標準項名之一
lpValueName | String，要刪除的值名。可設為vbNullString或一個空串，表示刪除那個項的默認值


RegEnumKey
VB聲明
Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, ByVal cbName As Long) As Long
說明
枚舉指定項的子項。在Win32環境中應使用RegEnumKeyEx
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一個錯誤代碼
參數表
參數 | 類型及說明
hKey | Long，一個已打開項的句柄，或者指定一個標準項名
dwIndex | Long，欲獲取的子項的索引。第一個子項的索引編號為零
lpName | String，用於裝載指定索引處項名的一個緩衝區
cbName | Long，lpName緩衝區的長度
註解
用RegQueryInfoKey判斷容納最長那個項所需的緩衝區長度


RegEnumKeyEx
VB聲明
Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As FILETIME) As Long
說明
枚舉指定項下方的子項
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一個錯誤代碼
參數表
參數 | 類型及說明
hKey | Long，一個已打開項的句柄，或者指定一個標準項名
dwIndex | Long，欲獲取的子項的索引。第一個子項的索引編號為零
lpName | String，用於裝載指定索引處項名的一個緩衝區
lpcbName | Long，指定一個變量，用於裝載lpName緩衝區的實際長度（包括空字符）。一旦返回，它會設為實際裝載到lpName緩衝區的字符數量
lpReserved | Long，未用，設為零
lpClass | String，項使用的類名。可以為vbNullString
lpcbClass | Long，用於裝載lpClass緩衝區長度的一個變量。一旦返回，它會設為實際裝載到緩衝區的字符數量
lpftLastWriteTime | FILETIME，枚舉子項上一次修改的時間


RegEnumValue
VB聲明
Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As Long) As Long
說明
枚舉指定項的值
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一個錯誤代碼
參數表
參數 | 類型及說明
hKey | Long，一個已打開項的句柄，或者指定一個標準項名
dwIndex | Long，欲獲取值的索引。注意第一個值的索引編號為零
lpValueName | String，用於裝載位於指定索引處值名的一個緩衝區
lpcbValueName | Long，用於裝載lpValueName緩衝區長度的一個變量。一旦返回，它會設為實際載入緩衝區的字符數量
lpReserved | Long，未用；設為零
lpType | Long，用於裝載值的類型代碼的變量
lpData | Byte，用於裝載值數據的一個緩衝區
lpcbData | Long，用於裝載lpData緩衝區長度的一個變量。一旦返回，它會設為實際載入緩衝區的字符數量


RegFlushKey
VB聲明
Declare Function RegFlushKey Lib "advapi32.dll" Alias "RegFlushKey" (ByVal hKey As Long) As Long
說明
將對項和它的子項作出的改動實際寫入磁盤
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一個錯誤代碼
參數表
參數 | 類型及說明
hKey | Long，欲刷新的一個項的句柄，或指定一個標準項名
註解
有些操作系統會將對註冊表的修改延遲寫入磁盤，以便保持系統的高性能。這個函數的作用就是確定將數據實際寫入磁盤。但通常，應盡量避免使用這個函數，因為它可能嚴重影響一個應用程序的性能


文件處理類6

文件處理函數，共八頁。 第一頁 ， 第二頁 ， 第三頁 ， 第四頁 ， 第五頁 ，第六頁， 第七頁 ， 第八頁
RegGetKeySecurity | 獲取與一個註冊表項有關的安全信息
RegLoadKey | 從以前用RegSaveKey函數創建的一個文件裡裝載註冊表信息
RegNotifyChangeKeyValue | 註冊表項或它的任何一個子項發生變化時，用這個函數提供一種通知機制
RegOpenKey | 打開一個現有的註冊表項
RegOpenKeyEx | 打開一個現有的項。在win32下推薦使用這個函數
RegQueryInfoKey | 獲取與一個項有關的信息
RegQueryValue | 取得指定項或子項的默認（未命名）值
RegQueryValueEx | 獲取一個項的設置值
RegReplaceKey | 用一個磁盤文件保存的信息替換註冊表信息；並創建一個備份，在其中包含當前註冊表信息
RegRestoreKey | 從一個磁盤文件恢復註冊表信息
RegSaveKey | 將一個項以及它的所有子項都保存到一個磁盤文件
RegSetKeySecurity | 設置指定項的安全特性
RegSetValue | 設置指定項或子項的默認值
RegSetValueEx | 設置指定項的值
RegUnLoadKey | 卸載指定的項以及它的所有子項
RemoveDirectory | 刪除指定目錄


RegGetKeySecurity
VB聲明
Declare Function RegGetKeySecurity Lib "advapi32.dll" Alias "RegGetKeySecurity" (ByVal hKey As Long, ByVal SecurityInformation As Long, pSecurityDescriptor As SECURITY_DESCRIPTOR, lpcbSecurityDescriptor As Long) As Long
說明
獲取與一個註冊表項有關的安全信息
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一個錯誤代碼
參數表
參數 | 類型及說明
hKey | Long，指定一個項的句柄，或指定一個標準項名
SecurityInformation | Long，對請求信息進行描述的一個標記
pSecurityDescriptor | SECURITY_DESCRIPTOR，這個結構用於裝載目標項的安全信息
lpcbSecurityDescriptor | Long，用於裝載pSecurityDescriptor緩衝區長度的一個變量。一旦返回，它會設為實際裝載到緩衝區的字節數量
適用平台
Windows NT


RegLoadKey
VB聲明
Declare Function RegLoadKey Lib "advapi32.dll" Alias "RegLoadKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpFile As String) As Long
說明
從以前用RegSaveKey函數創建的一個文件裡裝載註冊表信息
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一個錯誤代碼
參數表
參數 | 類型及說明
hKey | Long，HKEY_LOCAL_MACHINE、HKEY_USERS或者用RegConnectRegistry創建的一個子項
lpSubKey | String，要創建的新子項的名字
lpFile | String，包含了註冊信息的那個文件的名字


RegNotifyChangeKeyValue
VB聲明
Declare Function RegNotifyChangeKeyValue Lib "advapi32.dll" Alias "RegNotifyChangeKeyValue" (ByVal hKey As Long, ByVal bWatchSubtree As Long, ByVal dwNotifyFilter As Long, ByVal hEvent As Long, ByVal fAsynchronus As Long) As Long
說明
註冊表項或它的任何一個子項發生變化時，用這個函數提供一種通知機制
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一個錯誤代碼
參數表
參數 | 類型及說明
hKey | Long，要監視的一個項的句柄，或者指定一個標準項名
bWatchSubtree | Long，TRUE（非零）表示監視子項以及指定的項
dwNotifyFilter | Long，下述常數的一個或多個
 | REG_NOTIFY_CHANGE_NAME | 偵測註冊表項名稱的變化，以及偵測註冊表的創建和刪除事件
 | REG_NOTIFY_CHANGE_ATTRIBUTES | 偵測屬性的變化
 | REG_NOTIFY_CHANGE_LAST_SET | 偵測上一次修改時間的變化
 | REG_NOTIFY_CHANGE_SECURITY | 偵測對安全特性的改動
hEvent | Long，一個事件的句柄。如fAsynchronus為False，則這裡的設置會被忽略
fAsynchronus | Long，如果為零，那麼除非偵測到一個變化，否則函數不會返回。否則這個函數會立即返回，而且在發生變化時觸發由hEvent參數指定的一個事件
適用平台
Windows NT


RegOpenKey
VB聲明
Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
說明
打開一個現有的註冊表項
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一個錯誤代碼
參數表
參數 | 類型及說明
hKey | Long，一個已打開項的句柄，或指定一個標準項名
lpSubKey | String，要打開的項名
phkResult | Long，指定一個變量，用於裝載（保存）打開註冊表項的一個句柄
註解
在NT環境下，這個函數會使用默認的安全參數


RegOpenKeyEx
VB聲明
Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
說明
打開一個現有的項。在win32下推薦使用這個函數
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一個錯誤代碼
參數表
參數 | 類型及說明
hKey | Long，一個已打開項的句柄，或指定一個標準項名
lpSubKey | String，欲打開註冊表項的名字
ulOptions | Long，未用，設為零
samDesired | Long，帶有前綴KEY_??的一個或多個常數。它們的組合描述了允許對這個項進行哪些操作
phkResult | Long，用於裝載打開項的名字的一個變量


RegQueryInfoKey
VB聲明
Declare Function RegQueryInfoKey Lib "advapi32.dll" Alias "RegQueryInfoKeyA" (ByVal hKey As Long, ByVal lpClass As String, lpcbClass As Long, lpReserved As Long, lpcSubKeys As Long, lpcbMaxSubKeyLen As Long, lpcbMaxClassLen As Long, lpcValues As Long, lpcbMaxValueNameLen As Long, lpcbMaxValueLen As Long, lpcbSecurityDescriptor As Long, lpftLastWriteTime As FILETIME) As Long
說明
獲取與一個項有關的信息
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一個錯誤代碼。如一個緩衝區的長度不夠，不能容下返回的數據，則函數會返回ERROR_MORE_DATA
參數表
參數 | 類型及說明
hKey | Long，一個已打開項的句柄，或指定一個標準項名
lpClass | String，指定一個字串，用於裝載這個註冊表項的類名
lpcbClass | Long，指定一個變量，用於裝載lpClass緩衝區的長度。一旦返回，它會設為實際裝載到緩衝區的字節數量
lpReserved | Long，未用，設為零
lpcSubKeys | Long，用於裝載（保存）這個項的子項數量的一個變量
lpcbMaxSubKeyLen | Long，指定一個變量，用於裝載這個項最長一個子項的長度。注意這個長度不包括空中止字符
lpcbMaxClassLen | Long，指定一個變量，用於裝載這個項之子項的最長一個類名的長度。注意這個長度不包括空中止字符
lpcValues | Long，用於裝載這個項的設置值數量的一個變量
lpcbMaxValueNameLen | Long，指定一個變量，用於裝載這個項之子項的最長一個值名的長度。注意這個長度不包括空中止字符
lpcbMaxValueLen | Long，指定一個變量，用於裝載容下這個項最長一個值數據所需的緩衝區長度
lpcbSecurityDescriptor | Long，裝載值安全描述符長度的一個變量
lpftLastWriteTime | FILETIME，指定一個結構，用於容納該項的上一次修改時間


RegQueryValue
VB聲明
Declare Function RegQueryValue Lib "advapi32.dll" Alias "RegQueryValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpValue As String, lpcbValue As Long) As Long
說明
取得指定項或子項的默認（未命名）值
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一個錯誤代碼
參數表
參數 | 類型及說明
hKey | Long，一個已打開項的句柄，或者指定一個標準項名
lpSubKey | String，要獲取一個值的子項。可設為vbNullString，表示獲取hKey的值
lpValue | String，用於容納指定項值的一個字串
lpcbValue | Long，指定一個變量，用於裝載lpValue緩衝區的長度。一旦返回，它會設為實際載入緩衝區的字節數量
註解
win32應用程序應該使用RegQueryValueEx。lpValue被定義成一個字串，以維持同win16的兼容性（在win16中，值全都是字串）


RegQueryValueEx
VB聲明
Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
說明
獲取一個項的設置值
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一個錯誤代碼
參數表
參數 | 類型及說明
hKey | Long，一個已打開項的句柄，或者指定一個標準項名
lpValueName | String，要獲取值的名字
lpReserved | Long，未用，設為零
lpType | Long，用於裝載取回數據類型的一個變量
lpData | Any，用於裝載指定值的一個緩衝區
lpcbData | Long，用於裝載lpData緩衝區長度的一個變量。一旦返回，它會設為實際裝載到緩衝區的字節數


RegReplaceKey
VB聲明
Declare Function RegReplaceKey Lib "advapi32.dll" Alias "RegReplaceKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpNewFile As String, ByVal lpOldFile As String) As Long
說明
用一個磁盤文件保存的信息替換註冊表信息；並創建一個備份，在其中包含當前註冊表信息
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一個錯誤代碼
參數表
參數 | 類型及說明
hKey | Long，一個已打開項的句柄，或指定一個標準項名
lpSubKey | String，要替換的子項名稱。它必須直接位於HKEY_LOCAL_MACHINE 或 HKEY_USERS控制項的下方
lpNewFile | String，包含了註冊表信息的一個文件的名字。這個文件是用RegSaveKey函數創建的
lpOldFile | String，對當前註冊表信息進行備份的一個文件的名字


RegRestoreKey
VB聲明
Declare Function RegRestoreKey Lib "advapi32.dll" Alias "RegRestoreKeyA" (ByVal hKey As Long, ByVal lpFile As String, ByVal dwFlags As Long) As Long
說明
從一個磁盤文件恢復註冊表信息
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一個錯誤代碼
參數表
參數 | 類型及說明
hKey | Long，一個已打開項的句柄，或者指定一個標準項名
lpFile | String，要從中恢復註冊表信息的一個文件的名字
dwFlags | Long，0表示進行常規恢復。REG_WHOLE_HIVE_VOLATILE表示臨時恢覆信息（系統重新啟動時不保存下來）。在這種情況下，hKey必須引用HKEY_LOCAL_MACHINE 或 HKEY_USERS


RegSaveKey
VB聲明
Declare Function RegSaveKey Lib "advapi32.dll" Alias "RegSaveKeyA" (ByVal hKey As Long, ByVal lpFile As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long
說明
將一個項以及它的所有子項都保存到一個磁盤文件
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一個錯誤代碼
參數表
參數 | 類型及說明
hKey | Long，一個已打開項的句柄，或指定一個標準項名
lpFile | String，要在其中保存註冊表信息的一個磁盤文件的名字
lpSecurityAttributes | SECURITY_ATTRIBUTES，為保存的信息提供的安全信息。可設為NULL，表示採用默認的安全信息（變成ByVal As Long，並傳遞零值）


RegSetKeySecurity
VB聲明
Declare Function RegSetKeySecurity Lib "advapi32.dll" Alias "RegSetKeySecurity" (ByVal hKey As Long, ByVal SecurityInformation As Long, pSecurityDescriptor As SECURITY_DESCRIPTOR) As Long
說明
設置指定項的安全特性
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一個錯誤代碼
參數表
參數 | 類型及說明
hKey | Long，指定一個項的句柄，或指定一個標準項名
SecurityInformation | Long，對要保存的信息進行描述的標誌
pSecurityDescriptor | SECURITY_DESCRIPTOR，這個結構包含了註冊表項新的安全特性設置
適用平台
Windows NT


RegSetValue
VB聲明
Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
說明
設置指定項或子項的默認值
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一個錯誤代碼
參數表
參數 | 類型及說明
hKey | Long，一個已打開項的句柄，或指定一個標準項名
lpSubKey | String，欲對它的值進行設置的一個子項的名字。如指定vbNullString，表示設置hKey的默認值。如指定的子項不存在，則會創建它
dwType | Long，必須是REG_SZ
lpData | String，新值
cbData | Long，指定lpData的長度，不包括空中止字符


RegSetValueEx
VB聲明
Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
說明
設置指定項的值
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一個錯誤代碼
參數表
參數 | 類型及說明
hKey | Long，一個已打開項的句柄，或指定一個標準項名
lpValueName | String，要設置值的名字
Reserved | Long，未用，設為零
dwType | Long，要設置的數量類型
lpData | Any，包含數據的緩衝區中的第一個字節
cbData | Long，lpData緩衝區的長度


RegUnLoadKey
VB聲明
Declare Function RegUnLoadKey Lib "advapi32.dll" Alias "RegUnLoadKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
說明
卸載指定的項以及它的所有子項
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一個錯誤代碼
參數表
參數 | 類型及說明
hKey | Long，HKEY_LOCAL_MACHINE、HKEY_USERS或者用RegConnectRegistry打開的一個子項
lpSubKey | String，要卸載的子項的名字。必須是早先用RegLoadKey函數載入的


RemoveDirectory
VB聲明
Declare Function RemoveDirectory Lib "kernel32" Alias "RemoveDirectoryA" (ByVal lpPathName As String) As Long
說明
刪除指定目錄
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpPathName | String，要刪除的那個目錄的名字
註解
在調用這個函數前，目錄必須為空


文件處理類7

文件處理函數，共八頁。 第一頁 ， 第二頁 ， 第三頁 ， 第四頁 ， 第五頁 ， 第六頁 ，第七頁， 第八頁
SearchPath | 查找指定文件
SetCurrentDirectory | 設置當前目錄
SetEndOfFile | 針對一個打開的文件，將當前文件位置設為文件末尾
SetFileAttributes | 設置文件屬性
SetFilePointer | 在一個文件中設置當前的讀寫位置
SetFileTime | 設置文件的創建、訪問及上次修改時間
SetHandleCount | 這個函數不必在win32下使用；即使使用，也不會有任何效果
SetVolumeLabel | 設置一個磁盤的卷標（Label）
SystemTimeToFileTime | 根據一個FILETIME結構的內容，載入一個SYSTEMTIME結構
UnlockFile | 解除對一個文件的鎖定
UnlockFileEx | 解除對一個文件的鎖定
UnmapViewOfFile | 在當前應用程序的內存地址空間解除對一個文件映射對象的映射
VerFindFile | 用這個函數決定一個文件應安裝到哪裡
VerInstallFile | 用這個函數安裝一個文件
VerLanguageName | 這個函數能根據16位語言代碼獲取一種語言的名稱
VerQueryValue | 這個函數用於從版本資源中獲取信息


SearchPath
VB聲明
Declare Function SearchPath Lib "kernel32" Alias "SearchPathA" (ByVal lpPath As String, ByVal lpFileName As String, ByVal lpExtension As String, ByVal nBufferLength As Long, ByVal lpBuffer As String, ByVal lpFilePart As String) As Long
說明
查找指定文件
返回值
Long，裝載到lpBuffer緩衝區的字符數。如緩衝區長度不足，則返回緩衝區必要的長度。零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpPath | String，欲搜索的路徑。如果為vbNullString，則採用windows搜索路徑。參考OpenFile函數的OFSTRUCT結構中對OF_SEARCH標誌搜索順序的介紹
lpFileName | String，要查找的文件名
lpExtension | String，文件擴展名。必須用一個句點符號起頭。如文件沒有擴展名，或者lpFileName包括了擴展名，則設為vbNullString
nBufferLength | Long，lpBuffer字串的長度
lpBuffer | String，用於裝載文件名的一個字串
lpFilePart | String，指定一個長整數變量，用於裝載緩衝文件名部分的地址。在vb中不是特別有用
註解
參考GetFullPathName函數


SetCurrentDirectory
VB聲明
Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long
說明
設置當前目錄
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpPathName | String，新當前目錄的路徑


SetEndOfFile
VB聲明
Declare Function SetEndOfFile Lib "kernel32" Alias "SetEndOfFile" (ByVal hFile As Long) As Long
說明
針對一個打開的文件，將當前文件位置設為文件末尾
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hFile | Long，指定一個文件句柄。文件的當前位置設為文件尾，文件會根據需要縮短
註解
如一個文件正作為打開文件映射對象的基準使用，則不要對其應用這個函數


SetFileAttributes
VB聲明
Declare Function SetFileAttributes Lib "kernel32" Alias "SetFileAttributesA" (ByVal lpFileName As String, ByVal dwFileAttributes As Long) As Long
說明
設置文件屬性
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpFileName | String，要設置其屬性的文件名
dwFileAttributes | Long，帶有FILE_ATTRIBUTE_??前綴的一個或多個常數


SetFilePointer
VB聲明
Declare Function SetFilePointer Lib "kernel32" Alias "SetFilePointer" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
說明
在一個文件中設置當前的讀寫位置
返回值
Long，返回一個新位置，它採用從文件起始處開始算起的一個字節偏移量。HFILE_ERROR意味著出錯。會設置GetLastError
參數表
參數 | 類型及說明
hFile | Long，系統文件句柄
lDistanceToMove | Long，字節偏移量
lpDistanceToMoveHigh | Long，指定一個長整數變量，其中包含了要使用的一個高雙字偏移。可設為零（將聲明變為ByVal），表示只使用lDistanceToMove 原文：A long variable containing a high double word offset to use. May be zero (change declaration to ByVal) to use only lDistanceToMove.
dwMoveMethod | Long，下述常數之一
 | FILE_BEGIN | lOffset將新位置設為從文件起始處開始算的起的一個偏移
 | FILE_CURRENT | lOffset將新位置設為從當前位置開始計算的一個偏移
 | FILE_END | lOffset將新位置設為從文件尾開始計算的一個偏移
註解
這個函數與vb的seek語句類似。不要將函數用於通過vb的open命令打開的文件。利用這個函數，可以處理那些長度大於2︿64字節的大型文件


SetFileTime
VB聲明
Declare Function SetFileTime Lib "kernel32" Alias "SetFileTime" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
說明
設置文件的創建、訪問及上次修改時間
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hFile | Long，系統文件句柄
lpCreationTime | FILETIME，文件的創建時間
lpLastAccessTime | FILETIME，文件上一次訪問的時間
lpLastWriteTime | FILETIME，文件最近一次修改的時間


SetHandleCount
VB聲明
Declare Function SetHandleCount Lib "kernel32" Alias "SetHandleCount" (ByVal wNumber As Long) As Long
說明
這個函數不必在win32下使用；即使使用，也不會有任何效果
This function is not necessary under Win32 and has no effect.


SetVolumeLabel
VB聲明
Declare Function SetVolumeLabel Lib "kernel32" Alias "SetVolumeLabelA" (ByVal lpRootPathName As String, ByVal lpVolumeName As String) As Long
說明
設置一個磁盤的卷標（Label）
返回值
Long，TRUE（非零）表示成功，否則返回零。會設置GetLastError
參數表
參數 | 類型及說明
lpRootPathName | String，磁盤捲的根路徑
lpVolumeName | String，指定新卷標。用vbNullString指示刪除當前卷名


SystemTimeToFileTime
VB聲明
Declare Function SystemTimeToFileTime Lib "kernel32" Alias "SystemTimeToFileTime" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long
說明
根據一個FILETIME結構的內容，載入一個SYSTEMTIME結構
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpSystemTime | SYSTEMTIME，包含了系統時間信息的一個結構
lpFileTime | FILETIME，用於裝載文件時間的一個結構


UnlockFile
VB聲明
Declare Function UnlockFile Lib "kernel32" Alias "UnlockFile" (ByVal hFile As Long, ByVal dwFileOffsetLow As Long, ByVal dwFileOffsetHigh As Long, ByVal nNumberOfBytesToUnlockLow As Long, ByVal nNumberOfBytesToUnlockHigh As Long) As Long
說明
解除對一個文件的鎖定
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hFile | Long，要解鎖的文件的句柄
dwFileOffsetLow | Long，要解鎖文件區域起始位置的低32位地址
dwFileOffsetHigh | Long，要解鎖文件區域起始位置的高32位地址
nNumberOfBytesToUnlockLow | Long，鎖定區域中字符數量的低32位值
nNumberOfBytesToUnlockHigh | Long，鎖定區域中字符數量的高32位值
註解
解鎖的文件區域必須與以前鎖定時設置的區域完全相符。文件關閉前，應用程序應確定已解除了對任何區域的鎖定。參考LockFile瞭解進一步的情況


UnlockFileEx
VB聲明
Declare Function UnlockFileEx Lib "kernel32" Alias "UnlockFileEx" (ByVal hFile As Long, ByVal dwReserved As Long, ByVal nNumberOfBytesToUnlockLow As Long, ByVal nNumberOfBytesToUnlockHigh As Long, lpOverlapped As OVERLAPPED) As Long
說明
解除對一個文件的鎖定
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hFile | Long，要解鎖的文件的句柄
dwReserved | Long，未用；設為零
nNumberOfBytesToUnlockLow | Long，鎖定區域中字符數量的低32位值
nNumberOfBytesToUnlockHigh | Long，鎖定區域中字符數量的高32位值
lpOverlapped | OVERLAPPED，包含了文件中相對於解鎖區域起始處的偏移量
註解
解鎖的文件區域必須與以前鎖定時設置的區域完全相符。文件關閉前，應用程序應確定已解除了對任何區域的鎖定。參考LockFileEx瞭解進一步的情況


UnmapViewOfFile
VB聲明
Declare Function UnmapViewOfFile& Lib "kernel32" (ByVal lpBaseAddress As Long)
說明
在當前應用程序的內存地址空間解除對一個文件映射對象的映射
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpBaseAddress | Long，指定要解除映射的一個文件映射的基準地址。這個地址是早先用MapViewOfFile函數獲得的
註解
在vb的api文本查看器裡複製的聲明如下，請注意參數類型不同 Declare Function UnmapViewOfFile Lib "kernel32" Alias "UnmapViewOfFile" (lpBaseAddress As Any) As Long


VerFindFile
VB聲明
Declare Function VerFindFile Lib "version.dll" Alias "VerFindFileA" (ByVal uFlags As Long, ByVal szFileName As String, ByVal szWinDir As String, ByVal szAppDir As String, ByVal szCurDir As String, lpuCurDirLen As Long, ByVal szDestDir As String, lpuDestDirLen As Long) As Long
說明
用這個函數決定一個文件應安裝到哪裡
返回值
Long，下述值之一：
VFF_CURNEDEST | 指出文件現有版本不應在由szDestDir參數指定的目錄中，那個目錄是由函數建議安裝新版本的地方
VFF_FILEINUSE | 指出現有文件當時正在使用，而且不要在此時刪除
VFF_BUFFTOOSMALL | 指出szDestDir或szCurDir緩衝區的一個或兩個都太小，不足以容下目錄名
參數表
參數 | 類型及說明
uFlags | Long，目前只定義了VFFF_ISSHAREDFILE，它指出文件可由多個應用程序共享。如指定了這個標誌，該函數會建議將文件安裝到windows或系統目錄。如這個參數為零，則函數會建議將文件安裝到應用程序目錄
szFileName | String，要安裝的文件名。注意這個字串不應包括文件的路徑
szWinDir | String，設為windows目錄。目錄名稱是用GetWindowsDirectory函數取得的
szAppDir | String，應用程序以及所有相關文件的安裝目錄的完整路徑名稱
szCurDir | String，指定一個字串緩衝區，用於容納包含了文件現有版本的目錄。如文件版本不存在，則在緩衝區中載入源文件的目錄。注意必須為這個緩衝區至少分配MAX_PATH個字符的空間
lpuCurDirLen | Long，szCurDir緩衝區的長度。這個函數會設為實際裝載到緩衝區的字符數量
szDestDir | String，指定一個緩衝區，用於裝載應在其中安裝新文件的一個目錄名。注意至少要為這個緩衝區分配MAX_PATH個字符的空間
lpuDestDirLen | Long，szDestDir緩衝區的長度。這個變量會設為實際裝載到緩衝區的字符數量


VerInstallFile
VB聲明
Declare Function VerInstallFile Lib "version.dll" Alias " VerInstallFileA" (ByVal uFlags As Long, ByVal szSrcFileName As String, ByVal szDestFileName As String, ByVal szSrcDir As String, ByVal szDestDir As String, ByVal szCurDir As String, ByVal szTmpFile As String, lpuTmpFileLen As Long) As Long
說明
用這個函數安裝一個文件。它利用由VerFindFile函數提供的信息決定將文件安裝到哪裡。這個函數首先會比較兩個文件的版本標記。如源文件是最新和兼容的版本，則將源文件複製成目標目錄的一個臨時文件——如文件處於壓縮狀態，則同時將其解壓。隨後，將文件的現有版本刪除掉，再對臨時文件進行重名處理，使符合目標文件名
返回值
Long，返回一個整數，其中包含了VerInstallFile結果常數表裡列出的一個或多個常數的組合
參數表
參數 | 類型及說明
uFlags | Long，下述常數值的一個組合：
 | VIFF_FORCEINSTALL | 在不進行版本檢查的情況下強制安裝源文件
 | VIFF_DONTDELETEOLD | 如文件的現有版本不在目標目錄，則不將其刪除；如果它在目標目錄，就用新文件將其改寫（覆蓋）
szSrcFileName | String，指定要安裝文件的名字。注意其中不應包含文件的路徑名
szDestFileName | String，指定文件安裝好後應得到的一個正式名稱。這個名稱與szSrcFileName通常都是相同的
szSrcDir | String，指定源目錄。新版文件將從這裡複製到目標目錄
szDestDir | String，指定目標目錄。新版文件將從源目錄複製到這裡。通常為這個參數使用由VerFindFile函數返回的szDestDir緩衝區
szCurDir | String，包含了文件當前版本的一個目錄。通常將由VerFindFile函數返回的szCurDir緩衝區用於這個參數。如字串為空，則表明系統中不存在文件文件的早期版本
szTmpFile | String，用於裝載源文件一個臨時副本名稱的緩衝區。注意必須至少為其分配MAX_PATH個字符的空間
lpuTmpFileLen | Long，szTmpFile緩衝區的長度。這個變量會設為裝載到緩衝區的實際字符數，其中包括中止用的NULL字符。如指定了VIFF_FORCEINSTALL，且szTmpFile不為零，則臨時文件會被更名為由szSrcFileName參數指定的名字


VerLanguageName
VB聲明
Declare Function VerLanguageName Lib "kernel32" Alias "VerLanguageNameA" (ByVal wLang As Long, ByVal szLang As String, ByVal nSize As Long) As Long
說明
這個函數能根據16位語言代碼獲取一種語言的名稱。利用版本資源中的語言代碼，可以判斷出一個文件編寫時採用的語言格式。表格「win32支持的語言代碼」對win32支持的各種語言代碼進行了總結
返回值
Long，裝載到szLang緩衝區的字符數量。如緩衝區的容量不夠，不能容下完整的名稱，則函數返回需要的緩衝區大小。零表示出錯
參數表
參數 | 類型及說明
wLang | Long，語言ID
szLang | String，用於裝載指定語言文本名稱的一個緩衝區。這個緩衝區至少應預初始化成nSize+1個字節的長度
nSize | Long，szLang緩衝區的大小


VerQueryValue
VB聲明
Declare Function VerQueryValue& Lib "version.dll" Alias "VerQueryValueA" (pBlock As Byte, ByVal lpSubBlock As String, lplpBuffer As Long, puLen As Long)
說明
這個函數用於從版本資源中獲取信息。調用這個函數前，必須先用GetFileVersionInfo函數獲取版本資源信息。這個函數會檢查資源信息，並將需要的數據複製到一個緩衝區裡
返回值
Long，TRUE（非零）表示成功，如請求的信息不存在，或pBlock不屬於有效版本信息，那就返回一個零
參數表
參數 | 類型及說明
pBlock | Byte，指定一個內存塊第一個字節的地址。這個內存塊包含了由GetFileVersionInfo函數取回的版本數據信息
lpSubBlock | String，下述值之一：
 | "\" | 獲取文件的VS_FIXEDFILEINFO結構
 | "\VarFileInfo\Translation" | 獲取文件的翻譯表
 | "\StringFileInfo\...." | 獲取文件的字串信息。參考註解
lplpBuffer | Long，指定一個Long變量的地址，該變量用於裝載一個緩衝區的地址。請求的版本信息最終會裝載到那個緩衝區裡
puLen | Long，指定由lplpBuffer參數引用的數據值的長度，以字節為單位
註解
如lplpBuffer參數為"\StringFileInfo\...."，緩衝區裡就會載入一個整數數組。每一對整數都代表一種語言和代碼頁，它們描繪了可用的字串信息。通過用下面這三個部分指定一個字串，從而獲得StringFileInfo字串數據："\StringFileInfo\languagecodepage\stringname"，其中languagecodepage（語言代碼頁）是採用字串形式的一個8字符十六進制數字。如翻譯表中的語言代碼頁條目是&H04090000，那麼這個字串就應該是"04090000"。stringname（字串名）指定的是一個字串名。這個參數的一個例子如下： "\StringFileInfo\04090000\CompanyName"
其他
從vb的api文本查看器複製的聲明如下： Declare Function VerQueryValue Lib "version.dll" Alias "VerQueryValue" (pBlock As Any, ByVal lpSubBlock As String, ByVal lplpBuffer As Long, puLen As Long) As Long


文件處理類8

文件處理函數，共八頁。 第一頁 ， 第二頁 ， 第三頁 ， 第四頁 ， 第五頁 ， 第六頁 ， 第七頁 ，第八頁
WriteFile | 將數據寫入一個文件
WriteFileEx | 與WriteFile類似，只是它只能用於異步寫操作，並包括了一個完整的回調
WritePrivateProfileSection | 為一個初始化文件（.ini）中指定的小節設置所有項名和值
WritePrivateProfileString | 在初始化文件指定小節內設置一個字串
WriteProfileSection | 為Win.ini初始化文件中一個指定的小節設置所有項名和值
WriteProfileString | 在Win.ini初始化文件指定小節內設置一個字串
完


WriteFile
VB聲明
Declare Function WriteFile Lib "kernel32" Alias "WriteFile" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As OVERLAPPED) As Long
說明
將數據寫入一個文件。該函數比lwrite函數要靈活的多。也可將這個函數應用於對通信設備、管道、套接字以及郵槽的處理
返回值
Long，TRUE（非零）表示成功，否則返回零。會設置GetLastError
參數表
參數 | 類型及說明
hFile | Long，一個文件的句柄
lpBuffer | Any，要寫入的一個數據緩衝區
nNumberOfBytesToWrite | Long，要寫入數據的字節數量。如寫入零字節，表示什麼都不寫入，但會更新文件的「上一次修改時間」。針對位於遠程系統的命名管道，限制在65535個字節以內
lpNumberOfBytesWritten | Long，實際寫入文件的字節數量
lpOverlapped | OVERLAPPED，倘若在指定FILE_FLAG_OVERLAPPED的前提下打開文件，這個參數就必須引用一個特殊的結構。那個結構定義了一次異步寫操作。否則，該參數應置為空（將聲明變為ByVal As Long，並傳遞零值）
註解
並不是每種操作系統都支持在任何類型的設備上進行異步操作。windows 95不支持對磁盤文件的重疊讀取操作


WriteFileEx
VB聲明
Declare Function WriteFileEx Lib "kernel32" Alias "WriteFileEx" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpOverlapped As OVERLAPPED, ByVal lpCompletionRoutine As Long) As Long
說明
與WriteFile類似，只是它只能用於異步寫操作，並包括了一個完整的回調
返回值
Long，非零表示成功，否則返回零。會設置GetLastError
參數表
參數 | 類型及說明
hFile | Long，文件的句柄
lpBuffer | Any，指定一個緩衝區，其中包含了要寫入的數據。除非寫操作完成，否則不要訪問這個緩衝區
nNumberOfBytesToWrite | Long，要寫入數據的字節量
lpOverlapped | OVERLAPPED，定義了一次異步寫操作的結構。使用這個函數時，結構中的hEvent字段會被忽略
lpCompletionRoutine | Long，回調函數的值
註解
並不是每種操作系統都支持在任何類型的設備上進行異步操作。windows 95不支持對磁盤文件的重疊讀取操作


WritePrivateProfileSection
VB聲明
Declare Function WritePrivateProfileSection Lib "kernel32" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
說明
為一個初始化文件（.ini）中指定的小節設置所有項名和值
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpAppName | String，要設置的小節。這個字串不區分大小寫
lpString | String，項和值字串的一個列表。每個字串都用一個NULL字符分隔，最後一個字串後面用兩個NULL表示中止。如lpAppName指定的小節不存在，則用那個名字新建一個小節，並將其追加到初始化文件的最後。如果存在，則當前的所有項名和值都會被這個緩衝區中指定的數據取代
lpFileName | String，初始化文件的名字。如指定了一個完整路徑，而且文件不存在，就會產生錯誤。如只指定了文件名，而且文件不存在，就在當前的windows目錄中創建它


WritePrivateProfileString
VB聲明
Declare Function WritePrivateProfileString& Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As String, ByVal lpFileName As String)
說明
在初始化文件指定小節內設置一個字串
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpApplicationName | String，要在其中寫入新字串的小節名稱。這個字串不區分大小寫
lpKeyName | Any，要設置的項名或條目名。這個字串不區分大小寫。用vbNullString可刪除這個小節的所有設置項
lpString | String，指定為這個項寫入的字串值。用vbNullString表示刪除這個項現有的字串
lpFileName | String，初始化文件的名字。如果沒有指定完整路徑名，則windows會在windows目錄查找文件。如果文件沒有找到，則函數會創建它
其他
在vb的api文本查看器裡複製的聲明如下： Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long


WriteProfileSection
VB聲明
Declare Function WriteProfileSection Lib "kernel32" Alias "WriteProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String) As Long
說明
為Win.ini初始化文件中一個指定的小節設置所有項名和值
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpAppName | String，要設置的小節。這個字串不區分大小寫
lpString | String，項和值字串的一個列表。每個字串都用一個NULL字符分隔，最後一個字串後面用兩個NULL表示中止。如lpAppName指定的小節不存在，則用那個名字新建一個小節，並將其追加到初始化文件的最後。如果存在，則當前的所有項名和值都會被這個緩衝區中指定的數據取代
註解
注意對Win.ini文件的改動可能影響其他應用程序。如修改了正由其他應用程序使用的小節，一定要向所有窗口都發送一條WM_WININICHANGE消息


WriteProfileString
VB聲明
Declare Function WriteProfileString Lib "kernel32" Alias "WriteProfileStringA" (ByVal lpszSection As String, ByVal lpszKeyName As String, ByVal lpszString As String) As Long
說明
在Win.ini初始化文件指定小節內設置一個字串
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpszSection | String，指定要在其中寫入新串的小節。如尚不存在，會創建這個小節。這個字串不區分大小寫
lpszKeyName | String，要設置的項名或條目名。這個字串不區分大小寫。用vbNullString可刪除這個小節的所有設置項
lpszString | String，指定為這個項寫入的字串值。用vbNullString表示刪除這個項現有的字串
註解
注意對Win.ini文件的改動可能影響其他應用程序。如修改了正由其他應用程序使用的小節，一定要向所有窗口都發送一條WM_WININICHANGE消息


Windows消息類1

Windows消息函數，共一頁。第一頁
BroadcastSystemMessage | 將一條系統消息廣播給系統中所有的頂級窗口
GetMessagePos | 取得消息隊列中上一條消息處理完畢時的滑鼠指針屏幕位置
GetMessageTime | 取得消息隊列中上一條消息處理完畢時的時間
PostMessage | 將一條消息投遞到指定窗口的消息隊列
PostThreadMessage | 將一條消息投遞給應用程序
RegisterWindowMessage | 獲取分配給一個字串標識符的消息編號
ReplyMessage | 答覆一個消息
SendMessage | 調用一個窗口的窗口函數，將一條消息發給那個窗口
SendMessageCallback | 將一條消息發給窗口
SendMessageTimeout | 向窗口發送一條消息
SendNotifyMessage | 向窗口發送一條消息
完


BroadcastSystemMessage
VB聲明
Declare Function BroadcastSystemMessage Lib "user32" Alias "BroadcastSystemMessage" (ByVal dw As Long, pdw As Long, ByVal un As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
說明
將一條系統消息廣播給系統中所有的頂級窗口
返回值
Long，大於零表示成功；-1表示出錯。如設置了BSF_QUERY，而且至少有一個消息接收者返回零，那麼這個函數返回零
參數表
參數 | 類型及說明
dw | Long，下述常數的一個或多個
 | BSF_FLUSHDISK | 每次處理完一條消息後，都對磁盤進行刷新（將未存盤的數據存下來
 | BSF_FORCEIFHUNG | 如目標處於掛起狀態，則在設定的超時後到期返回
 | BSF_IGNORECURRENTTASK | 發送任務不接收消息
 | BSF_LPARAMBUFFER | lParam指向一個內存緩衝區
 | BSF_NOHANG | 跳過被掛起的所有進程
 | BSF_POSTMESSAGE | 投遞消息。不與BSF_LPARAMBUFFER和BSF_QUERY兼容
 | BSF_QUERY | 將消息順序發給進程，只有前一個返回TRUE時，才進入下一個進程
pdw | Long，下述常數的一個或多個
 | BSF_ALLCOMPONENTS | 消息進入能夠接收消息的每一個系統組件
 | BSF_APPLICATIONS | 消息到達應用程序
 | BSF_INSTALLABLEDRIVERS | 消息到達可安裝的驅動程序
 | BSF_NETDRIVERS | 消息到達網絡驅動程序
 | BSF_VXDS | 消息到達系統設備驅動程序
un | Long，消息編號
wParam | Long，由消息決定
lParam | Long，由消息決定。如指定了BSF_LPARAMBUFFER，這就是位於調用進程地址空間的一個內存緩衝區的地址，而且緩衝區的第一個16位字包含了緩衝區的長度


GetMessagePos
VB聲明
Declare Function GetMessagePos Lib "user32" Alias "GetMessagePos" () As Long
說明
取得消息隊列中上一條消息處理完畢時的滑鼠指針屏幕位置
返回值
Long，X坐標對應於結果值的低字，Y坐標對應於高字


GetMessageTime
VB聲明
Declare Function GetMessageTime Lib "user32" Alias "GetMessageTime" () As Long
說明
取得消息隊列中上一條消息處理完畢時的時間
返回值
Long，返回一個時間，表示為自系統啟動以來經歷的毫秒數
原文：The time is specified in milliseconds from the time the system was started.


PostMessage

PostMessage, PostMessageBynum, PostMessageBystring
VB聲明
Declare Function PostMessage& Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) Declare Function PostMessageByNum& Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) Declare Function PostMessageByString& Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String)
說明
將一條消息投遞到指定窗口的消息隊列。投遞的消息會在Windows事件處理過程中得到處理。在那個時候，會隨同投遞的消息調用指定窗口的窗口函數。特別適合那些不需要立即處理的窗口消息的發送
返回值
Long，如消息投遞成功，則返回TRUE（非零）。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，接收消息的那個窗口的句柄。如設為HWND_BROADCAST，表示投遞給系統中的所有頂級窗口。如設為零，表示投遞一條線程消息（參考PostThreadMessage）
wMsg | Long，消息標識符
wParam | Long，具體由消息決定
lParam | Any，具體由消息決定


PostThreadMessage
VB聲明
Declare Function PostThreadMessage Lib "user32" Alias "PostThreadMessageA" (ByVal idThread As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
說明
將一條消息投遞給應用程序。這條消息由應用程序的內部GetMessage循環獲得，但不會傳給一個特定的窗口
返回值
Long，如消息投遞成功，則返回TRUE（非零）。會設置GetLastError
參數表
參數 | 類型及說明
idThread | Long，用於接收消息的那個線程的標識符
msg | Long，消息標識符
wParam | Long，具體由消息決定
ByVal | Long，具體由消息決定


RegisterWindowMessage
VB聲明
Declare Function RegisterWindowMessage Lib "user32" Alias "RegisterWindowMessageA" (ByVal lpString As String) As Long
說明
獲取分配給一個字串標識符的消息編號
返回值
Long，&C000 到 &FFFF之間的一個消息編號。零意味著出錯
參數表
參數 | 類型及說明
lpString | String，註冊消息的名字
註解
如果沒有一個子類處理程序的幫助，這個函數就沒有什麼用


ReplyMessage
VB聲明
Declare Function ReplyMessage Lib "user32" Alias "ReplyMessage" (ByVal lReply As Long) As Long
說明
如將消息傳送給位於不同進程的一個窗口，通常第一個進程會暫時掛起，直到另一個進程中的窗口函數完成操作為止。在目標進程的窗口函數完成之前，另一個進程可用這個函數向第一個進程返回一個結果，使之能繼續進行
返回值
Long，如準備答覆的消息是由另一個進程發來的，則返回TRUE。如果它是從同一個進程中發出來的，則返回FALSE（此時，該函數沒有任何效果）
參數表
參數 | 類型及說明
lReply | Long，指定發回調用進程的一個結果


SendMessage

SendMessage, SendMessageBynum, SendMessageByString
VB聲明
Declare Function SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) Declare Function SendMessageBynum& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) Declare Function SendMessageByString& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String)
說明
調用一個窗口的窗口函數，將一條消息發給那個窗口。除非消息處理完畢，否則該函數不會返回。SendMessageBynum， SendMessageByString是該函數的「類型安全」聲明形式
返回值
Long，由具體的消息決定
參數表
參數 | 類型及說明
hwnd | Long，要接收消息的那個窗口的句柄
wMsg | Long，消息的標識符
wParam | Long，具體取決於消息
lParam | Any，具體取決於消息


SendMessageCallback
VB聲明
Declare Function SendMessageCallback Lib "user32" Alias "SendMessageCallbackA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long, ByVal lpResultCallBack As Long, ByVal dwData As Long) As Long
說明
將一條消息發給窗口。該函數最大的特定是可以立即返回。目標窗口函數執行完畢後，會用回調函數的形式將結果返回
返回值
Long，TRUE表示成功，FALSE表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，要接收消息的那個窗口的句柄
msg | Long，消息的標識符
wParam | Long，取決於消息
lParam | Long，取決於消息
lpResultCallBack | Long，指定函數地址。在vb5中可用AddressOf操作符獲得
dwData | Long，用戶自定義值
註解
回調函數聲明如下： Public Function WndProc(ByVal hwnd&, ByVal msg&, ByVal wp&, ByVal lp&) As Long 其中，wp參數是作為dwData參數傳遞的值。lp參數包含了來自窗口函數的結果


SendMessageTimeout
VB聲明
Declare Function SendMessageTimeout Lib "user32" Alias "SendMessageTimeoutA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long, ByVal fuFlags As Long, ByVal uTimeout As Long, lpdwResult As Long) As Long
說明
向窗口發送一條消息。如窗口位於不同的線程中，則利用這個函數可以指定一個超時值，以便在另一個進程掛起的時候防止調用進程也永遠掛起
返回值
Long，成功時返回TRUE，失敗時返回FALSE。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，要接收消息的一個窗口的句柄
msg | Long，消息的標識符
wParam | Long，由消息決定
lParam | Long，由消息決定
fuFlags | Long，下述常數的一個或多個
 | SMTO_ABORTIFHUNG | 如目標進程掛起，則函數立即返回
 | SMTO_BLOCK | 除非函數返回，否則調用線程不能處理消息
 | SMTO_NORMAL | 允許調用線程處理消息，同時保持函數繼續執行
uTimeout | Long，超時值，採用毫秒為單位
lpdwResult | Long，用於裝載函數結果的一個變量


SendNotifyMessage
VB聲明
Declare Function SendNotifyMessage Lib "user32" Alias "SendNotifyMessageA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
說明
向窗口發送一條消息。如目標窗口位於同調用方相同的線程內，則這個函數會表現為SendMessage函數。而且除非消息得到處理，否則函數不會返回。如目標窗口從屬於一個不同的線程，則函數會立即返回
返回值
Long，TRUE表示成功，FALSE表示出錯。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，用於接收消息的一個窗口的句柄
msg | Long，消息的標識符
wParam | Long，具體由消息決定
lParam | Long，具體由消息決定


網絡類函數1

網絡函數，共一頁。第一頁
WNetAddConnection | 創建同一個網絡資源的永久性連接
WNetAddConnection2 | 創建同一個網絡資源的連接
WNetAddConnection3 | 創建同一個網絡資源的連接
WNetCancelConnection | 結束一個網絡連接
WNetCancelConnection2 | 結束一個網絡連接
WNetCloseEnum | 結束一次枚舉操作
WNetConnectionDialog | 啟動一個標準對話框，以便建立同網絡資源的連接
WNetDisconnectDialog | 啟動一個標準對話框，以便斷開同網絡資源的連接
WNetEnumResource | 枚舉網絡資源
WNetGetConnection | 獲取本地或已連接的一個資源的網絡名稱
WNetGetLastError | 獲取網絡錯誤的擴展錯誤信息
WNetGetUniversalName | 獲取網絡中一個文件的遠程名稱以及/或者UNC（統一命名規範）名稱
WNetGetUser | 獲取一個網絡資源用以連接的名字
WNetOpenEnum | 啟動對網絡資源進行枚舉的過程
完


WNetAddConnection
VB聲明
Declare Function WNetAddConnection Lib "mpr.dll" Alias "WNetAddConnectionA" (ByVal lpszNetPath As String, ByVal lpszPassword As String, ByVal lpszLocalName As String) As Long
說明
創建同一個網絡資源的永久性連接
返回值
Long，零表示成功。會設置GetLastError。如GetLastError是ERROR_EXTENDED_ERROR，則可用WNetGetLastError取得額外的錯誤信息
參數表
參數 | 類型及說明
lpszNetPath | String，要連接的網絡名
lpszPassword | String，可選的一個密碼。如為vbNullString，表示採用當前用戶的默認密碼。如為一個空字串，則不用任何密碼
lpszLocalName | String，資源的本地名稱。（例如，F: 和 LPT1:）


WNetAddConnection2
VB聲明
Declare Function WNetAddConnection2 Lib "mpr.dll" Alias "WNetAddConnection2A" (lpNetResource As NETRESOURCE, ByVal lpPassword As String, ByVal lpUserName As String, ByVal dwFlags As Long) As Long
說明
創建同一個網絡資源的連接
返回值
Long，零表示成功。會設置GetLastError。如GetLastError是ERROR_EXTENDED_ERROR，則可用WNetGetLastError取得額外的錯誤信息
參數表
參數 | 類型及說明
lpNetResource | NETRESOURCE，在這個結構中設置了下述字段，對要連接的網絡資源進行了定義：dwType， lpLocalName （可為 vbNullString）， lpRemoteName， lpProvider （設為 vbNullString 表示用默認提供者）。該結構的其他所有變量都會被忽略
lpPassword | String，可選的一個密碼。如為vbNullString，表示採用當前用戶的默認密碼。如為一個空字串，則不用任何密碼
lpUserName | String，用於連接的用戶名。如為vbNullString，表示使用當前用戶
dwFlags | Long，設為零；或指定常數CONNECT_UPDATE_PROFILE，表示創建永久性連接


WNetAddConnection3
VB聲明
Declare Function WNetAddConnection3& Lib "mpr.dll" Alias "WNetAddConnection3A" (ByVal hwnd As Long, lpNetResource As NETRESOURCE, ByVal lpPassword As String, ByVal lpUserName As String, ByVal dwFlags As Long)
說明
創建同一個網絡資源的連接。這個函數與WNetAddConnection2類似，只是它允許我們為這個函數顯示的對話框指定一個物主窗口
返回值
Long，
參數表
參數 | 類型及說明
hwnd | Long，指定一個窗口句柄，用作本函數創建的對話框的父窗口
lpNetResource | NETRESOURCE，在這個結構中設置了下述字段，對要連接的網絡資源進行了定義：dwType， lpLocalName （可為 vbNullString）， lpRemoteName， lpProvider （設為 vbNullString 表示用默認提供者）。該結構的其他所有變量都會被忽略
lpPassword | String，可選的一個密碼。如為vbNullString，表示採用當前用戶的默認密碼。如為一個空字串，則不用任何密碼
lpUserName | String，用於連接的用戶名。如為vbNullString，表示使用當前用戶
dwFlags | Long，設為零；或指定常數CONNECT_UPDATE_PROFILE，表示創建永久性連接


WNetCancelConnection
VB聲明
Declare Function WNetCancelConnection Lib "mpr.dll" Alias "WNetCancelConnectionA" (ByVal lpszName As String, ByVal bForce As Long) As Long
說明
結束一個網絡連接
返回值
Long，零表示成功。會設置GetLastError。如GetLastError是ERROR_EXTENDED_ERROR，則可用WNetGetLastError取得額外的錯誤信息
參數表
參數 | 類型及說明
lpszName | String，已連接資源的遠程名稱或本地名稱
bForce | Long，如為TRUE，表示斷開連接（即使連接的資源上正有打開的文件或作業）


WNetCancelConnection2
VB聲明
Declare Function WNetCancelConnection2 Lib "mpr.dll" Alias "WNetCancelConnection2A" (ByVal lpName As String, ByVal dwFlags As Long, ByVal fForce As Long) As Long
說明
結束一個網絡連接
返回值
Long，零表示成功。會設置GetLastError。如GetLastError是ERROR_EXTENDED_ERROR，則可用WNetGetLastError取得額外的錯誤信息
參數表
參數 | 類型及說明
lpszName | String，已連接資源的遠程名稱或本地名稱
dwFlags | Long，設為零或CONNECT_UPDATE_PROFILE。如為零，而且建立的是永久性連接，則在windows下次重新啟動時仍會重新連接
fForce | Long，如為TRUE，表示強制斷開連接（即使連接的資源上正有打開的文件或作業）


WNetCloseEnum
VB聲明
Declare Function WNetCloseEnum Lib "mpr.dll" Alias "WNetCloseEnum" (ByVal hEnum As Long) As Long
說明
結束一次枚舉操作
返回值
Long，零表示成功。會設置GetLastError。如GetLastError是ERROR_EXTENDED_ERROR，則可用WNetGetLastError取得額外的錯誤信息
參數表
參數 | 類型及說明
hEnum | Long，由 WNetOpenEnum函數返回的一個枚舉句柄


WNetConnectionDialog
VB聲明
Declare Function WNetConnectionDialog Lib "mpr.dll" Alias "WNetConnectionDialog" (ByVal hwnd As Long, ByVal dwType As Long) As Long
說明
啟動一個標準對話框，以便建立同網絡資源的連接
返回值
Long，零表示成功。如用戶取消了操作，則返回-1。會設置GetLastError。如GetLastError是ERROR_EXTENDED_ERROR，則可用WNetGetLastError取得額外的錯誤信息
參數表
參數 | 類型及說明
hwnd | Long，指定要成為對話框父窗口的一個窗口的句柄
dwType | Long，設成RESOURCETYPE_DISK，瀏覽磁盤資源


WNetDisconnectDialog
VB聲明
Declare Function WNetDisconnectDialog Lib "mpr.dll" Alias "WNetDisconnectDialog" (ByVal hwnd As Long, ByVal dwType As Long) As Long
說明
啟動一個標準對話框，以便斷開同網絡資源的連接
返回值
Long，零表示成功。如用戶取消了操作，則返回-1。會設置GetLastError。如GetLastError是ERROR_EXTENDED_ERROR，則可用WNetGetLastError取得額外的錯誤信息
參數表
參數 | 類型及說明
hwnd | Long，指定要成為對話框父窗口的一個窗口的句柄
dwType | Long，設成RESOURCETYPE_DISK 或 RESOURCETYPE_PRINT，決定要斷開的是磁盤還是印表機資源


WNetEnumResource
VB聲明
Declare Function WNetEnumResource Lib "mpr.dll" Alias "WNetEnumResourceA" (ByVal hEnum As Long, lpcCount As Long, lpBuffer As Any, lpBufferSize As Long) As Long
說明
枚舉網絡資源
返回值
Long，零表示成功。ERROR_NO_MORE_ITEMS表示不剩下可以枚舉的條目。ERROR_MORE_DATA表示條目不能裝入lpBuffer。會設置GetLastError。如GetLastError是ERROR_EXTENDED_ERROR，則可用WNetGetLastError取得額外的錯誤信息
參數表
參數 | 類型及說明
hEnum | Long，從WNetOpenEnum函數返回的一個句柄
lpcCount | Long，最初設為要枚舉的最大資源數量；或設為-1，表示枚舉盡可能多的資源。一旦返回，就會設為實際枚舉的資源數量
lpBuffer | Any，通常是一個字節緩衝區的首字節。該緩衝區裝載了枚舉信息（可按引用聲明為Byte）
lpBufferSize | Long，以字節為單位指定lpBuffer數組的長度。如緩衝區不夠大，則設為需要的緩衝區長度
註解
枚舉網絡條目時，最好用vb一次枚舉一個資源。盡量不要使用這個函數同時枚舉許多網絡資源的功能


WNetGetConnection
VB聲明
Declare Function WNetGetConnection Lib "mpr.dll" Alias "WNetGetConnectionA" (ByVal lpszLocalName As String, ByVal lpszRemoteName As String, cbRemoteName As Long) As Long
說明
獲取本地或已連接的一個資源的網絡名稱
返回值
Long，零表示成功。會設置GetLastError。如GetLastError是ERROR_EXTENDED_ERROR，則可用WNetGetLastError取得額外的錯誤信息
參數表
參數 | 類型及說明
lpszLocalName | String，本地設備的名字
lpszRemoteName | String，指定一個字串緩衝區，用於裝載設備的資源名稱
cbRemoteName | Long，lpszRemoteName緩衝區的字符數量。如緩衝區不夠大，則設為需要的緩衝區長度


WNetGetLastError
VB聲明
Declare Function WNetGetLastError Lib "mpr.dll" Alias "WNetGetLastErrorA" (lpError As Long, ByVal lpErrorBuf As String, ByVal nErrorBufSize As Long, ByVal lpNameBuf As String, ByVal nNameBufSize As Long) As Long
說明
獲取網絡錯誤的擴展錯誤信息
返回值
Long，零表示成功。ERROR_INVALID_ADDRESS表示緩衝區無效
參數表
參數 | 類型及說明
lpError | Long，指定一個變量，用於裝載網絡錯誤代碼。具體的代碼由網絡供應商決定
lpErrorBuf | String，指定一個字串緩衝區，用於裝載網絡錯誤的說明
nErrorBufSize | Long，lpErrorBuf緩衝區包含的字符數量
lpNameBuf | String，用於裝載網絡供應商名字的字串緩衝區
nNameBufSize | Long，lpNameBuf緩衝區的字符數量


WNetGetUniversalName
VB聲明
Declare Function WNetGetUniversalName Lib "mpr" Alias "WNetGetUniversalNameA" (ByVal lpLocalPath As String, ByVal dwInfoLevel As Long, lpBuffer As Any, lpBufferSize As Long) As Long
說明
獲取網絡中一個文件的遠程名稱以及/或者UNC（統一命名規範）名稱。例如，假設一個已連接的遠程驅動器是\\othersystem\CDrive，它對應的本地驅動器是F:，而且在它的子目錄temp中包含了文件xyz.doc。那麼運算結果如下：LocalPath xyz.doc 或 f:\temp\xyz.doc（或者文件的任何相對路徑名） UNC 名稱： \\othersystem\CDrive\temp\xyz.doc 連接名稱： \\othersystem\CDrive 剩餘名稱： \temp\xyz.doc 它們分別對應於由這個函數裝載的REMOTE_NAME_INFO結構的字段，對該結構的定義如下： Type REMOTE_NAME_INFO pUniversalName As Long pConnectionName As Long pRemainingPath As Long End Type
返回值
Long，零表示成功。會設置GetLastError。如GetLastError是ERROR_EXTENDED_ERROR，則可用WNetGetLastError取得額外的錯誤信息
參數表
參數 | 類型及說明
lpLocalPath | String，磁盤文件的名字
dwInfoLevel | Long，下述常數之一：
 | UNIVERSAL_NAME_INFO_LEVEL | 只設置pUniversalName字段
 | REMOTE_NAME_INFO_LEVEL | 設置REMOTE_NAME_INFO結構中的所有三個字段
lpBuffer | Any，指定用於裝載UNC信息的一個緩衝區。緩衝區起點與一個REMOTE_NAME_INFO結構對應
lpBufferSize | Long，以字節為單位指定lpBuffer緩衝區的長度。如緩衝區不夠大，則設為需要的緩衝區長度


WNetGetUser
VB聲明
Declare Function WNetGetUser Lib "mpr.dll" Alias "WNetGetUserA" (ByVal lpName As String, ByVal lpUserName As String, lpnLength As Long) As Long
說明
獲取一個網絡資源用以連接的名字
返回值
Long，零表示成功。會設置GetLastError。如GetLastError是ERROR_EXTENDED_ERROR，則可用WNetGetLastError取得額外的錯誤信息
參數表
參數 | 類型及說明
lpName | String，指定已連接資源的遠程名稱或本地名稱。用vbNullString獲取當前用戶的名字
lpUserName | String，用於裝載用戶名的一個字串緩衝區
lpnLength | Long，lpUserName緩衝區的長度。如緩衝區不夠大，則自動設為需要的緩衝區長度


WNetOpenEnum
VB聲明
Declare Function WNetOpenEnum Lib "mpr.dll" Alias "WNetOpenEnumA" (ByVal dwScope As Long, ByVal dwType As Long, ByVal dwUsage As Long, lpNetResource As NETRESOURCE, lphEnum As Long) As Long
說明
啟動對網絡資源進行枚舉的過程。這個函數會返回由WNetEnumResource函數用於枚舉資源所用的一個句柄
返回值
Long，零表示成功。會設置GetLastError。如GetLastError是ERROR_EXTENDED_ERROR，則可用WNetGetLastError取得額外的錯誤信息
參數表
參數 | 類型及說明
dwScope | Long，指定要枚舉的資源範圍。可設為下述常數之一：
 | RESOURCE_CONNECTED | 枚舉已連接的資源（忽略dwUsage）
 | RESOURCE_GLOBALNET | 枚舉所有資源
 | RESOURCE_REMEMBERED | 只枚舉永久性連接
dwType | Long，下述常數之一
 | RESOURCE_ANY | 枚舉所有類型的網絡資源
 | RESOURCE_DISK | 枚舉磁盤資源
 | RESOURCE_PRINT | 枚舉列印資源
dwUsage | Long，可設為零，表示枚舉所有資源；或設為下述常數的一個或兩個：
 | RESOURCEUSAGE_CONNECTABLE | 只枚舉那些能夠連接的資源
 | RESOURCEUSAGE_CONTAINER | 只枚舉包含了其他資源的資源
lpNetResource | NETRESOURCE，這個結構指定了一個容器資源。該函數會枚舉包含於這裡指定的某個指定資源內的資源。如設為NULL（把聲明變成ByVal As Long），那麼函數會枚舉頂級網絡資源。倘若在dwScope參數里沒有指定RESOURCE_GLOBALNET，那麼必須為NULL
lphEnum | Long，指定一個變量，用於裝載一個枚舉句柄。該句柄由WNetEnumResource函數使用。必須用WNetCloseEnum函數將其清除


索引

進程和線程函數，共二頁，第一頁，第二頁
CreatProcess | 創建一個新進程
ExitProcess | 以乾淨的方式關閉一個進程
FindExecutable | 查找與一個指定文件關聯在一起的程序的文件名
FreeLibray | 釋放指定的動態鏈庫
GetCurrentProcess | 獲取當前進程的一個偽句柄
GetCurrentProcessId | 獲取當前進程一個唯一的標識符
GetCurrentThread | 獲取當前線程的一個偽句柄
GetExitCodeProces | 獲取一個已中斷進程的退出代碼
GetExitCodeThread | 獲取一個已中斷線程的退出代碼
GetModuleFileName | 獲取一個已裝載模板的完整路徑名稱
GetModuleHandle | 獲取一個應用程序或動態鏈接庫的模塊句柄
GetPriorityClass | 獲取特定進程的優先級別
GetProcessShutdownParameters | 調查系統關閉時一個指定的進程相對於其它進程的關閉早遲情況
GetProcessTimes | 獲取與一個進程的經過時間有關的信息
GetProcessWorkingSetSize | 瞭解一個應用程序在運行過程中實際向它交付了多大容量的內存
GetSartupInfo | 獲取一個進程的啟動信息


CreatProcess
VB聲明
Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As String, ByVal lpCommandLine As String, lpProcessAttributes As SECURITY_ATTRIBUTES, lpThreadAttributes As SECURITY_ATTRIBUTES, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, lpEnvironment As Any, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
說明
創建一個新進程
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpApplicationName | String，要執行的應用程序的名字。可設為vbNullString；在這種情況下，應用程序的名字應在lpCommandLine參數的起始處出現
lpCommandLine | String，要執行的命令行。可用GetCommandLine函數取得一個進程使用的命令行。windows會盡可能地根據下述搜索順序來查找執行文件：
 | （1）包含了父進程執行文件的目錄
 | （2）父進程當前的目錄
 | （3）由GetSystemDirectory返回的系統目錄
 | （4）僅適於windows NT：16位系統目錄
 | （5）由GetSystemDirectory返回的windows目錄
 | （6）由PATH環境變量指定的目錄
lpProcessAttributes | SECURITY_ATTRIBUTES，指定一個SECURITY_ATTRIBUTES結構，或傳遞零值表示採用不允許繼承的默認描述符。該參數定義進程的安全特性
lpThreadAttributes | SECURITY_ATTRIBUTES，指定一個SECURITY_ATTRIBUTES結構，或傳遞零值表示採用不允許繼承的默認描述符。該參數定義進程之主進程的安全特性
bInheritHandles | Long，TRUE表示允許當前進程中的所有句柄都由新建的子進程繼承
dwCreationFlags | Long，來自API32.TXT文件的一個或多個下述常數之一，它們都帶有前綴CREATE_。下面這些用於VB程序員：
 | CREATE_SEPARATE_WOW_VDM（僅適用於NT）：啟動一個16位的windows應用程序時，強迫它在自己的內存空間運行
 | CREATE_SHARED_WOW_VDM（僅適用於NT）：啟動一個16位的windows應用程序時，強迫它在共享的16位虛擬機內運行
 | CREATE_SUSPENDED：立即掛起新進程。除非調用ResumeThread函數。
 | IDLE_PRIORITY_CLASS：新進程應該有非常低的優先級，只有在系統空閒的時候才能運行。基本值是4
 | HIGH_PRIORITY_CLASS：新進程應該有非常高的優先級，基本值是13
 | NORMAL_PRIORITY_CLASS：標準優先級。如進程位於前台，則基本值是9；如在後台。則優先值是7
lpEnvironment | 任何類型，指向一個環境塊的指針
lpCurrentDriectory | String，新進程的當前目錄路徑
lpStartupInfo | STARTUPINFO，指定一個STARTUPINFO結構，其中包含了創建進程時使用的附加信息
lpProcessInformation | PROCESS_INFORMATION，該結構用於容納新進程的進程和線程標識。大多數情況下，一旦這個函數返回，父應用程序都會關閉兩個句柄。


ExitProcess
VB聲明
Declare Sub ExitProcess Lib "kernel32" Alias "ExitProcess" (ByVal uExitCode As Long)
說明
中止一個進程
在VB中使用
應盡量避免用該函數來關閉進程。不要在自己的VB程序中使用它。此時，應試著向要關閉的那個程序的主窗口投遞一條WM_CLOSE消息
參數表
參數 | 類型及說明
uExitCode | Long，指定想中斷的那個程序的一個退出代碼


FindExecutable
VB聲明
Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long
說明
查找與一個指定文件關聯在一起的程序的文件名
返回值
Long，大於32表示成功；31表示不存在文件類型的關聯；0表示系統內存或資源不足；ERROR_FILE_NOT_FOUND表示指定的文件不存在；ERROR_PATH_NOT_FOUND表示指定的路徑不存在；ERROR_BAD_FORMAT表示執行格式無效
參數表
參數 | 類型及說明
lpDirectory | String，要使用的默認目錄的完整路徑
lpResult | String，指定一個字串緩衝區，用於裝載可執行文件或程序的名字。注意這個字串預先至少都要初始化成MAX_PATH個字符的長度
lpFile | String，指定要為其查找相關程序的一個文件名或程序名


FreeLibray
VB聲明
Declare Function FreeLibrary Lib "kernel32" Alias "FreeLibrary" (ByVal hLibModule As Long) As Long
說明
釋放指定的動態鏈庫，它們早先是用LoadLibray API函數裝載
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
在VB裡使用
只能用這個函數釋放那些由應用程序明確裝載的DLL，一個LoadLibray對應一個FreeLibray
參數表
參數 | 類型及說明
hLibModule | Long，要釋放的一個庫的句柄


GetCurrentProcess
VB聲明
Declare Function GetCurrentProcess Lib "kernel32" Alias "GetCurrentProcess" () As Long
說明
獲取當前進程的一個偽句柄
返回值
Long，當前進程的偽句柄
註解

只要當前進程需要一個進程句柄，就可以使用這個偽句柄。該句柄可以複製，但不可繼承。不必調用CoseHandle函數關閉


GetCurrentProcessId
VB聲明
Declare Function GetCurrentProcessId Lib "kernel32" Alias "GetCurrentProcessId" () As Long
說明
獲取當前進程一個唯一的標識符
返回值
Long，當前進程的標識符


GetCurrentThread
VB聲明
Declare Function GetCurrentThread Lib "kernel32" Alias "GetCurrentThread" () As Long
說明
獲取當前線程的一個偽句柄
返回值
Long，當前線程的偽句柄
註解

只要當前線程需要一個進程句柄，就可以使用這個偽句柄。該句柄可以複製，但不可繼承。不必調用CoseHandle函數關閉


GetExitCodeProcess
VB聲明
Declare Function GetExitCodeProcess Lib "kernel32" Alias "GetExitCodeProcess" (ByVal hProcess As Long, lpExitCode As Long) As Long
說明
獲取一個已中斷進程的退出代碼
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpExitCode | Long，用於裝載進程退出代碼的一個長整數變量。如進程還未中止，則設為常數STILL_ACTIVE
hProcess | Long，想獲取退出代碼的一個進程的句柄


GetExitCodeThread
VB聲明
Declare Function GetExitCodeThread Lib "kernel32" Alias "GetExitCodeThread" (ByVal hThread As Long, lpExitCode As Long) As Long
說明
獲取一個已中斷線程的退出代碼
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpExitCode | Long，用於裝載線程退出代碼的一個長整數變量。如線程還未中止，則設為常數STILL_ACTIVE
hThread | Long，想獲取退出代碼的一個線程的句柄


GetModuleFileName
VB聲明
Declare Function GetModuleFileName Lib "kernel32" Alias "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long
說明
獲取一個已裝載模板的完整路徑名稱
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hModule | Long，一個模塊句柄，可以是一個DLL模塊
lpFileName | String，指定一個字串緩衝區，要在其中容納文件的用NULL字符中止的路徑名，hModule模塊就是從這個文件裝載進來的
nSize | Long，裝載到緩衝區lpFileName的最大字符數量
註解
在win95下，函數會核查應用程序的內部版本號是否為4.0或更大的一個數字。如果是，就返回一個長文件名，否則返回短文件名


GetModuleHandle
VB聲明
Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long
說明
獲取一個應用程序或動態鏈接庫的模塊句柄
返回值
Long，成功，則返回模塊句柄。零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpModuleName | String，指定模塊名，這通常是與模塊的文件名相同的一個名字
註解
只有在當前進程的場景中，這個句柄才有效


GetPriorityClass
VB聲明
Declare Function GetPriorityClass Lib "kernel32" Alias "GetPriorityClass" (ByVal hProcess As Long) As Long
說明
獲取特定進程的優先級別
返回值
Long，進程的優先級，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hProcess | Long，進程句柄


GetProcessShutdownParameters
VB聲明
Declare Function GetProcessShutdownParameters Lib "kernel32" Alias "GetProcessShutdownParameters" (lpdwLevel As Long, lpdwFlags As Long) As Long
說明
調查系統關閉時一個指定的進程相對於其它進程的關閉早遲情況
返回值
Long，非零表示成功，零表示失敗。
參數表
參數 | 類型及說明
lpdwLevel | Long，從0到&H4FF的一個值。編號越高程序在系統關閉時越早關閉。
lpdwFlags | Long，指定SHUTDOWN_NORETRY標誌。如關閉一個進程時，會出現一個重試對話框。通過設置這個標誌，就可以禁止那個對話框出現，並直接關閉進程
適用平台
Wnidows NT


GetProcessTimes
VB聲明
Declare Function GetProcessTimes Lib "kernel32" Alias "GetProcessTimes" (ByVal hProcess As Long, lpCreationTime As FILETIME, lpExitTime As FILETIME, lpKernelTime As FILETIME, lpUserTime As FILETIME) As Long
說明
獲取與一個進程的經過時間有關的信息
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hProcess | Long，一個進程句柄
lpCreationTime | FILETIME，指定一個FILETIME結構，在其中裝載進程的創建時間
lpExitTime | FILETIME，指定一個FILETIME結構，在其中裝載進程的中止時間
lpKernelTime | FILETIME，指定一個FILETIME結構，在其中裝載進程花在內核模式上的總時間
lpUserTime | FILETIME，指定一個FILETIME結構，在其中裝載進程花在用戶模式上的總時間
適用平台
Windows NT


GetProcessWorkingSetSize
VB聲明
Declare Function GetProcessWorkingSetSize Lib "kernel32" Alias "GetProcessWorkingSetSize" (ByVal hProcess As Long, lpMinimumWorkingSetSize As Long, lpMaximumWorkingSetSize As Long) As Long
說明
瞭解一個應用程序在運行過程中實際向它交付了多大容量的內存
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hProcess | Long，指定一個進程的句柄
lpMinimumWorkingSetSize | Long，用於裝載最小進程容量的一個變量
lpMaximumWorkingSetSize | Long，用於裝載最大進程容量的一個變量
適用平台
Windows NT


GetSartupInfo
VB聲明
Declare Sub GetStartupInfo Lib "kernel32" Alias "GetStartupInfoA" (lpStartupInfo As STARTUPINFO)
說明
獲取一個進程的啟動信息
參數表
參數 | 類型及說明
lpStartupInfo | STARTUPINFO，指定一個STARTUPINFO結構，用於最終載入進程的啟動信息


索引

進程和線程函數，共二頁，第一頁，第二頁
GetThreadPriority | 獲取特定線程的優先級別
GetTheardTimes | 獲取與一個線程的經過時間有關的信息
GetWindowThreadProcessId | 獲取與指定窗口關聯在一起的一個進程和線程標識符
LoadLibrary | 載入指定的動態鏈接庫，並將它映射到當前進程使用的地址空間
LoadLibraryEx | 裝載指定的動態鏈接庫，並為當前進程把它映射到地址空間
LoadModule | 載入一個windows應用程序，並在指定的環境中運行
SetPriorityClass | 設置一個進程的優先級別
SetProcessShutdownParameters | 在系統關閉期間，為指定進程設置他相對於其它程序的關閉順序
SetProcessWorkingSetSize | 設置操作系統實際劃分給進程使用的內存容量
SetThreadPriority | 設定線程的優先級別
ShellExecute | 查找與指定文件關聯在一起的程序的文件名
TerminateProcess | 結束一個進程
WinExec | WinExec
 | 完


GetThreadPriority
VB聲明
Declare Function GetThreadPriority Lib "kernel32" Alias "GetThreadPriority" (ByVal hThread As Long) As Long
說明
獲取特定線程的優先級別
返回值
Long，返回帶有THREAD_PRIORITY_???前綴的某個函數，它規定了線程的優級。 THREAD_PRIORITY_ERROR_RETURN表示出錯
參數表
參數 | 類型及說明
hThread | Long，線程句柄
註解
線程的優先級同進程的優先級類組合在一起就決定了線程的實際優先級


GetTheardTimes
VB聲明
Declare Function GetThreadTimes Lib "kernel32" Alias "GetThreadTimes" (ByVal hThread As Long, lpCreationTime As FILETIME, lpExitTime As FILETIME, lpKernelTime As FILETIME, lpUserTime As FILETIME) As Long
說明
獲取與一個線程的經過時間有關的信息
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hThread | Long，一個線程句柄
lpCreationTime | FILETIME，指定一個FILETIME結構，在其中裝載線程的創建時間
lpExitTime | FILETIME，指定一個FILETIME結構，在其中裝載線程的中止時間
lpKernelTime | FILETIME，指定一個FILETIME結構，在其中裝載線程花在內核模式上的總時間
lpUserTime | FILETIME，指定一個FILETIME結構，在其中裝載線程花在用戶模式上的總時間
適用平台
Windows NT


GetWindowThreadProcessId
VB聲明
Declare Function GetWindowThreadProcessId Lib "user32" Alias "GetWindowThreadProcessId" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
說明
獲取與指定窗口關聯在一起的一個進程和線程標識符
返回值
Long，擁有窗口的線程的標識符
參數表
參數 | 類型及說明
lpdwProcessId | Long，指定一個變量，用於裝載擁有那個窗口的一個進程的標識符
hwnd | Long，指定窗口句柄


LoadLibrary
VB聲明
Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
說明
載入指定的動態鏈接庫，並將它映射到當前進程使用的地址空間。一旦載入，即可訪問庫內保存的資源
返回值
Long，成功則返回庫模塊的句柄，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpLibFileName | String，指定要載入的動態鏈接庫的名稱。採用與CreateProcess函數的lpCommandLine參數指定的同樣的搜索順序
註解
一旦不需要，用FreeLibrary函數釋放DLL


LoadLibraryEx
VB聲明
Declare Function LoadLibraryEx Lib "kernel32" Alias "LoadLibraryExA" (ByVal lpLibFileName As String, ByVal hFile As Long, ByVal dwFlags As Long) As Long
說明
裝載指定的動態鏈接庫，並為當前進程把它映射到地址空間。一旦載入，就可以訪問庫內保存的資源
返回值
Long，成功則返回庫模塊的句柄，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
lpLibFileName | String，指定要載入的動態鏈接庫的名稱。採用與CreateProcess函數的lpCommandLine參數指定的同樣的搜索順序
hFile | Long，未用，設為零
dwFlags | Long，指定下述常數的一個或多個
 | DONT_RESOLVE_DLL_REFERENCES：不對DLL進行初始化，僅用於NT
 | LOAD_LIBRARY_AS_DATAFILE：不準備DLL執行。如裝載一個DLL只是為了訪問它的資源，就可以改善一部分性能
 | LOAD_WITH_ALTERED_SEARCH_PATH：指定搜索的路徑
註解
一旦不需要，用FreeLibrary函數釋放DLL


LoadModule
VB聲明
Declare Function LoadModule Lib "kernel32" Alias "LoadModule" (ByVal lpModuleName As String, lpParameterBlock As Any) As Long
說明
載入一個windows應用程序，並在指定的環境中運行
返回值
Long，大於32表示成功，請參考FindExecutable函數的返回值
參數表
參數 | 類型及說明
lpModuleName | Sring，要裝載的可執行程序的文件名
lpParameterBlock | Any，指定一個結構，用它定義裝載新應用程序時使用的參數


SetPriorityClass
VB聲明
Declare Function SetPriorityClass Lib "kernel32" Alias "SetPriorityClass" (ByVal hProcess As Long, ByVal dwPriorityClass As Long) As Long
說明
設置一個進程的優先級別
返回值
Long，進程的優先級，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hProcess | Long，指定一個進程句柄
dwPriorityClass | Long，指定一個新優先級類的一個常數，請參考CreateProcess函數


SetProcessShutdownParameters
VB聲明
Declare Function SetProcessShutdownParameters Lib "kernel32" Alias "SetProcessShutdownParameters" (ByVal dwLevel As Long, ByVal dwFlags As Long) As Long
說明
在系統關閉期間，為指定進程設置他相對於其它程序的關閉順序
返回值
Long，非零表示成功，零表示失敗。
參數表
參數 | 類型及說明
lpdwLevel | Long，從0到&H4FF的一個值。編號越高程序在系統關閉時越早關閉。
lpdwFlags | Long，指定SHUTDOWN_NORETRY標誌。如關閉一個進程時，會出現一個重試對話框。通過設置這個標誌，就可以禁止那個對話框出現，並直接關閉進程
適用平台
Wnidows NT


SetProcessWorkingSetSize
VB聲明
Declare Function SetProcessWorkingSetSize Lib "kernel32" Alias "SetProcessWorkingSetSize" (ByVal hProcess As Long, ByVal dwMinimumWorkingSetSize As Long, ByVal dwMaximumWorkingSetSize As Long) As Long
說明
設置操作系統實際劃分給進程使用的內存容量
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hProcess | Long，指定一個進程的句柄
lpMinimumWorkingSetSize | Long，用於裝載最小進程容量的一個變量
lpMaximumWorkingSetSize | Long，用於裝載最大進程容量的一個變量
適用平台
Windows NT


ShellExecute
VB聲明
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
說明
查找與指定文件關聯在一起的程序的文件名
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hwnd | Long，指定一個窗口的句柄，有時候，windows程序有必要在創建自己的主窗口前顯示一個消息框
lpOperation | String，指定字串「open」來打開lpFlie文檔，或指定「Print」來列印它
lpFile | String，想用關聯程序列印或打開一個程序名或文件名
lpParameters | String，如lpszFlie是可執行文件，則這個字串包含傳遞給執行程序的參數
lpDirectory | String，想使用的完整路徑
nShowCmd | Long，定義了如何顯示啟動程序的常數值。參考ShowWindow函數的nCmdShow參數


SetThreadPriority
VB聲明
Declare Function SetThreadPriority Lib "kernel32" Alias "SetThreadPriority" (ByVal hThread As Long, ByVal nPriority As Long) As Long
說明
設定線程的優先級別
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hThread | Long，線程句柄
nPriority | Long，返回帶有THREAD_PRIORITY_???前綴的某個函數，它定義了線程的優級。
註解
線程的優先級同進程的優先級類組合在一起就決定了線程的實際優先級


TerminateProcess
VB聲明
Declare Function TerminateProcess Lib "kernel32" Alias "TerminateProcess" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
說明
結束一個進程
在VB裡使用
可以使用，但盡量不用
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hProcess | Long，指定要中斷的一個進程的句柄
uExitCode | Long，進程的一個退出代碼


WinExec
VB聲明
Declare Function WinExec Lib "kernel32" Alias "WinExec" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long
說明
運行指定的程序
返回值
Long，大於32表示成功，請參考FindExecutable函數
參數表
參數 | 類型及說明
lpCmdLine | String，包含要執行的命令行
nCmdShow | Long，定義了以怎樣的形式啟動程序的常數值。參考ShowWindow函數的nCmdShow參數
註解
請參考對CreateProcess函數的說明，瞭解在目錄中查找指定文件的順序


索引

同步函數 第一頁
DuplicateHandle | 在指出一個現有系統對像當前句柄的情況下，為那個對象創建一個新句柄。當前句柄可能為於一個不同的進程
GetHandleFormation | 獲取與一個系統對像句柄有關的信息
MsgWaitForMultipleObjects | 等候單個對象或一系列對像發出信號---標誌著規定的超時已經過去，或特定類型的消息已抵達線程的輸入隊列。如返回條件已經滿足，則立即返回


DuplicateHandle
VB聲明
Declare Function DuplicateHandle Lib "kernel32" Alias "DuplicateHandle" (ByVal hSourceProcessHandle As Long, ByVal hSourceHandle As Long, ByVal hTargetProcessHandle As Long, lpTargetHandle As Long, ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwOptions As Long) As Long
說明
在指出一個現有系統對像當前句柄的情況下，為那個對象創建一個新句柄。當前句柄可能為於一個不同的進程
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hSourceProcessHandle | Long，擁有源句柄的那個進程的句柄。
hSourceHandle | Long，指定對象的現有句柄。
hTargetProcessHandle | Long，即將擁有新句柄的一個進程句柄。
lpTargetHandle | Long，指定用於裝載新句柄的一個長整型變量
dwDesiredAccess | Long，新句柄要求的安全訪問級別。
bInheritHandle | Long，如新句柄可由hSourceProcessHandle的子進程繼承，則為TRUE
dwOptions | Long，下列常數的一個或兩個：
 | DUPLICATE_SAME_ACCESS：新句柄擁有與原始句柄相同的安全訪問特徵
 | DUPLICATE_CLOSE_SOURCE：原始句柄已經關閉。即使發生錯誤。它也要關閉
註解
在一個進程中，這個函數可根據位於不同進程內的現有句柄創建一個新句柄。可以從這兩個進程中發出對這個函數的調用。進程必須提供PROCESS_DUP_HANDLE訪問權限，否則函數執行不能成功。


GetHandleFormation
VB聲明
Declare Function GetHandleInformation Lib "kernel32" Alias "GetHandleInformation" (ByVal hObject As Long, lpdwFlags As Long) As Long
說明
獲取與一個系統對像句柄有關的信息
返回值
Long，非零表示成功，零表示失敗。會設置GetLastError
參數表
參數 | 類型及說明
hObject | Long，要測試的句柄
lpdwFlags | Long，設置了下述一個或多個常數的位標誌：
 | HANDLE_FLAG_INHERIT：對像可由一個子進程繼承
 | HANDLE_FLAG_PROTECT_FROM_CLOSE：句柄不可用CloseHandle函數關閉
適用平台
Windows NT


MsgWaitForMultipleObjects
VB聲明
Declare Function MsgWaitForMultipleObjects Lib "user32" Alias "MsgWaitForMultipleObjects" (ByVal nCount As Long, pHandles As Long, ByVal fWaitAll As Long, ByVal dwMilliseconds As Long, ByVal dwWakeMask As Long) As Long
說明
等候單個對象或一系列對像發出信號---標誌著規定的超時已經過去，或特定類型的消息已抵達線程的輸入隊列。如返回條件已經滿足，則立即返回
返回值
Long，如fWaitAll設為TRUE，則下述任何一個常數都標誌著成功：
WAIT_ABANDONED_0：所有對象都發出消息，而且其中一個或多個屬於互斥體（一但擁有它門的進程中止，就會發出信號）。
WAIT_TIMEOUT：對像保持未發信號的狀態，但規定的等待超時時間已經超過
WAIT_OBJECT_0：所有的對象都發出信號
WAIT_TO_COMPLETION（僅適用於WaitForSingleObjectEx），由於一個I/O完成操作已準備好執行，從而造成了函數的返回。
返回WAIT_FALIED表示函數執行失敗。會設置GetLastError
如fWaitAll設為FALSE，那返回結果與前面說的相似，只是可能還會返回相對於WAIT_ABANDONED_0或WAIT_OBJECT_0的一個正偏移量，指出哪個對象是被拋棄還是發出信號。
如果是由於dwWakeMask指定的，符合特殊標準的一條消息的到達而造成了函數的返回，則返回WAIT_OBJECT_0 + nCount
參數表
參數 | 類型及說明
nCount | Long，指定列表中的句柄數量
pHandles | Long，指定對像句柄組合中的第一個元素
fWaitAll | Long，如果為TRUE，表示除非對像同時發出信號，否則就等待下去。如果為FALSE，表示任何對像發出信號即可。
dwMilliseconds | Long，指定要等待的毫秒數。
dwWakeMask | Long，帶有QS_？？前綴的一個或多個常數，用於標識特定的消息類型。
註解
如果函數是由於對像發出信號而返回，這個函數還會得到一些額外的效果：
信號機：遞增信號機計數
互斥體：將互斥體的所有權限賦於發出調用的線程
自動重設事件：將事件發信狀態設為FALSE
自動重設可等待計時器：將計時器狀態設為FALSE


 函數功能：激活鍵盤佈局。該函數Windows NT和Windows 95中的實現有很大不同。本參考頁中首先給出了完整的Windows NT的實現，下來又給出了Windows 95版本的實現，以便大家更好地瞭解二者的區別。在Windows NT中ActivateKeyboadLayout函數激活一種不同的鍵盤佈局，同時在整個系統中而不僅僅是調用該函數的進程中將該鍵盤佈局設為活動的。

函數原型：HKL ActivateKeyboardLayout（ HKL hkl,UINT Flags）；

參數：

hkl：將被激活的鍵盤佈局的句柄。該佈局必須先調用LeadKeyboadLayout函數裝入，該參數必須是鍵盤分局的句柄，或是如下的值中的一種：

HKL_NEXT：在系統保持的，己裝入的佈局的循環鏈表中，選擇下一佈局。

HKL_PREV：在系統保持的，已裝入的佈局的循環鏈表中，選擇前一佈局。

Flags:定義鍵盤佈局如何被激活。該參數可取如下的一些值：

LFREORDER：若該位被設置，則已裝入的鍵盤佈局的循環鏈路表將被重新排序。若該位沒有設置，則循環鏈路表的順序不變。例如，若用戶激活了英語鍵盤佈局，同時依序裝入了法語、德語、西班牙語鍵盤佈局，然後通過設置KLF_REORDE位激活德語鍵盤佈局，則會產生如下順序：德語、英語、法語、西牙語鍵盤佈局。若激活德語鍵盤佈局時未設置KLF_REORDER位，則產生如下的鍵盤佈局的鍵盤佈局序列：德語、西班牙語、英語、法語。若裝入的鍵盤佈局少於三種，則該標誌域的值不起作用。

KLF_SETFORPROCESS：在Windows NT 5.0以上版本中使用。該參數用於整個進程中激活指定的鍵盤布，並向當前進程的所有線程發送WM_INPUTLANGCHANGE消息。

KLF_UNLOADPREVLOUS：卸載先前活動的鍵盤佈局。

返回值：如果函數調用成功，返回值為前一鍵盤佈局的句柄。否則，返回值為零。若要獲得更多多錯誤信息，可調用GetLastError函數。

備註：在任一時刻可以裝入多種鍵盤佈局，但一次僅能激活一種佈局。裝入多種鍵盤佈局使得可以快速地在多種佈局之間切換。Windows 95 ACtivateKeyboadLayout函數為當前線程設置輸入語言。該函數接受一個鍵盤佈局句柄，該句柄標識鍵盤的一個局部的和物理佈局。

速查：Windows NT:3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h;庫文件：user32.lib。


 函數功能：該函數依據所需客戶矩形大小，計算需要的窗口矩形的大小。計算出的窗口矩形隨後可以傳送給CreateWindowEx函數，用於創建一個客戶區所需大小的窗口。

函數原型：BOOL AdjustWindowRectEX（LPRECT lpRect，DWORD dwStyte；BOOL bMenu；DWORD dwExStyle）；

參數：

lpRect：指向RECT結構的指針，該結構包含所需客戶區域的左上角和右下角的坐標。函數返回時，該結構包含容納所需客戶區域的窗口的左上角和右下角的坐標。

dwStyle：指定將被計算尺寸的窗口的窗口風格。

bMenu：指示窗口是否有菜單。

dwExStyle：指定將被計算尺寸的窗口的擴展窗口風格。

返回值：如果函數成功，返回值為非零；如果函數失敗，返回值為零。若想獲得更多錯誤信息，請調用GetLastError函數。

備註：客戶矩形是指完全包含一個客戶區域的最小矩形；窗口矩形是指完全包含一個窗口的最小矩形，該窗口包含客戶區與非客戶區。

當一個菜單條下拉出兩行或更多行時，AdjustWindowRect函數不增加額外的空間。

速查：Windows NT：3.1以上版本；Windows：95以上版本；Windows CE：1.0以上版本；頭文件：winuser.h；庫文件：user32.lib。


 函數功能：該函數依據所需客戶矩形的大小，計算需要的窗日矩形的大小。計算出的窗口矩形隨後可以傳遞給CreateWindow函數，用於創建一個客戶區所需大小的窗口。

函數原型：BOOL AdjustWindowRect（LPRECT lpRect ，DWORD dwStyle，BOOL bMENU）；

參數：

lpRect：指向RECT結構的指針，該結構包含所需客戶區域的左上角和右下角的坐標。函數返回時，該結構容納所需客戶區域的窗口的左上角和右下角的坐標。

dwStyle：指定將被計算尺寸的窗口的窗口風格。

bMenu：指示窗口是否有菜單。

返回值：如果函數成功，返回值為非零；如果函數失敗，返回值為零。獲取錯誤信息，參看GetLastError。

備註：客戶矩形是指完全包含一個客戶區域的最小矩形；窗日矩形是指完全包含一個窗口的最小矩形，該窗口包含客戶區與非客戶區。

當一個菜單條下拉出兩行或更多行時，AdjustWindowRect函數不增加額外的空間。

速查：Windows NT：3.1以上版本：Windows：95以上版本：Windows CE：不支持；頭文件：winuser.h；庫文件：user32.lib。


 函數功能：該函數能在顯示與隱藏窗口時能產生特殊的效果。有兩種類型的動畫效果：滾動動畫和滑動動畫。

函數原型：BOOL AnimateWindow（HWND hWnd，DWORD dwTime，DWORD dwFlags）；

參數：

hWnd：指定產生動畫的窗口的句柄。

dwTime：指明動畫持續的時間（以微秒計），完成一個動畫的標準時間為200微秒。

dwFags：指定動畫類型。這個參數可以是一個或多個下列標誌的組合。標誌描述：

AW_SLIDE：使用滑動類型。缺省則為滾動動畫類型。當使用AW_CENTER標誌時，這個標誌就被忽略。

AW_ACTIVE：激活窗口。在使用了AW_HIDE標誌後不要使用這個標誌。

AW_BLEND：使用淡出效果。只有當hWnd為頂層窗口的時候才可以使用此標誌。

AW_HIDE：隱藏窗口，缺省則顯示窗口。

AW_CENTER：若使用了AW_HIDE標誌，則使窗口向內重疊；若未使用AW_HIDE標誌，則使窗口向外擴展。

AW_HOR_POSITIVE：自左向右顯示窗口。該標誌可以在滾動動畫和滑動動畫中使用。當使用AW_CENTER標誌時，該標誌將被忽略。

AW_VER_POSITIVE：自頂向下顯示窗口。該標誌可以在滾動動畫和滑動動畫中使用。當使用AW_CENTER標誌時，該標誌將被忽略。

AW_VER_NEGATIVE：自下向上顯示窗口。該標誌可以在滾動動畫和滑動動畫中使用。當使用AW_CENTER標誌時，該標誌將被忽略。

返回值：如果函數成功，返回值為非零；如果函數失敗，返回值為零。在下列情況下函數將失敗：

窗口使用了窗口邊界；窗口已經可見仍要顯示窗口；窗口已經隱藏仍要隱藏窗口。若想獲得更多錯誤信息，請調用GetLastError函數。

備註：可以將AW_HOR_POSITIVE或AW_HOR_NEGTVE與AW_VER_POSITVE或AW_VER_NEGATIVE組合來激活一個窗口。

可能需要在該窗口的窗口過程和它的子窗口的窗口過程中處理WM_PRINT或WM_PRINTCLIENT消息。對話框，控制，及共用控制已處理WM_PRINTCLIENT消息，缺省窗口過程也已處理WM_PRINT消息。

速查：WIDdOWS NT：5.0以上版本：Windows：98以上版本；Windows CE：不支持；頭文件：Winuser.h；庫文件：user32.lib。


 函數功能：該函數安排指定父窗口的各個最小化（圖標化）子窗口。

函數原型：UNIT ArrangelconicWindows（HWND hWnd）：

參數：

hWnd：父窗口句柄。

返回值：如果函數成功，返回值為一行圖標的高度。如果函數失敗，返回值為零。若想獲得更多錯誤信息，請調用 callGetLastError函數。

備註：一個應用程序可以通過使用ArrangelconicWindows安排在一個父窗口衛的它自身的最小化的子窗口。這個函數也可以安排桌面圖標。使用GetDesttopWindow函數獲得桌面窗口的句柄。

一個應用程序給多文本接口（MDI）客戶窗口發送WM_MDIICONARRANGE消息，使客戶窗口來安排自身的最小化MDI子窗口。

速查：Windows NT：3.1以上版本；Windows：95以上版本；Windows CE：不支持；頭文件：winuser.h；庫文件：user32.lib。


 函數功能：該函數返回一個可被UpdateResource函數使用的句柄以便在一個可執行文件中增加、刪除或替換資源。

函數原型：HANDLE BeginUpdateResource（LPCTSTR pFileName，BOOL bDeleteExistingResources）；

參數：

pFileName：指向一個表示結束的空字符串指針，它是用來指定用以更新資源的基於32-位可執行文件的文件名。應用程序必須獲得訪問這個文件的可寫權限，並且此文件在當前狀態下不能被執行。如果pFileName未被指定完全路徑，系統將在當前路徑下搜尋此文件。

bDeleteExistingResources：說明是否刪除PFileName參數指定的現有資源。如果這個參數為TRUE則現有的資源將被刪除，而更新可執行文件只包括由UpdateResource函數增加的資源。如果這個參數為FALSE，則更新的可執行文件包括現有的全部資源，除非通過UpdateResource特別說明被刪除或是替換的。

返回值：如果此函數運行成功，其值將通過使用UpdateResource和EndUpdateResource函數返回一個句柄。如果被指定的文件不是一個可執行文件，或者可執行文件已被裝載，或者文件不存在，或是文件不能被打開寫入時，則返回值為空。若想獲得更多的錯誤信息，請調用GetLastError函數。

速查:Windows 3.1以上。頭文件：winbase.h：庫文件：kernel32.lib，Unicode：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數將指定的窗口設置到Z序的頂部。如果窗口為頂層窗口，則該窗口被激活；如果窗口為了窗口，則相應的頂級父窗口被激活。

函數原型：B00L BringWindowToTop（HWND，hWnd）；

參數：

hWnd: 設置到Z序的頂部的窗口句柄。

返回值：如果函數成功，返回值為非零；如果函數失敗，返回值為零。若想獲得更多錯誤信息，請調用GetLastError函數。

備註：使用BringWindowToTop函數顯示出被其他窗口部分或全部遮蓋的窗口。

調用這個函數類似於調用SetWindowPos函數來改變窗口在Z序中的位置，但是BringWindowToTop函數並不能使一個窗口成為頂層窗口。

如果應用程序不在前台中而想設置在前台中，可以調用SetForegroundWindow函數。

速查：Windows NT：3.1以上版本；Windows：95以上版本；Windows CE:1.0以上版本；頭文件：winuser.h；庫文件：user32.lid。


 函數功能：該函數CallWindowProc將消息信息傳送給指定的窗口過程。

函數原型：LRESULT CallWindowProc（WNDPROC lpPrevWndFunc，HWND hWnd．UINT Msg，WPARAM wParam，LPARAMIParam）；

參數：

lpPrevWndFunc：指向前一個窗口過程的指針。如果該值是通過調用GetWindowLong函數，並將該函數中的nlndex參數設為GWL_WNDPROC或DWL_DLGPROC而得到的，那麼它實際上要麼是窗口或者對話框的地址，要麼就是代表該地址的句柄。

hWnd：指向接收消息的窗口過程的句柄。

Msg：指定消息類型。

wParam：指定其餘的、消息特定的信息。該參數的內容與Msg參數值有關。

IParam：指定其餘的、消息特定的信息。該參數的內容與Msg參數值有關。

返回值：返回值指定了消息處理結果，它與發送的消息有關。

備註：使用函數CallWindowsProc可進行窗口子分類。通常來說，同一類的所有窗口共享一個窗口過程。子類是一個窗口或者相同類的一套窗口，在其消息被傳送到該類的窗口過程之前，這些消息是由另一個窗口過程進行解釋和處理的。

SetWindowLoog函數通過改變與特定窗口相關的窗日過程，使系統調用新的窗口過程來創建子類，新的窗口過程替換了以前的窗口過程。應用程序必須通過調用CallWindowsProc來將新窗日過程沒有處理的任何消息傳送到以前的窗口過程中，這樣就允許應用程序創建一系列窗口過程。

如果定義了STRICT，那麼lpPrevWndFunc參數具有WNDPROC數據類型。WNDPROC類型說明如下：

LRESULT（CALLBACK• WNDPROC）（HWND， UINT WPARAM，LPARAM）

如果沒有定義STRICT，那麼lpPrevWndFunc參數具有FARPROC數據類型。FARPROC類型說明如下：int（FAR WINAPL•FARPROC）（）

在C語言中，FARPROC申明表示為一個沒有指定參數表的回調函數。然而在 C＋＋中；申明中的空參數表示該函數沒有參數。這種微妙的區別有可能引起代碼出錯。下面是一種解決辦法：#ifdef STRICT；WNDPROC MyWindowProcedure；#else；FARPROC MyindowProcedure；#endif IResult=CallWindowProc（MyWindowProcedure，…）

有關該函數的空參數表方面進一步的信息，清參考Bjarne Stroustrup編寫的C＋＋編程語言第2版。

對於Windows NT：函數CallWindowsProc function進行了Unicode至ANSf轉換處理。如果你直接調用該窗口過程，那麼無法利用該轉換。

速查：Windows NT：3.1以上版本；Windows：95以上版本；Windows CE：1.0以上版本；頭文件：winuser.h；庫文件：user32.lib：Unicode：在Windows NT環境中以Unicode和ANSI版本實現。


 函數功能：該掛鉤函數是一個應用程序或庫定義的回調函數。ChooseColor函數與此函數一起使用掛鉤函數貯存信息或通告，此信息和通告應用於Color公共對話框的缺省對話框函數。

LPCEHOOPROC類型定義了一個指向此回調函數的指針。CCHOOkProc是一個應用程序定義的函數名的位置佔有者。

函數原型：UINT CALLBACK CCHookProc（HWND hdlg，UINT uiMsg，WPARAM wParam，LPARAM IParam）；

參數：

hdlg：指向信息指定的Color對話框的句柄。

uiMag：標識存放的信息。

wParam：指定有關信息號的其他信息。精確意義根據UiMdsg參數的值來決定。

IParam：指定有關消息的其他信息。精確意義由uiMsg參數的值米決定。如果uiMsg多數表明WM_IMTDIALOG消息，IParam是一個指向含有當對話框創建時指定的值的CHOOSECOLOR結構的指針。

返回值；如果掛鉤函數返回零值，缺省對話框函數處理消息。如果掛鉤函數返回非零值，缺省對話框函數忽略消息。

備註當用ChooseColor函數創建一個Color對話框時，應用程序可以為對話框函數提供CCHookProc掛鉤函數來處理消息。應用傳送到對話創建函數中的CHOOSECOLOR結構可使掛鉤函數生效，也可指定IpfnHook成員中掛鉤函數的地址和指定Flags成員中CC_ENABIEHOOK標誌。缺省對話框函數把消息WM_INITDIALOG傳送到掛鉤函數之前先處理此消息。對於其他所有的消息，掛鉤函數首先存放消息。然後其返回值決定此缺省對話函數是處理消息或忽略消息。如果掛鉤函數處理WM_CTLCOLORDIG消息，那麼必須返回一個有效的刷子句柄以繪製對話框的背景。總之，如果掛鉤函數處理任何一種WM_CTLCOLOR消息，它必須返回一個有效的刷了句柄以刷指定的控制板的背景。

不要從掛鉤函數中調用EndDialog函數。相反地掛鉤函數能調用PostMessage函數來把帶有IDABORT值的WMCOMMAND消息傳送到對話框樞函數中。傳送LDABORT消息使對話框關閉並使對話框返回值為FALSE。如果要知道為什麼掛鉤函數關閉對話框，必須在掛鉤函數和應用程序之間提供自身聯繫機理。

可以對公共對話框的標準控制面板進行子分類。但是公共對話框函數也可以對控制面板子分類、正因如此，在掛鉤函數處理消息時必須對控制面板進行子分類。這就保證在對話框函數設置於分類函數之前，子分類函數存放了指定的控制消息。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：2.0及以上版本；頭文件：commdlg.h；庫文件：用戶自定義。


 函數功能：該掛鉤函數是一個應用程序定義的或庫定義的回調函數，此回調函數與ChooseFont函數一起使用。掛鉤函數接收用於Font公共對話框的缺省對話框函數的消息和通告。

LPCFHOOKPROC類型定義了一個指向這種回調函數的指針。CFHOOKProc是一個由應用程序定義的函數名的位置佔有者。

函數原型：UINT CALLBACK CFHookProc（HWND hdlg，UINT uiMsg，WPARAM wParam，LPARAM IParam）；

參數：

hdlg：指向消息所指的Font對話框窗口的句柄。

uiMsg：指定存放的消息。

wParam：指定有關消息的其他信息。精確的意義根據uiMsg參數的值來決定。

IParam：指定有關消息的其他信息。精確的意義根據uiMSg參數的值來決定。如果uiMsg參數表明WM_INITDIALOG消息，則IParam是一個指向CHOOSEFONT結構的指針，該結構含有創建公共對話框時指定的值。

返回值：如果掛鉤函數返回零值，缺省對話框函數處理消息。如果掛鉤函數返回一個非零值，缺省對話框函數忽略消息。

備註：用ChooseFont函數創建一個Font對話框時，可以為對話框函數提供掛鉤函數來處理消息。

為使掛鉤函數生效，要用傳送到對話創建函數的CHOOSEFONT結構，指定IpfnHook成員中掛鉤函數的地址和Flags成員中CF_ENABLEHOOK標誌。

缺省的對話框函數處理WM_INTDIALOG消息後，把它傳送給掛鉤函數。對於其他消息，掛鉤函數首先存放此消息。然後掛鉤函數的返回值決定缺省對話函數是否處理消息或忽略它。

如果掛鉤函數處理 WM_CTLCOLORDLG信息，它必須返回一個有效的刷子句柄，以刷對話的背景。

總之，如果掛鉤函數處理任何一個WM_CTLCOLOR消息，那麼必須返回一個有效刷子句柄，以繪製指定控制的背景不須從掛鉤函數調用EndDialog函數。相反，掛鉤函數能調用PostMessage函數，把帶有IDABORT值的一個WM_CDOMMAND信息傳送給對話框函數Posting IDABORT關閉對話框，使對話框函數退回FALSE值，若要瞭解為什麼掛鉤函數關閉對話框，必須提供掛鉤函數和應用程序之間的聯繫機理。

可以對公共對話框的標準控制面板進行子分類。但是公共對話框函數也可以對控制面板進行子分類。正因如此，必須在掛鉤函數WM_INTDIALDG處理消息時對控制面板子分類。這就保證對話框函數設置子分類函數之前，子分類函數接收指定的控制消息。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：commdlg.h；庫文件：用戶自定義。


 函數功能：該函數改變按鈕控制的選中狀態。

函數原型：BOOL CheckDlgButton（HWNDhDlg，int nlDButton,UINT uCheck）；

參數：

hDlg：指向含有該按鈕的對話框的句柄。

nlDButton：標識要修改的按鈕。

uCheck：給定該按鈕的選中狀態。該參數可取下列值，這些值的含義如下：

BST_CHECKED：設置按鈕狀態為己選中（checked）。

BST_INDETERMINATE：設置按鈕狀態變灰，表示不確定狀態。只有在該按鈕具有BS_3STATE或BS_AUTO3STATE樣式時才能使用該值。

BST_UNCHECKED：設置按鈕為未選中狀態（unchecked）。

返回值：如果函數執行成功，返回值非零；如果函數失敗，則返回值為零。若想獲取更多錯誤信息，請調用 GetLastError函數。

速查；Windows NT：3.1 及以上版本；WindowS：95及以上版本；Windows CE：不支持：頭文件：Winuser.h；庫文件：user32.lib。


 函數功能：該函數設置指定菜單項的校核標記屬性為選取或不選取。該函數已被函數SetMenultemlnfo取代。但若不需要SetMenultemlnfo的擴展特性，仍可使用CheckMenultem。

函數原型：DWORD CheckMenultem（HMENU hMenu，UINT ulDCheckltem，UINT uCheck）；

參數：

hMenu：有關菜單的句柄。

UlDCheckltem：指定要設置其選取標記屬性的菜單項。其含義由參數uCheck決定。

uCheck：指定控制參數uIDCheckltem的含義的標誌，並指定菜單項的選取標記屬性的狀態。此參數可為MF_BYCOMMAND或MF_BYPOSITON和MF_CHECKED或MF_UNCHECKED的組合。

MF_BYCOMMAND：表示參數uIDCheckltem給出了菜單項的標識符。若標誌MF_BYCOMMMAND和

MF_BYFOSITION都沒被指定，則MF_BYCOMMMAND為缺省值。

MF_CHECKED：設置選取標記屬性為選取。

MF_UNCHECKED：設置選取標記屬性為未選取。

返回值：返回值指定菜單項的前一狀態（MF_CHECKED或MF_UNCHECKED）。如果菜單項不存在，返回值是OXFFFFFFFF。

備註：萊單條裡的項不能有選取標記。

參數uIDCheckltem標識一個打開子菜單的菜單項或命令項。對打開子菜單的菜單項，參數uIDCheckltem必須指定菜單項的位置。對命令項，參數uIDCheckltem可指定其位置或標識符。


 函數功能：該函數校校一個指定的菜單項並使其成為一個圓按鈕項。同時不校核相關組裡的其他菜單項並清除這些項的國按鈕的類型標誌。

函數原型：BOOL CheckMenuRadioltem(HMEN hMENU，UINT idFirst，UINT idLast，UINT uFlags)；

參數：

hMenu：包含一組菜單項的菜單的句柄。

idFirst：菜單組裡第一個菜單項的標識符或位置。

idLast：菜單組裡最後一個菜單項的標識符或位置。

IdCheck：要選取的菜單項的標識符或位置。

uFlag：指定idFirst，idLast，idCheck含義的值。如果此參數為MF_BYCOMMAND,則其他參數指定菜單項標識符。如果此參數為MF_BYPOSITION，則其他參數指定菜單項位置。

返回值：如果函數調用成功，返回值非零。如果函數調用失敗，返回值為零。若想獲得更多的錯誤信息，請調用GetLastError函數。

備註：CheckMenuRadioltem設置了MFT_RADIOCHECK類型標誌，並為由idCheck指定的項設置 MFS_CHECKED狀態，同時，清除組裡所有其他項目的上述兩個標誌。被選取的項用項目目標表示，而不是用復選標記目標。要得到更多的關於菜單項類型和狀態標誌的信息，參看MENUITEMINFO結構。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件；winuser.h;輸入庫：user32.lib。


 函數功能：該函數給一組單選按鈕中的一個指定按鈕加上選中標誌，並且清除組中其他按鈕的選中標誌。

函數原型：BOOL CheckRadioButtoh（HWNDhDlg， intnlDFirstButton， intnlDLastBUtton， intnlDCheckButton）；

參數：

hDlg：指向包含單選按鈕的對話框的句柄。

nlDFirstButton：指定組中第1個單選按鈕的標識符。

nlDLastButton：指定組中最後一個單選按組的標識符。

nlDCheckButton：指出要選中的那個單選按鈕的標識符。

返回值：如果函數執行成功，返回值非零；如果失敗，則返回零。若想獲取更多錯誤信息，請調用GetLastError函數。

速查：Windows NT：3.1及以上版本；Windows：95及以廣版本；Windows CE：1.0及以上版本；頭文件：winuser.h；庫文件：user32.lib。


 函數功能：該函數確定屬於某一父窗口的哪一個子窗口（如果存在的話）包含一個指定的點。

函數原型：HWND ChildWindowFromaPoint（HWND hWndParent.POINT Point）：

Parent：父窗口句柄。

Point：指定一個POINT結構，該結構給定了被檢查的點的坐標。

返回值：返回值為包含該點的子窗口的句柄，即使該子窗口是隱藏的或被禁止的。如果該點在父窗口之外，則返回值為NULL。如果該點在父窗口內，但在任一子窗口外，則返回值為父窗口句柄。

備註：系統有一個與某一父窗口有聯繫的所有子窗口的內部列表。列表中的句柄順序依據這些子窗口的z序。如果有多於一個的子窗口包含該點，那麼系統返回在列表中包含該點的第一個窗口的句柄。

速查：Windows NT：3.1以上版本：Windows：95以上版本；Windows CE；1.0以上版本；頭文件：winuser.h；庫文件：user32.lib。


 函數功能：該函數確定屬於父窗口的哪一個子窗口（如果存在的話）包含著指定的點。該函數可以忽略不可見的、禁止的和透明的子窗口。

函數原型：HWND ChidWindowFromaPointEx（HWND hwndParent,POINT pt，UNIT uFlags）；

參數：

hWndParent:父窗口句柄。

pt：指定一個POINT結構，該結構定義了被檢查的點的坐標。

uFlags:指明忽略的子窗口的類型。該參數可以是下列參數的組合。

CWP_ALL：不忽略任一子窗口。CWP_SKIPINVISIBLE：忽略不可見的子窗口。

CWP_SKIPDISABLE:忽略禁止的子窗口。CWP_SKIPTRABSPARENT：忽略透明子窗口。

返回值：返回值為包含該點並且滿足由uFlags定義的規則的第一個子窗口的句柄。如果該點在父窗口內，但在任一滿足條件的子窗口外，則返回值為父窗口句柄。如果該點在父窗口之外或函數失敗，則返回值為NULL。

備註：系統有一個與某一父窗口有聯繫的所有子窗口的內部列表。列表中的句柄順序依據這些子窗口的Z序。如果有多於一個的子窗口包含該點，那麼系統返回在列表中包含該點並且滿足由uFlags定義的規則的第一個窗口的句柄。

速查：WindowS NT：4.0以上版本；Windows：95以上版本；Windows CE:不支持；頭文件:Winuser.h；庫文件：user32.lib。


 函數功能：該函數創建一個能使用戶從中選擇顏色的通用顏色對話框。

函數原型：BOOL ChooseColor（LPCHOOSECOLOR IpCC）；

參數：

lpCC：指向一個包括初始化對話框信息的CHOOSECOLOR結構。當ChooseColor函數返回時，此結構含有有關用戶顏色選擇的信息。

返回值：如果用戶點擊對話框中的OK按鈕，返回值為非零值。CHOOSECOLOR結構中的rgbResult成員含有用戶選擇的顏色的RGB顏色值。如果用戶取消或關閉Color對話框或錯誤出現，返回值為零。若想獲得更多錯誤信息，請調用CommDlgExtondedError函數，此函數的返回值為下列中的一個：

CDERR_FINDRESFAILURE；CDERR_MEMLOCKFAILURE；CDERR_INITIALIZATION；

CDERR_NOHINSTANCE；CDERR_LOCKRESFAILURE；CDERR_NOHOOK

CDERR_LOADRESFAILURE；CDERR_NOTEMPLATE；CDERR_LOADSTRFAlLURE；

CDERR_STRUCTSIZE；CDERR_MEMALLOCFAILURE

備註Color對話框不支持彩色調色板，對話框提供的顏色的選擇僅限於系統顏色和這些顏色的混合值，可以為對話框提供一個CCHOOKProc程序，此掛鉤程序能處理發送給對話框的信息。通過建立CHOOSECOLOR結構中Flags成員的CC_ENABLEHOOK標誌和指定IpfnHook成員中掛鉤程序的地址，可使掛鉤程序生效。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：2.0及以上版本；頭文件：commdlg.h；庫文件：commdlg32.lib；Unicode：在Windows NT環境中實現為Unicode和ANSI兩個版本。


 函數功能：該函數創建一個使用戶選擇邏輯字體屬性的對話框，這些屬性包括字體名稱、字體風格（如粗體、斜體或正常體）、字號、效果（如強調線，下劃線或字體顏色）和手寫體（或字符集）。

函數原型：BOOL ChooseFont（LPCHOOSEFONT Ipcf）；

參數：

Ipcf：指向一個含有初始化對話框信息的CHOOSEFONT結構。當返回ChooseFont函數時，此結構含有用戶對字體選擇的信息。

返回值：如果用戶點擊對話框的OK按鈕，返回值為非零值，CHOOSEFONT結構中的成員表明用戶的選擇。如果用戶取消或關閉Font對話框或出現錯誤信息，返回值為零。若想獲得更多錯誤信息。請調用CommDlgExtendedError函數，其返回值如下：

CDERR_FINDRESFAILURE；CDERR_NOHINSTANCE；CDERR_INITIALIZATION；CDERR_NOHOOK

CDERR_LOCKRESFAILURE；CDERR_NOTEMPLATE；CDERR_LOADRESFAILURE；

CDERR_STRUCTSIZE；CDERR_LOADSTRFAILURE；CDERR_MAXLESSTHANMIN

CDERR_MEMALLOCFAILURE；CDERR_NOFONTS；CDERR_MEMLOCKFAILURE

備註：可以為Font對話框提供一個CFHOOKProc掛鉤程序。此掛鉤程序能夠處理發送給對話框的信息。

通過建立CHOOSEFONT結構中Flags成員的CE ENABLEHOOK標誌和指定IPfn Hook成員中掛鉤程序的地址可以使掛鉤程序有效。

掛鉤程序可以把信息WM_CHOOSEFONT_GETLOGLONT，WM_CHOOSEFONT_SETFLAGS和

WM_CHOOSEFONT_SETLOGFONT消息發送給對話框以便得到和創建當前值和對話框的圖標。

速查：Windows NT：3.1及以一上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：Commdlg.h；庫文件：comdlg32.lib；Unicode：在Windows NT環境中實現為Unicode和ANSI兩個版本。


 函數功能：該函數返回一個對話框錯誤代碼，此代碼顯示出在執行下列對話框函數時要出現的最近的錯誤：ChooseColor，GetOpenFileName，ChooseFont，GetSaveFileName，FindText，PrintDlg，ReplaceText，PageSetpDlg。

函數原型：DWORD CommDlgExtendedError（VOID）

參數：無。

返回值：如果最近一次對話框函數調用成功，返回值不確定，如果對話框函數因為用戶關閉或取消對話框而返回FALSE，則返回值為零。否則返回值是非零錯誤代碼。有關更多的信息，參見下列說明部分。

備註：CommDlgExtendedError函數可以返回公共對話框函數中的一般的錯誤代碼。

另外，也返回某一具體公共對話框的錯誤代碼。由CommDlgExtendedError返回的錯誤代碼在CDERR.H文件裡定義：

下面是CommDlgExtendedError的返回錯誤代碼值。

CDERR_DIALOGFAILURE：對話框不能創建。DialogBox函數對對話框函數的調用失敗，例如如果公共對話框的調用指定一個無效的窗口句柄，則此種錯誤產生。

CDERR_FINDRESFAILURE：公共對話框函數沒能找到指定資源。

CDERR_INITIALIZATION：公共對話框函數在初始化過程中失敗。當沒有足夠內存時此錯誤出現。

CDERR_LOADRESFAILURE：公共對話框函數沒能調出指定的資源。

CDERR_LOADSTRFAILURE：公共對話框函數沒能調出指定的串。

CDERR_LOCKRESFAILURE：公共對話框函數沒能銷定指定的資源。

CDERR_EMAILCOLFAILURE；公共對話框函數不能為內部結構分配內存。

CDERR_NOHINSTANCE：在對應的公共對話框初始化結構Flags成員中設置ENABLETEMPLATE標誌，但是在提供相應的事例句柄時出錯。

CDERR_NOHOOK：在對應的公共對話框初始化結構Flags成員中設置ENABLEHOOK標誌，但是在提供相應的掛鉤程序指針時出錯。

CDERR_NOTEMPLATE：在對應的公共對話框初始化結構Flag成員中設置ENABLETEMPLATE標誌，但是在提供相應的模板時出錯。

CDERR_REGISTERMSGFAIL：當RegisterWindowMessage函數被公共對話框函數調用時，該函數返回錯誤代碼。

CDERR_STRUCTSIZE：對應的公共對話框初始化結構舊IStructSize成無效成員。

下列為Print Dlg函數的返回值。

PDERR_CREATEICFAILURE：當PrintDlg函數想創建一個信息表時出錯。

PDERR_DEFAIKTDFFERENT：利用在DEVNAMES結構中wDefault成員指定的DN_DEFAULTPRN標誌，可以調用PrintDlg函數。但是被另外一個結構成員描述的打印機與當前缺省的打印機不匹配。（此錯誤發生在儲存DEVNAMES結構和用戶利用控制面板改變缺省打印機時）。要使用DEVNAMES結構所描述的缺省打印機，必須清空DN_DEFAULTPRN標誌並且要再一次調用PrintDlg。要使用缺省打印機，必須用NULL取代DEVNAMES結構俐DEVMODE結構，如果此結構存在的話），並且要再一次調用PrintDlg函數。

PDERR_DNDMMISMATCH：OEVMOOE和DEVNAMFS結構中的數據描述了兩種不同的打印機。

PDERR_GETDEVMODEFAIL；打印機驅動程序不能初始化一個DEVMODE結構（這種錯誤代碼只用於Windows 3.0及以上版本的打印機驅動程序）。

PDERR_INITFAILURE：PrintDlg函數不能初始化，並且沒有更多的錯誤代碼來描述此錯誤。

PDERR_LOADDRVFAILURE：PrinDlg函數不能為指定的打印機裝備設備驅動器。

POERR_NODEFAULTPRN：不存在缺省打印機。

POERR_NODEVKES：未發現打印機驅動程序。

PDERR_PARAEFAILURE：PrintDlg函數在分析WIN.INI文件中的[devces]部分的字符串時出錯。

PDERR_PRINTERNOTFOUND；WIN.INI文件的[device]部分不包含所請求打印機的入口

PDERR_RETDEFFAILURE_PD：RETURNDEFAULT標誌被指定在PRINTDLG結構的Flags成員中。但hDevMode或hDevNames成員不是NULL。

PDERR_SETUPFAILURE：PrintDlg函數在裝載所需要的資源時出錯。

下面是ChooseFont函數的返回值。

CFERR_MAXLESSTHANMIN：CHOOSEFONT結構中的nSizeMax成員所給定的大小小於nSizeMin成員給定的大小。

CFERR_NOFONTS：不存在字體。

下面是GetOpenFileName和GetSaveFileName函數的返回值。

FNERR_BUFFERTOOSMALL：由OPENFILENAME結構的lpstrFile成員指向的緩衝區對由用戶指定的文件名來說太小。前兩種IpstrFile緩衝區的字節含有一個指定大小的整型值。用來存放全文件名。

FNERR_INVAIDFILENAME：文件名無效。

FNERR_SUBASSFAILIIRE：由於沒有足夠內存，在對列表框分類時出錯。

下面是FindText和ReplaceText函數的返回值。

FRERR_BUFFERLENGTHZERO：結構FINDREPLACE中的一個成員指向一個無效的緩衝區。

在Windows CE中Windows CE支持另外的四種返回值，如下：

CDERR_REGISTRYFAILURE 公共對話框函數無法讀註冊表。

下面的一些返回值只適用於PrintDlg函數。

PDERR_NOPORTS：沒有註冊的端口PDERR_NOPRINTERS：沒有註冊的打印機

PDERR_CREATEDCFAILURE：CreateDC調用失敗

Windows CE不支持CDERR_LOADSTRFAILURE、CDERR_MEMLOCKFAILURE或CDERR_REGISTERMSGFAIL返回值。Windows CE也不支持任何PDERR_錯誤值。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本：頭文件：commdlg.h；庫文件：comdlg32.lib。


 函數功能：拷貝加速鍵表。拷貝加速鍵表函數拷貝指定的加速鍵表。此函數用於獲得與一加速鍵表句柄相對應的加速鍵表數據，或用於確定加速鍵表數據的大小。

函數原型：int CopyAcceleratorTable（HACCEL hAccelSrc,LPACCEL IpAcceIDst,int cAccelEntries）；

參數：

hAccelSrc:欲拷貝的加速鍵表的句柄。

IpAccelDst:指向ACCEL結構數組的指針，該結構數組中存在著將要拷貝的加速鍵表信息。

cAccelEntries:指定由IpAcceIDst參數指向的欲拷貝到緩衝區的ACCEL結構的個數。

返回值：如果IpAccelDst為空，則返回值給出初始加速鍵表入口的個數。否則，給出己拷貝的加速鍵表的入口個數。

速查：WindOWS NT：3.1及以上版本：Windows：95及以上版本；Windows CE：不支持；頭文件：Winuser.h;庫文件：user32.lib；Unicode：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數複製一光標。

函數原型：HCURSOR CopyCursor（HCURSOR pcur）；

參數：

pcur：被複製光標的句柄

返回值；如果成功，返回值是複製光標的句柄；如果失敗，返回值為NULL（空）。若想獲得更多錯誤信息，請調用GetLastError函數。

備註；CopyCursor函數能使一個應用程序或一個動態連接庫（OLL）得到一個屬於另一模塊的光標形狀的句柄。如果另外一個模塊被釋放，則該應用程序仍然可以使用該光標形狀。在關閉之前，一個應用程序必須調用DestroyCursor函數來釋放任何與該光標有關的系統資源。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；庫文件：user32.lib


 函數功能：該函數從另外的模塊向當前模塊複製指定的圖標。

函數原型：HICON Copylcon（HICON hlcon）；

參數：

hlcom:被複製圖標的句柄。

返回值：如果函數成功，返回值是圖標副本的句柄；如果函數失效，返回值是NULL。想獲得更多的錯誤信息，請調用GetLastError函數。

備註：COPylcoon函數使應用程序或動態鏈接庫（DLL）能獲得另一個模塊自己擁有圖標的句柄，如果這個模塊被釋放，應用程序圖標將仍然能使用這個圖標。

速查：Windows NT：3.1及以上版本；Windows:95及以上版本；Windows CE：不支持；頭文件：winuser.h;庫文件：user32.lib。


 函數功能：該函數創建一個重疊式窗口、彈出式窗口或子窗口。它指定窗口類，窗口標題，窗口風格，以及窗口的初始位置及大小（可選的）。該函數也指定該窗口的父窗口或所屬窗口（如果存在的話），及窗口的菜單。若要使用除CreateWindow函數支持的風格外的擴展風格，則使用CreateWindowEx函數代替CreateWindow函數。

函數原型：HWND CreateWindow(LPCTSTR lpClassName,LPCTSTR lpWindowName,DWORD dwStyle,int x,int y,int nWidth，int nHeight，HWND hWndParent,HMENU hMenu，HANDLE hlnstance，LPVOID lpParam）；

參數：

lpClassName:指向一個空結束的字符串或整型數atom。如果該參數是一個整型量，它是由此前調用theGlobalAddAtom函數產生的全局量。這個小於0xC000的16位數必須是lpClassName參數字的低16位，該參數的高位必須是0。

如果lpClassName是一個字符串，它指定了窗口的類名。這個類名可以是任何用函數RegisterClassEx註冊的類名，或是任何預定義的控制類名。請看說明部分的列表。

LPWindowName:指向一個指定窗口名的空結束的字符串指針。

如果窗口風格指定了標題條，由lpWindowName指向的窗口標題將顯示在標題條上。當使用Createwindow函數來創建控制例如按鈕，選擇框和靜態控制時，可使用lpWindowName來指定控制文本。

dwStyle：指定創建窗口的風格。該參數可以是下列窗口風格的組合再加上說明部分的控制風格。風格意義：

WS_BORDER：創建一個單邊框的窗口。

WS_CAPTION：創建一個有標題框的窗口（包括WS_BODER風格）。

WS_CHIlD：創建一個子窗口。這個風格不能與WS_POPVP風格合用。

WS_CHLDWINDOW：與WS_CHILD相同。

WS_CLIPCHILDREN:當在父窗口內繪圖時，排除子窗口區域。在創建父窗口時使用這個風格。

WS_CLlPBLINGS；排除子窗口之間的相對區域，也就是，當一個特定的窗口接收到WM_PAINT消息時，WS_CLIPSIBLINGS 風格將所有層疊窗口排除在繪圖之外，只重繪指定的子窗口。如果未指定WS_CLIPSIBLINGS風格，並且子窗口是層疊的，則在重繪子窗口的客戶區時，就會重繪鄰近的子窗口。

WS_DISABLED:創建一個初始狀態為禁止的子窗口。一個禁止狀態的窗日不能接受來自用戶的輸人信息。

WS_DLGFRAME:創建一個帶對話框邊框風格的窗口。這種風格的窗口不能帶標題條。

WS_GROUP:指定一組控制的第一個控制。這個控制組由第一個控制和隨後定義的控制組成，自第二個控制開始每個控制，具有WS_GROUP風格，每個組的第一個控制帶有WS_TABSTOP風格，從而使用戶可以在組間移動。用戶隨後可以使用光標在組內的控制間改變鍵盤焦點。

WS_HSCROLL：創建一個有水平滾動條的窗口。

WS_ICONIC：創建一個初始狀態為最小化狀態的窗口。與WS_MINIMIZE風格相同。

WS_MAXIMIZE：創建一個具有最大化按鈕的窗口。該風格不能與WS_EX_CONTEXTHELP風格同時出現，同時必須指定WS_SYSMENU風格。

WS_OVERLAPPED:產生一個層疊的窗口。一個層疊的窗口有一個標題條和一個邊框。與WS_TILED風格相同。

WS_OVERtAPPEDWINDOW：創建一個具有WS_OVERLAPPED，WS_CAPTION，WS_SYSMENU WS_THICKFRAME，WS_MINIMIZEBOX，WS_MAXMIZEBOX風格的層疊窗口，與WS_TILEDWINDOW風格相同。

WS_POPUP；創建一個彈出式窗口。該風格不能與WS_CHLD風格同時使用。

WS_POPUWINDOW：創建一個具有WS_BORDER，WS_POPUP,WS_SYSMENU風格的窗口，WS_CAPTION和WS_POPUPWINDOW必須同時設定才能使窗口某單可見。

WS_SIZEBOX：創建一個可調邊框的窗口，與WS_THICKFRAME風格相同。

WS_SYSMENU：創建一個在標題條上帶有窗口菜單的窗口，必須同時設定WS_CAPTION風格。

WS_TABSTOP：創建一個控制，這個控制在用戶按下Tab鍵時可以獲得鍵盤焦點。按下Tab鍵後使鍵盤焦點轉移到下一具有WS_TABSTOP風格的控制。

WS_THICKFRAME：創建一個具有可調邊框的窗口，與WS_SIZEBOX風格相同。

WS_TILED：產生一個層疊的窗口。一個層疊的窗口有一個標題和一個邊框。與WS_OVERLAPPED風格相同。

WS_TILEDWINDOW:創建一個具有WS_OVERLAPPED，WS_CAPTION，WS_SYSMENU MS_THICKFRAME．

WS_MINIMIZEBOX，WS_MAXMIZEBOX風格的層疊窗口。與WS_OVERLAPPEDWINDOW風格相同。

WS_VISIBLE：創建一個初始狀態為可見的窗口。WS_VSCROLL：創建一個有垂直滾動條的窗口。

X：指定窗口的初始水平位置。對一個層疊或彈出式窗口，X參數是屏幕坐標系的窗口的左上角的初始X坐標。對於子富口，x是子窗口左上角相對父窗口客戶區左上角的初始X坐標。如果該參數被設為CW_UCEDEFAULT則系統為窗口選擇缺省的左上角坐標並忽略Y參數。CW_USEDEFAULT只對層疊窗口有效，如果為彈出式窗口或子窗口設定，則X和y參數被設為零。

Y：指定窗口的初始垂直位置。對一個層疊或彈出式窗日，y參數是屏幕坐標系的窗口的左上角的初始y坐標。對於子窗口，y是子窗口左上角相對父窗口客戶區左上角的初始y坐標。對於列表框，y是列表框客戶區左上角相對父窗口客戶區左上角的初始y坐標。如果層疊窗口是使用WS_VISIBLE風格位創建的並且X參數被設為CW_USEDEFAULT，則系統將忽略y參數。

nWidth:以設備單元指明窗口的寬度。對於層疊窗口，nWidth或是屏幕坐標的窗口寬度或是CW_USEDEFAULT。若nWidth是CW_USEDEFAULT，則系統為窗口選擇一個缺省的高度和寬度：缺省寬度為從初始X坐標開始到屏幕的右邊界，缺省高度為從初始X坐標開始到目標區域的頂部。CW_USEDFEAULT只參層疊窗口有效；如果為彈出式窗口和子窗口設定CW_USEDEFAULT標誌則nWidth和nHeight被設為零。

nHelght:以設備單元指明窗口的高度。對於層疊窗口，nHeight是屏幕坐標的窗口寬度。若nWidth被設為CW_USEDEFAULT，則系統忽略nHeight參數。

hWndParent：指向被創建窗口的父窗口或所有者窗口的旬柄。若要創建一個子窗口或一個被屬窗口，需提供一個有效的窗口句柄。這個參數對彈出式窗日是可選的。Windows NT 5.0；創建一個消息窗口，可以提供HWND_MESSAGE或提供一個己存在的消息窗口的句柄。

hMenu：菜單句柄，或依據窗口風格指明一個子窗口標識。對於層疊或彈出式窗口，hMenu指定窗口使用的菜單：如果使用了菜單類，則hMenu可以為NULL。對於子窗口，hMenu指定了該子窗口標識（一個整型量），一個對話框使用這個整型值將事件通知父類。應用程序確定子窗口標識，這個值對於相同父窗口的所有子窗口必須是唯一的。

hlnstance：與窗口相關聯的模塊事例的句柄。

lpParam:指向一個值的指針，該值傳遞給窗口 WM_CREATE消息。該值通過在IParam參數中的CREATESTRUCT結構傳遞。如果應用程序調用CreateWindow創建一個MDI客戶窗口，則lpParam必須指向一個CLIENTCREATESTRUCT結構。

返回值：如果函數成功，返回值為新窗口的句柄：如果函數失敗，返回值為NULL。若想獲得更多錯誤信息，請調用GetLastError函數。

備註：在返回前，CreateWindow給窗口過程發送一個WM_CREATE消息。對於層疊，彈出式和子窗口，CreateWindow給窗口發送WM_CREATE，WM_GETMINMAXINFO和WM_NCCREATE消息。消息WM_CREATE的IParam參數包含一個指向CREATESTRUCT結構的指針。如果指定了WS_VISIBLE風格，CreateWindow向窗口發送所有需要激活和顯示窗口的消息。

獲取有關任務條是否為創建的窗口顯示一個按鈕的控制信息，參看Taskbar按鈕的Visbility。

以下預定義的控制類可以在lpClassName參數中指定。注意在dwStyle參數中可以使用的相應的控制風格。

BUTTON按鈕按鈕是一個小矩形子窗口，用戶可以點擊來打開或關閉。按鈕控制可以單獨使用或包含在組中使用，可以為控制寫標籤或不寫標籤。當用戶點擊按鈕控制時按鈕的外觀有明顯的改變。請參看Button。查看dwStyle參數中指定的按鈕風格表請參考Button Style。

COMBOBOX組合框由一個列表框和一個類似於編輯控制的選擇域組成。在使用這個風格控制時，應用程序或者使列表框一直顯示或者是作成一個下拉列表。如果列表框可見，則在編輯域中輸入字符將使列表框中與字符一致的第一個域高亮。反之，在列表框中選擇的項將顯示在編輯域中。請參看Combo Boxes。

查看dwStyle參數中指定的組合框風格表請參考Combo Boxes Style。

EDIT編輯框一個小的矩形子窗口用戶可以使用鍵盤向其中輸入文本。用戶可以通過點擊或按Tab鍵來選中編輯框控制並且使控制獲得焦點。當編輯框中顯示一個閃爍的插入記號時，用戶可以輸入文本。使用鼠標移動光標，選擇被替換的字符或設置插入字符的位置或使用回退鍵刪除字符。請參看Edit。controls。

查看dwStyle參數中指定的編輯框風格的表格請參考Edit Control Style。

LISTBOX列表框字符串的列表。當應用程序必須顯示名稱的列表，例如文件名列表等，使用戶可以從中選擇時就可指定列表框。用戶可以通過單擊來選擇名稱。選擇時，被選擇名高亮，同時傳遞給父窗口一個通知消息。請參看LiSt Box Style。查看dwStyle參數中指定的列表風格表請參考List BOX Control Style。

MDICLIENT MDI客戶設計出MDI客戶窗口。窗口接收控制MDI應用程序子窗口的消息。建議使用兩種控制風格位：WS_CLIPCHILDREN和WS_CHILD。指定了WS_HSCROLL和WS_VSCROLL風格的MDI客戶窗口允許用戶將MDI子窗口滑動進入視窗。請參看MDI。

RiChEdit設計一個Rich Editl.0版的控制。該控制使用戶可以以字符和段落格式測覽和編輯文本，並且可以包含嵌入的COM對象。請參看Rich Edit Controls。查看dwStyle參數中指定的RichEdit風格表請參考LiSt Box Control Style。

RICHEDIT CLASS設計一個Rich Edik2.0版的控制。該控制使用戶可以以字符和段落格式測覽和編輯文本，並且可以包含嵌入的COM對象。請參看RichEditControls。查看dwStyle參數中指定的RichEdit風格表請參考RichEditControIStyle。

SCROLLBAR 滾動條設計的一個包含著一個滾動盒和兩端有方向箭頭的矩形。只要用戶點擊了控制，滾動條就給父窗口發送一個通知消息。如有必要，父窗口負責更新滾動條的位置。請參看ScrollBars。查看dwStyle參數中指定的滾動條風格表請參考Scroll Bars Style。

STATIC一個簡單的靜態文本域，文本盒或矩形用於給控制加標籤，組合控制或將控制與其他控制分開。

靜態控制不提供輸入和也不提供輸出。請參看Static Control Styles。查看dwStyle參數中指定的靜態文本風格表請參考Scroll Bars Style。

Windows95：系統可以支持最大16,364個窗口句柄。

備註：如果在鏈接應用程序時指明是Windows 4.x版本，除非應用程序的窗口有窗口某單，否則窗口控制沒有標題控制。對Windows3.x版本沒有這種要求。

Windows CE：CreateWindow是以「宏」方式完成的。它被定義為CreateWindowEX，並且dwExStyle參數被置為長整數0。不支持菜單條控制，除非被聲明為子窗口標誌否則hMenu參數必須為NULL。不支持MDICLIENT窗口類。dwStyle參數可以是對話框（Dialogue Box），窗口（Windows），控制（Controls）文件中的窗口風格和控制風格的組合。

下列dwStyle標誌在窗口中不支持：

WS_CHILDWINDOW WS_ICONC；WS_MAXMIZE WS_MAXIMIZEBOX；WS_MINIMIZE WS_MINIMIZEBOX；

WS_OVERLAPPEDWINDOW WS_POPUPWINDOW；WS_SIZEBOXWS_THICKFRAME WS_TILED WS_TILEDWINDOW

下列dwStyle標誌在控制和對話框中不支持：

不支持的按鈕風格和靜態控制風格：

BS_LEFTTEXT SS_BLACKFRAME；BS_MULTILINE SS_GRAYFRAME BS_TEXT SS_METAPICT；BS_USERBUTTON SS_SIMPLE

不支持組合框SS_WHITERECT風格。

CBS_OWNERDRAWFIXED SS_BLACKRECT；CBS_OWNWEDRAWVARIABLE SS_GRAYRECT； CBS_SIMPLE8R舊HTrIMAGE

不支持列表框控制SS_WHITEFRAME風格。

LBS_NODATA

不支持的對話框風格：

LBS_OWNERDRAWFIXED DS_ABSALIGN； LBS_OWNERDRAWVARIABLE DS_CENTERMOUSE； LBS_STANDARD DS_CONTEXTHELP

不支持滾動條的 DS_FIXEDSYS風格

SBS_BOTTOMALIGN DS_NOFAILCREATE；SBS_RIGHTALIGN DS_NOIDLEMSG；

SBS_SlZEBOXBOTT0MRIHTALIGN DS_SYSMODAL；SBS_SIZEGRIP

可使用BS_OWNERDRAW風格來代替BS_USERBUTTON風格。

可使用SS_LEFT或SS_LEFTNOWORDWRAP風格來代替靜態控制的SS_SIMPLE風格。

不支持MDICLIENT窗口類。

所有窗口都隱含WS_CLIPSIBLINGS和 WS_CLIPCHILDREN風格。

Windows CE1.0版除對話框外不支持被屬窗口。如果hwndParent參數不為NULL，則窗口隱含給出WS_CHILD風格。Windows CE1.0不支持菜單條。

速查： Windows NT：3.1以上版本；Windows：95以上版本；Windows CE：1.0以上版本；頭文件：winuser.h；庫文件：user32.lib； Unicode：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數從ICONINFO結構創建目標或光標。

函數原型：HICON Createlconlndirect（PICONINFO）piconirfo）；

參數：

piconinfo:函數用以創建圖標或光標的ICONINFO結構指針。

返回值：如果函數成功，返回值是所創建圖標或光標的句柄。如果函數失效，返回值是NULL。想獲得更多的錯誤信息；請調用GetLastError函數。

備註：系統在創建圖標或光標之前複製ICONINFO結構中的位圖。因為系統可能在設備上下文中臨時選用該位圖，ICONINFO結構的hbmMask和hbmColor成員不要被選入設備上下文。應用程序必須繼續管理原始位圖，不再需要時，刪除它們。當你完成使用圖標，用Destroylcon函數清除它。Windows CE：圖標成員不支持光標，當用該成員時，總是將ICONINFO結構的flcon域設為真值。當使用目標光標成員時，你可使用Createlconlndirect函數創建圖標或單色光標。WindowsCE不支援彩色光標。

速查：Wingows NT：3.1及以上版本;Windows：95及以上版本；Windows CE:1.0及以上版本；頭文件：winuser.h;庫文件：user32.lib。


 函數功能：創建加速鍵表。該函數創建一個加速鍵表。

函數原型：HACCEL CreateAcceleratorTable（LPACCEL lpaccl，int cEntries）；

參數：

Ipaccl:指向描述加速鍵表的ACCEL結構數組的指針。

cEntires:指定數組中ACCEL結構的個數。

返回值：如果函數調用成功，則返回值為所創建的加速鍵表的句柄；否則，返回值為空。若想獲得更多的錯誤信息，請調用GetLastError。

備註：關閉應用程序之前，必須調用DestroyAcceeleratorTable函數撤消所有由CreatedAccelerstorTable函數創建的加速鍵表。

速查：Windows NT：3.1u及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本：頭文件：winuser.h;庫文件：USer32.lib; Unicode:在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：CreateDialog宏從一個對話框模板資源創建一個無模式的對話框，CreateDiaog宏使用CreateDialogParam函數。

函數原型：HWND CreateDialog（HINSTANCE hlnstance，LPCTSTR lpTemplate，HWND hWndParent，DLGPROC IpDialogFunc）；

參數：

hlnstance：標識模塊事例，該模塊的可執行文件含有對話框模板。

pTemplate: 標識對話框模板，此參數或是指向一個以結尾的字符串指針，該字符串指定對話框模板名，或是指定對話框模板的資源標識符的一個整型值。如果此參數指定了一個資源標識符，則它的高位字一定為零，且低位字一定含有標識符，一定用MAKEINTRESOURCE宏來創建此值。

hWndParent: 標識擁有對話框的窗口。

lpDialogFunc: 指向對話框應用程序的指針。有關更多的對話框應用程序的指針，參見DialogProc。

返回值：如果函數調用成功，則返回值為指向對話框的句柄；如果函數調用失敗，則返回值為NULL。若想獲得更多的錯誤信息，可調用GetLastError函數。

備註： CreateDialog函數用CreateWindowEx函數來創建對話框。然後CreateDialog函數把一個WM_INITDIALOG消息（如果模板指定DS_SETFONT類型，則加上一個WM_SETFONT消息）傳送到對話框應用程序。如果模板指定WS_VISIBLE風格，則函數顯示對話框，最後CreateDlalog返回指向對話框的窗口句柄。CreateDialog函數返回之後，應用程序通過Showwindow函數顯示對話框（如果還沒有顯示）。應用程序通過利用DestroyWindow函數來清除對話框。Windows 95和以後版本：系統每個對話框模板可以支持最多達 255個控制。如果要把多於255個控制放入對話框中，必須在WM_INITDIALOG消息處理器中創建控制，而不是把它們放入模板中。Windows CE：IpTempIate參數指向的對話框模板中，DIGTEMPLATE結構並不支持所有類型。

速查:Windows NT：3.1及以上版本:Windows：95及以上版本：Windows CE：1.0及以上版本：頭文件：Winuser.h；庫文件：user32.lib; Unicode: Unicode：在 Windows NT上實現為 Unicode和ANSI兩種版本。


 函數功能：該宏在內存中從對話框模板上創建一個無模式對話框。此宏使用CreateDialoglndirectparam 函數。

函數原型：HWND CreateDialoglndirect（HINSTANCE hlnstance,LPCDLGTEMPLATE IPTemplate,HWNDhWndParent,DLGPROC IPDialogFunc）；

參數：

hlnstance: 標識創建對話框的模塊的事例。

IPTemplate: 指向含有一個模板的全局內存對象的指針。CreateDialoglndirect用此模板創建對話框。對話框模板由描述對話框的標題組成，跟隨著標題之後的是描述每一個控制的一個或多個數據塊，模板可以用標準格式或擴展格式。在標準模板中，標題是由DLGTEMPLATE結構跟隨一個變長數組組成。每個控制的數據是由DLGTEMPLATE結構跟隨一個變長數組組成。在擴展模板中，標題用DLGTEMPLATEEX格式，且控制定義用DLGITEMPLATEEX格式。CreatDialoglndirect函數返回後，可釋放模板，此模板僅用於啟動對話框。

hWndParent: 標識擁有對話框的窗口。

IpDialogFunc：指向對話框應用程序的指針，有關更多的對話框應用程序的指針，參見DialogProc。

返回值：如果函數調用成功，則返回值為指向對話框的句柄。如果函數調用失敗，則返回值為NULL。若想獲得更多錯誤信息，可調用GetLastError函數。

備註：CreateDialOglndirect宏使用CreateWindowEx函數來創建對話框，然後該函數把一個WM_INITDIALOG消息發送到對話框應用程序，如果模板指定DS_SETFONT類型，則函數也把一個WM_SETFONT消息發送到對話框應用程序。如果模板指定WS_VISIBLE類型，則函數顯示對話框，最後CreateDialoglndirect返回指向對話框的窗口句柄。

CreateDialoglndirect函數返回之後，可用 ShowWindow函數來顯示對話框（如果還沒有顯示）。用DestroyWindow函數來清除對話框。

在標準對話框模板中，DLGTEMPLATE結構和每一個DLGITEMTEMPLATE結構必須按DWORD邊界對齊，遵循DLGEMTEPLATE結構而創建的數據數組也一定按DWORD邊界對齊。模板中其他所有變長數組一定要按DWORD邊界進行調整。

在擴展對話框模板上DLGTEMPLATEEX結構和每一個DLGITEMTEMPLATEEX結構必須按DWORD邊界對齊；遵循DLGEMTEPLATE結構而創建的數據數組也一定按DWORD邊界對齊。模板中其他所有變長數組一定要按DWORD邊界進行調整。

所有對話框模板的字符串，例如對話框和按鈕的標題，一定是Unicode字符串。使用

MltiByteToWidechar函數產生這些Unicode字符串可以創建在Windows和Windows NT兩種系統上工作的代碼。

Windows 95和以後版本：系統可支持每個對話框模板最多為255個控制。為把多於255個控制放入對話框，可以在WM_INITDLAIOG消息處理器中創建控制，而不是把它們放入模板中。

Windows CE：lpTempate參數指向的對話框模板中，DLGTEMPLATE結構並不支持所有的類型。

速查:Windows NT：3.1 及以上版本;Windows:95及以上版本；Windows CE：1.0及以上版本；頭文件：Winuser.h;庫文件：user32.lib;Unicode: 在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數從內存中的對話框模板上創建一個無模式對話框，在顯示對話框之前，函數把應用程序定義的值作為WMˍINITDIALOG消息的IParam參數傳送到對話框過程。應用程序可用此值初始化對話框控制。

函數原型：HWND CreateDialoglndirectParam(HINSTANCE hlnstance，LPCDLGTEMPLAT IPTemPIate，HWNDhWndParent,DLGPROC IpDialogFunc，LPARAM IParamlnlt）；

參數：

hlnstance：標識將創建對話框的模塊的事例。

IpTemplate：指向一個含有模板的全局內存對象的指針，CreateDialoglndirectParam用該模板來創建對話框。

對話框模板由描述對話框的標題組成，跟隨著標題之後的是描述每一個控制的一個或多個數據塊，模板可以用標準格式或擴展格式。

在標準模板中，標題是由DLGTEMPLATE結構跟隨一個變長數組組成。每個控制的數據是由DLGTEMPLATE結構跟隨一個變長數組組成。

在擴展模板中，標題用DLGTEMPLATEEX格式，且控制定義用DLGITEMPLATEEX格式。

CreateDiloglndirectParam函數返回後，可釋放模板，此模板僅用於啟動對話框。

HWndParent：標識擁有對話框的窗口。

IpDialogFunc：指向對話框過程的指針，有關更多的對話框過程的信息，參見DialogProc。

lParamlnit：指定傳遞到WMˍINIDIALOG消息的IParam參數中對話框中的值。

返回值：如果函數調用成功，則返回值為指向對話框的句柄：如果函數調用失敗，則返回值為NULL。若想獲得更多的錯誤信息，可調用GetLastError函數。

備註：CreatDialoglndirectParam函數使用createWindowEx函數來創建對話框，然後該函數把一個WM_INTDIALOG消息發送到對話框應用程序，如果模板指定DS_SETFONT類型，則函數也把一個WM_SETFONT消息發送到對話框應用程序。如果模板指定WSˍVISBLE類型，則函數顯示對話框，最後CreatDialogdirectParam返回指向對話框的窗口句柄。

CreatDialoglndirectParam函數返回之後，可用ShowWindow函數來顯示對話框（如果還沒有顯示）。用DestroyWindow函數來清除對話框。

在標準對話框模板中，DLGTEMPLATE結構和每一個DLGITEMTEMPLATE結構必須按DWORD邊界對齊，遵循DLGEMTEPLATE結構而創建的數據數組也一定按DWORD邊界對齊。模板中其他所有變長數組一定要按DWORD邊界進行調整。

在擴展對話框模板上DLGTEMPLATEEX結構和每一個DLGITEMTEMPLATEEX結構必須按DWORD邊界對齊，遵循DLGEMTEPLATE結構而創建的數據數組也一定按DWORD邊界對齊。模板中其他所有變長數組一定要按DWORD邊界進行調整。

所有對話框模板的字符串，例如對話框和按鈕的標題，一定是Unicode字符串。使用

MultiByteTowidechar函數產生這些Unicode字符串可以創建在Windows和Windows NT兩種系統上工作的代碼。

Windows 95和以後版本：系統可支持每個對話框模板最多為255個控制。為把多於255個控制放入對話框，可以在WM_INITDLALOG消息處理器中創建控制，而不是把它們放入模板中。

Windows CE：可視屏幕面積之外的對話框不能自動地被重新定位。

如果用戶在對話框有輸入焦點的同時按下Alt＋H，則系統把一個WM_HELP消息傳送到對話過程，應用程序應該通過顯示對話框描述表積極幫助來響應此消息。

DLGTEMPLATE結構的類型成員不支持下列類型：

DS_SETFONT：在對話框中不能設置字體。

DS_RECURSE：不需要。任何一個子對話框可自動地被看作遞歸對話框。

DS_CONTROL：不需要。

WS_EX_CONTROLPARENT：所有對話框都被自動假設為控制母體。用DS_CENTER類型可得到缺省位置定位。如果沒有指定WS_CHLD．則假設為WS_POPUP類型。

速查：Windows NT：3.1及以上版本：Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：winuse.h庫文件:user32.lib;Unicode：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數根據對話框模板資源創建一個無模式的對話框。在顯示對話框之前，函數把一個應用程序定義的值作為WM_INITDIALOG消息IParam參數傳到對話框過程應用程序可用此值來初始化對話框控制。

函數原型：HWND CreateDialogParam(HINSTANCE hlnstancem,LPCTSTR IpTemplateName，HWND hWndParent，DLGPROCIpDialogFunc, LPARAM dwlniParam）；

參數：

hlnstance：標識一個模塊的事例,該模塊的可執行文件含有對話框模板。

IpTemplateName：標識對話框模板。此參數可以指向一個以NULL結尾的字符串的指針,該字符串指定對話框模板名,或是指定對話框模板的資源標識符的一個整型值。如果此參數指定了一個資源標識符，則它的高位字一定為零且低位字一定含有標識符。一定用MAKENTRESOURDE宏指令創建此值。

HwndParent：指定擁有對話框的窗口。

IpDialogFunc：指向對話框過程的指針。有關對話框過程的更詳細的信息，請參見DialogProc。

dwlnitParam：指定傳遞到WM_INITDIALOG消息的IParam參數中的對話框過程的值。

返回值：如果函數調用成功則返回值為指向對話框的窗口句柄。如果函數調用失敗則返回值為NULL。

若想獲得更多錯誤信息,請調用GetlastError函數。

備註：CreateoialogParam函數用 CreateWindowEx函數創建對話框。CreateDialogParam函數然後把一個WM_INITDIALOG消息(和一個WMˍSETFONT消息,如果模板指定DS SETFONT類型）傳遞到對話框過程。如果模板指定WS_VISIBLE類型，則函數顯示對話框，最後CreateDialogParam返回對話框的窗口句柄。

CreateDialogParam返回之後應用程序用ShowWindow顯示對話框（如果還沒有顯示）。應用程序用DestroyWindoW函數來清除對話框。

Windows 95和以後版本：系統可支持每個對話框模板中最多255個控制。為把大於255個的控制放入對話框,需要在WM_INITDIALOG消息處理器中創建控制,而不是把他們放入模板中。

Windows CE：IPTemplateName參數指向的對話框模板中DLGTEMPLATE結構並不支持所有的類型。

速查：Windows NT：3.1 及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件；winuser.h;庫文件：use32.lib;Unicode:在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數按指定的大小、彩色、位創建圖標。

函數原型：HCON Createlcon（HINSTANCE hlnstance,int nWidth,int nHeight,BYTE cPlanes,BYTE cBitsPixe,CONSTBYTE*IpbANDbits,CONST BYET*IpbXORbits）；

參數：

hlnstance:創建圖標模塊事例的句柄。

nWidth:指定目標寬度（像素）。

nHeight:指定圖標高度（像素）。

cPlnes:指定圖標位掩碼異或的位面數。

cBitsPixel:指定圖標位掩碼異或中每像素的位數。

IpbAnDbits:某字節數組的指針，這個數組包含一個圖標位與的位值。這個位掩碼描述一個單色位圖。

IpbXORbits:某字節數組的指針，這個數組包含一個目標位異或的位值。這個位掩碼描述一個單色位圖或設備相關顏色位圖。

返回值：如果函數成功返回值是圖標的句柄。如果函數失效，返回值是NULL。想獲得更多的錯誤信息，請調用GetLastError函數。

備註： nWidth和nHeight參數受當前顯示驅動程序指定的寬度和高度限制，因為系統不能創建其他大小的圖標。使用GetSystemMetric函數確定顯示驅動程序支持的寬度和高度。

Createlcon應用下列位與和位異或的真值表：

OR XOR 顯示

0 0 黑色

0 1 白色

1 0 直接顯示屏

1 1 反轉顯示屏

速查：windows NT:3.1及以上版本；Windows:95N以上版本：Windows CE:不支持；頭文件：winuser.h;庫文件：user32.lib。


 函數功能：該函數通過描述圖標的資源位創建圖標或光標。

函數原型：HICON CreatelconFuomResource（PBYTE presbits,DWORD dwResSize,BOOL flcon,DWORD dwVer）；

DresDits:包含圖標或光標資源位緩衝區的指針典型應用，可通過調用LOOKuplconldFromDirectory 或LoadResource 函數載入這些位（在Windows95也可調用LookuplconldFromDirectorvEx）。

DwResSize:以字節為單位指定由DresbitS參數指定的位集合的大小。

dwVer:指定由presbits參數指定的資源位的圖標或光標格式的的版本號。參數可能是下列的值：

格式 dwVer

Winsows2.x 0×00020000

Winsows3.x 0×00030000

所有基於 Microsoft Win32的應用程序使用Windows 3.x格式的圖標和光標。

返回值：如果函數成功返回值是圖標或光標的句柄；如果函數失效，返回值是NULL。想獲得更多的錯誤信息，請調用GetLastError函數。

備註：CreatelconFromResource，CreateteonFromResourceEx，Createlconlndlrect，Getlconlnfo，LookuPlcondFromDirectory,LookuplconldFromDirectoryEx函數允許外殼應用程序和圖標瀏覽器在整個系統中檢查和使用資源。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE:不支持;頭文件：winuser.h;庫文件：user32.lib。


 函數功能：該函數通過描述圖標的資源位創建圖標或光標。

函數原型：HICON CreatelconFromResourceEx（PBYTE pblconBits,DWORD cblconBits,BOOL flcon,DWORd dwVersion,intcxDesired，int cyDesired，UINT uFlags）；

參數：

pblconBits：包含圖標或光標資源位緩衝區的指針。典型的應用，可通過調用LookuPlconldFromDirectoryEx或LoadResource函數載入這些位。

cblconBits:以字節為單位指定由pblconBits參數指定的位集合的大小。

flcon：指定創建圖標還是光標，如果參數為TRUE，創建圖標；如果參數為FALSE，創建光標。

dwVersion：指定由pblcpmBots參數指定的資源位的圖標或光標格式的版本號。參數可能是下列的值：

Windows2.x 0x00020000； Windows3.x 0x00030000

所有基於Win32的應用程序使用Windows3.x格式的圖標和光標。

cxDesired：指定圖標或光標的期望寬度（以像素為單位）。如果參數是零，函數使用SM_CXICON或SM_CXCURSOR系統公制值設置寬度。

cyDesired:指定圖標或光標的期望高度（以像素為單位）。如果參數是零，函數使用SM_CYICON或SM_CYCURSOR系統公制值設置高度。

VFlags:指定的組合值：

LR_DEFAULTCOLOR：使用缺省顏色格式；

LR_MONOCHROME：創建單色圖標或光標

返回值：如果函數成功，返回值是圖標或光標的句柄：如果函數失效，返回值是NULL。想獲得更多的錯誤信息，請調用GetLastError函數。

備註：CreatelconFromResourceEx，CreatelconFromResource，Createlconlndirect，Getlconlnfo,LookuplcontoFromDirectoryEx函數允許外殼應用程序和圖標瀏覽器在整個系統中檢查和使用資源。

速查：Windows NT：4.O及以上版本; Windows：95及以上版本；Windows CE：不支持；頭文件：Winuser.h；庫文件：user32.lib。


 函數功能：該函數創建一個多文檔接口MDI的子窗口。

函數原型：HWND GreateMDIWindow（LPTSTR IpClassName，LPTSTR IpWindowName，LPTSTR IpWindowName，DWORD dwStyle，int X，int Y，intn Width，int nHeight，HWND hWndParent，HINSTANCE hlnstance，LPARAM IParam）；

參數：

lpClassName：以「\O」為結尾的字符串指針，該字符串指定MDI子窗口的窗口類。該類名必須已通過調用 RegisterClassEx函數註冊過。

lpWindowsName：以「＼O」為結尾的字符串指針，該字符串表示窗口的名字。系統在子窗口的標題條中顯示此名字。

dwStyle：規定MDI子窗口形式。如果MDI客戶窗口是以MDIS-ALLCHILDSTYLES窗日形式創建的，這個參數可以是在Createwindow函數描述中列出的窗口形式的任何組合；否則，這個參數必須取下列值之一或多個組合：

WS_MINIMIZE：創建一個初始狀態為極小化的MDI子窗口。

WS_MAXIMIZE：創建一個初始狀態為極大化的MDI子窗口。

WS_HSCROLL：創建一個帶有水平流動條的MDI子窗口。

WS_VSCROLL：創建一個帶有垂直流動條的MDI子窗口。

X：指定MDI子窗口在客戶坐標系中水平位置的初值。如果此參數值為CW_USEDEFAULT，MDI子窗口被分配為水平位置的缺省值。

Y：指定MDI子窗口在客戶坐標系中垂直位置的初值。如果此參數為CW_USEDEFAULT，MDI子窗口被分配為垂直位置的缺省值。

nWidth：指定MDI子窗口的初始寬度，單位為設備單位。如果此參數值為CW_USEDEFAULT，MDI子窗口被分配為缺省寬度。

nHeight：指定MDI子窗口的初始高度，單位為設備單位。如果此參數值為CW_USEDEFAULT，MDI子窗口被分配為缺省高度。

hWndParent：指向MDI客戶窗口的句柄，該窗口為新的MDI子窗口的父窗口。

hlnstance：指向創建MDI子窗口的應用事例的句柄。

lParam：指定一個應用程序定義的值。

返回值：如果函數調用成功，返回值為所創建窗口的句柄；否則，返回值為NULL。若想獲得更多錯誤信息，請調用GetLastError函數。

備註：使用CreateMDIWindow函數與發送WM_MDCREATE消息給一個MDI客戶窗日相似，區別是函數可以在不同的線程中創建一個MDI子窗口，而消息不可以。

Windows 95。系統最多可以支持16，364個窗口句柄。

速查：Windows NT： 3.1及以上版本； Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；輸入庫：user32.lib；Unicoae：在Windows NT環境中以Unicode和ANSI方式實現。


 函數功能：該函數創建一個具有擴展風格的重疊式窗口、彈出式窗口或子窗口，其他與 CreateWindow函數相同。關於創建窗口和其他參數的內容，請參看CreateWindowEx。

函數原型：HWND CreateWindowEx（DWORD dwExStle，LPCTSTR IpClassName，LPCTSTR lpWindowName，DWORD dwStyle，int x，int y,int nWidth，int nHeight，HWND hWndParent，HMENUhMenu，HANDLE hlnstance，LPVOIDlpParam）；

參數：

dwExStyle：指定窗口的擴展風格。該參數可以是下列值：

WS_EX_ACCEPTFILES：指定以該風格創建的窗口接受一個拖拽文件。

WS_EX_APPWINDOW：當窗口可見時，將一個頂層窗口放置到任務條上。

WS_EX_CLIENTEDGE：指定窗口有一個帶陰影的邊界。

WS_EX_CONTEXTHELP：在窗口的標題條包含一個問號標誌。當用戶點擊了問號時，鼠標光標變為一個問號的指針、如果點擊了一個子窗口，則子窗日接收到WM_HELP消息。子窗口應該將這個消息傳遞給父窗口過程，父窗口再通過HELP_WM_HELP命令調用WinHelp函數。這個Help應用程序顯示一個包含子窗口幫助信息的彈出式窗口。 WS_EX_CONTEXTHELP不能與WS_MAXIMIZEBOX和WS_MINIMIZEBOX同時使用。

WS_EX_CONTROLPARENT：允許用戶使用Tab鍵在窗口的子窗口間搜索。

WS_EX_DLGMODALFRAME：創建一個帶雙邊的窗口；該窗口可以在dwStyle中指定WS_CAPTION風格來創建一個標題欄。

WS_EX_LEFT：窗口具有左對齊屬性，這是缺省設置的。

WS_EX_LEFTSCROLLBAR：如果外殼語言是如Hebrew，Arabic，或其他支持reading order alignment的語言，則標題條（如果存在）則在客戶區的左部分。若是其他語言，在該風格被忽略並且不作為錯誤處理。

WS_EX_LTRREADING：窗口文本以LEFT到RIGHT（自左向右）屬性的順序顯示。這是缺省設置的。

WS_EX_MDICHILD：創建一個MD子窗口。

WS_EX_NOPATARENTNOTIFY：指明以這個風格創建的窗口在被創建和銷毀時不向父窗口發送WM_PARENTNOTFY消息。

WS_EX_OVERLAPPED：WS_EX_CLIENTEDGE和WS_EX_WINDOWEDGE的組合。

WS_EX_PALETTEWINDOW：WS_EX_WINDOWEDGE, WS_EX_TOOLWINDOW和WS_WX_TOPMOST風格的組合WS_EX_RIGHT:窗口具有普通的右對齊屬性，這依賴於窗口類。只有在外殼語言是如Hebrew,Arabic或其他支持讀順序對齊（reading order alignment）的語言時該風格才有效，否則，忽略該標誌並且不作為錯誤處理。

WS_EX_RIGHTSCROLLBAR：垂直滾動條在窗口的右邊界。這是缺省設置的。

WS_EX_RTLREADING：如果外殼語言是如Hebrew，Arabic，或其他支持讀順序對齊（reading order alignment）的語言，則窗口文本是一自左向右）RIGHT到LEFT順序的讀出順序。若是其他語言，在該風格被忽略並且不作為錯誤處理。

WS_EX_STATICEDGE：為不接受用戶輸入的項創建一個3一維邊界風格

WS_EX_TOOLWIDOW：創建工具窗口，即窗口是一個游動的工具條。工具窗口的標題條比一般窗口的標題條短，並且窗口標題以小字體顯示。工具窗口不在任務欄裡顯示，當用戶按下alt＋Tab鍵時工具窗口不在對話框裡顯示。如果工具窗口有一個系統菜單，它的圖標也不會顯示在標題欄裡，但是，可以通過點擊鼠標右鍵或Alt＋Space來顯示菜單。

WS_EX_TOPMOST：指明以該風格創建的窗口應放置在所有非最高層窗口的上面並且停留在其L，即使窗口未被激活。使用函數SetWindowPos來設置和移去這個風格。

WS_EX_TRANSPARENT：指定以這個風格創建的窗口在窗口下的同屬窗口已重畫時，該窗口才可以重畫。

由於其下的同屬富日已被重畫，該窗口是透明的。

IpClassName:指向一個空結束的字符串或整型數atom。如果該參數是一個整型量，它是由此前調用theGlobaIAddAtom函數產生的全局量。這個小於OxCOOO的16位數必須是IpClassName參數字的低16位，該參數的高位必須是O。

如果lpClassName是一個字符串，它指定了窗口的類名。這個類名可以是任何用函數RegisterClassEx註冊的類名，或是任何預定義的控制類名。請看說明部分的列表。

lpWindowName:指向一個指定窗口名的空結束的字符串指針。

如果窗口風格指定了標題條，由lpWindowName指向的窗口標題將顯示在標題條上。當使用CreateWindow

函數來創建控制例如按鈕，選擇框和靜態控制時，可使用lpWindowName來指定控制文本。

dwStyle:指定創建窗口的風格。該參數可以是下列窗口風格的組合再加上說明部分的控制風格。

x：參見CreateWindow。

y：參見CreateWindow。

nWidth:CreateWindow。

nHeigth：參見CreateWindow。

hWndParent：參見CreateWindow。

hMenu：參見CreateWindow。

hlnstance：參見CreateWindow。

lpParam:參見CreateWindow。

返回值：參見CreateWindow。

備註:參見CreateWindow。

速查：Windows NT：3.1以上版本；Windows：95以上版本；Windows CE：1.0以上版本；頭文件：winuser.h；庫文件：USer32.lib;Unicode：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數為屬於應用程序定義的對話框類的窗口過程提供缺省的消息處理。

函數原型：LRESULT DefDlgProc（HWND hDlg，UINT Msg，WPARAM wParam, LPARAM Param）；

參數：

hDlg：指定對話框。

Msg：指定消息數目。

wParam：指定消息中特定的其他信息。

Iparam：指定消息中特定的其他信息。

返回值：返回值指定消息處理的結果且依賴於發送的消息。

備註：DefDlgProc函數為對話樞預定義類的窗口應用程序。此應用程序通過把消息傳送到對框應用程序和為對話框應用程序返回的任何一個FALSE消息，提供缺省處理而為對話框提供內部的處理程序。為自定義對話框創建自定義應用程序的應用程序，常用DefDlgProc而不是DefWindowProc函數來執行缺省的消息處理。應用程序通過用合適的信息來填充一個WNCLASS結構和通過用RegisterClass函數登記的類創建自定義對話框類。一些應用程序用GetClasslnfo函數指定與定義對話框的名來填充此機構。在這種情況下，應用程序在登記之前至少改變IpszClassNamede數目。在所有的情況下，對於自定義對話框的WNDCLASS的cbWndExtra成員一定至少設置為DLGWINDOWEXTRA。DefDlgProc函數一定不要通過一個對話框應用程序來調用，這樣做會導致循環執行。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：winuser.h;庫文件：user32.lib；Unicode：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數對任何多文檔接口（MDI）框架窗日的窗口過程不處理的窗口消息提供缺省處理。窗口過程不能明確處理的所有窗口消息必須通過DefFrameProc函數處理，而不是通過DefWindowProc函數。

函數原型：LRESULT DefFrameProc（HWND hWnd，HWND hWnd，HWND hWndMDIClient，UINT uMsg，WPARAM wParam，LPARAM IParam）；

參數：

hWnd：MDI框架窗口句柄。

hWndMDIClient：MDI客戶窗口句柄。

uMsg：指定要處理的消息。

wParam：指定附加的特定消息信息。

IParam：指定附加的特定消息信息。

返回值：返回值指定，消息處理的結果其值與處理的消息有關。如果hWndMDIClient參數為NULL，返回值與DefWindowProc函數的相同。

備註：當應用程序的窗口過程不能處理一個消息時，它把消息傳遞給DefWindowProc函數來處理。MDI應用程序使用DefFrameProc和DefMDIChildProc函數代替DefWindowProc函數提供缺省消息處理。應用程序傳遞給DefMDIChildProc函數的所有消息（例如非客戶消息和WM_SETTEXT消息）通常應被傳遞給DefFrameFro函數。DefFramePro函數也處理下列消息：

WM_COMMAND：激活用戶選擇的MDI子窗口。當用戶從MDI框架窗口的菜單中選擇MDI子窗口時，此消息被發送伴隨該消息的窗口標識符識別被激活的MDI子窗口。

WM_MENUCHAR：當用戶按下Alt＋C（減）組合鍵時，打開活動MDI子窗口的窗口菜單。

WM_SETFOCUS：傳遞鍵盤響應給MDI客戶窗口，客戶窗口又依次地把它傳遞給活動的MDI子窗口。

WM_SIZE：重新設備新的框架窗口客戶域的MDI客戶窗口大小。如果框架窗口過程設置了不同大小的MDI客戶窗口，消息將不傳遞給DefWindowProc函數。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件；winuser.h；輸入庫：user32。lib；Unicode：在Windows NT環境中以Unicode和ANSI方式實現。


 函數功能：該函數對任何多文檔接口（MDI）子窗口的窗口過程不能處理的窗口消息提供缺省處理。窗口過程不能處理的窗口消息必須傳遞給DefMDIChildProc函數，而不是DefWindowProc函數。

函數原型：LRESULT DDMDIChildProc（HWND hwnd，UINT uMsg，WPARAM wParam，LPARAM IParam）

參數：

hWnd：MDI子窗口句柄。

wParam：指定要處理的消息。

wParam：指定附加的特定消息信息。

IParam：指定附加的特定消息。

返回值：返回值指定信息處理的結果和其值與處理的消息有關。

備註：DefMDIChifdProc函數假定由hwnd參數所識別的MDI子窗口的父窗口是由MDICLIENT類生成的。

當應用程序的窗口過程不能處理一個消息時，它把消息傳遞給DefWindowProc函數來處理，MDI應用程序使用DefFrameProc和DefMDfChildProc函數來代替DefWindowProc函數提供缺省消息處理。應用程序傳遞給DefwindowProc函數的所有消息（例如非客戶消息和WMSET_SETTEXT消息）通常都應傳遞給DefMDIChildProc函數。另外DefMDIChildProc函數也能處理下列消息：

WM_CHILDACTIVATE：當MDI子窗口被改變大小，移動或顯示時執行激活過程。這個消息必須被傳遞。

WM_GETMINMAXINFO：根據MDI客戶窗口的當前大小，計算MDI子窗口極大化的尺寸。

WM_MENUCHAR：傳遞消息給MDI框架窗口。

WM_MOVE：重新計算MDI客戶滾動條，如果存在的話。

WM_SETFOCUS：如果子窗口不是活動的MDI子窗口，激活它。

WM_SIZE；執行改變窗口大小所必須的操作，特別是MDI子窗口極大化或恢復一個MDI子窗口時。如果這個消息沒有成功地傳遞給DefMDIChildProc函數，則很可能產生不是需要的結果。

WM_SYSCOMMAND：處理窗口菜單命令：SC.NEXTWINDOW，SC_PREVWINDOW，SC_MOVE，SC_SIZE，和SC_MAXIMIZE。

速查：Window NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；輸入庫：user32.lib；Unicode：在Windows NT環境中以Unicode和ANSI方式實現。


 函數功能：該函數調用缺省的窗口過程來為應用程序沒有處理的任何窗口消息提供缺省的處理。該函數確保每一個消息得到處理。調用DefWindowProc函數時使用窗口過程接收的相同參數。

函數原型：LRESULT DefWindowProc（HWND hWnd，UINT Msg，WPARAM wParam，LPARAM IParam）；

參數：

hWnd：指向接收消息的窗口過程的句柄。

Msg：指定消息類型。

wParam：指定其餘的、消息特定的信息。該參數的內容與Msg參數值有關。

IParam：指定其餘的、消息特定的信息。該參數的內容與Msg參數值有關。

返回值：返回值就是消息處理結果，它與發送的消息有關。

備註：對於Windows CE；如果Msg為WM_SETTEXT那麼返回0。

當DefWindowProc處理WM_DESTROY消息時，它不自動調用PostQutMessage。

速查：Windows NT 3.1以上版本；Windows：95以上版本：Windows CE以上版本；頭文件；winuser.h；庫文件：user32.lib；Unicode：在Windows NT環境中以Unicode和ANSI版本實現。


 函數功能：撤消加速鍵表。該函數撤消一個加速鍵表。在關閉應用程序之前，必須使用該函數撤消所有由DestroyAcceleratorTable函數創建的加速鍵表。

函數原型: BOOL DestroyAcceleratorTable（HACCEL hAccel）；

參數：

hAccdel：將被撤消的加速鍵表的句柄。該句柄必須己通過調用DestroyAcceleratorTable 函數而創建。

返回值：若函數調用成功，則返回非零值，若函數調用失敗，則返回值為零。若要獲得更多的錯誤信息，可以調用GetLastError函數。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：Windows.h;庫文件：user32.lib。


 函數功能：該函數清除圖標和釋放任何被圖標佔用的存儲空間。

函數原型：BOOL Destroylcon（HICON hlcon）；

參數：

hlcon：是要清除留標的句柄。該圖標應處於未被使用狀態。

返回值：如果函數成功，返回值是非零：如果函數失效，返回值是零。想獲得更多的錯誤信息，請調用GetLastError函數。

備註:只有利用Createlconlndirect函數創建的圖標和光標才能調用Destroylcon函數，不要使用該函數清除一個共享圖標。只要調入它的模塊存在於存儲器中，共享圖標就一直有效。下列函數可獲取共享圖標：Loadlcon;Loadlmage（如果你使用LR_共享標記）；copylmage（如果你使用LR_COPYRETURNORG而且hlmage參數為共享目標）。

Windows CE：Destroylcon函數可以通過圖標句柄調用，這些圖標句柄來自於Createlconlndirect,ExtractlconEx,Loadlmage或Loadlco函數。在調用Destroylcon函數之後這些圖標句柄變為無效。

速查：Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本；頭文件：winuser.h;庫文件：user32.lib。


 函數功能：該宏根據對話框模板資源創建一個模態的對話框。DialogBOX函數直到指定的回調函數通過調用EndDialog函數中止模態的對話框才能返回控制。該宏使用DialogBoxParam函數。

函數原型：int DialogBox(HINSTANCE hlnstance,LPCTSTRIpTemplate,HWND hWndParent,DLGPROC IpDialogFunc);

參數：

hlnstance：標識一個模塊的事例該模塊的可執行文件含有對話框模板。

IpTemplate：標識對話框模板。此參數可以是指向一個以NULL結尾的字符串的指針，該字符串指定對話框模板名，或是指定對話框模板的資源標識符中的一個整型值。如果此參數指定了一個資源標識符則它的高位字一定為零，且低位字一定含有標識符。一定用MAKEINTRESOURDE宏指令創建此值。

hWndParent：指定擁有對話框的窗口。

IpDialogFunc：指向對話框過程的指針。有關更詳細的關於對話框過程的信息,請參見DialogProc。

返回值：如果函數調用成功，則返回值為在對函數EndDialog的調用中的nResult參數．該函數用於中止對話框。如果函數調用失敗，則返回值為C1。若想獲得更多的錯誤信息，請調用GetLastError函數。

備註：DialOgBox宏用CreateWindowEx函數創建對話框。DialogBox函數然後把一個WM_INITDIALOG消息(和一個WM-SETFONT消息，如果模板指定DS_SETFONT類型）傳遞到對話框過程。不管模板是否指定WS_VISIBLE類型，函數顯示對話框，並且使擁有該對話框的窗口（也稱屬主窗口）失效，且為對話框啟動它本身的消息循環來檢索和傳遞消息。

當對話框應用程序調用EndDialog函數時，DialogBox函數清除對話框戶止消息循環,使屬主窗口生效（如果以前有效），且返回函數EndDialog調用中的nReSUlt參數。

Windows 95和以後版本：系統可支持每個對話框模板中最多255個控制。為把大於255個的控制放入對話框，需要在WM_INITDIALOG消息處理器中創建控制，而不是把他們放入模板中。

Windows CE:lpTemplateName參數指向的對話框模板中DLGTEMPLATE結構並不支持所有的類型。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：winuser.h；庫文件:user32.lib Unicode：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該宏根據內存中的對話框模板資源創建一個模態的對話框。DialogBoxlndirect宏直到指定的回調函數通過調用EndDialog函數中止模態的對話框才能返回。DiaogBoxlndirect宏使用DialogBoxParam函數。函數原型：int DialogBoxlndirect(HINSTANCE hlnstance,LPDLGTEMPLATE IpTemplate，HWND hWndParent，DLGPROClpDialogFunc）；

參數：

hlnstance：標識一個模塊的事例，該模塊創建對話框。

IpTemplate：此參數指向含有一個模板的全局內存對象的指針。DialogBoxlndirect用此模板創建對話框。對話框模板由描述對話框的標題組成，跟隨著標題之後的是描述每一個控制的一個或多個數據塊，模板可以用標準格式或擴展格式。

在標準模板中，標題是由DLGTEMPLATE結構跟隨一個變長數組組成。每個控制的數據是由DLGTEMPLATE結構跟隨一個變長數組組成。

在擴展模板中，標題用DLGTEMPLATEEX格式，且控制定義用DLGITEMPLATEEX格式。

HWndParent：指定擁有對話框的窗口。

IpDialogFunc：指向對話框過程的指針。有關更詳細的關於對話框過程的信息，請參見DialogProc。

返回值：如果函數調用成功則返回值為在對函數EndDialog的調用中的nResult參數,該EndDialog函數用於中止對話框。如果函數調用失敗，則返回值為C1。 若想獲得更多錯誤信息請調用GetLastError函數。

備註：DialogBoxlndirect宏使用CreateWindowEx函數創建對話樞．然後把一個WM_INITDIALOG消息傳遞到對話框過程。如果模板指定DS_SETFONT類型DialogBoxlndirect函數將一個WM_SETFONT消息傳遞到對話框。（不管模板是否指定WS_VISIBLE類型），函數顯示對話框使屬主窗口失效，且為對話框啟動它本身的消息循環來檢索和傳遞消息。

當對話框應用程序調用EndDialog 函數時，DialogBoxlndirect函數清除對話框，中止消息循環，使主窗口生效（如果以前有效）且返回EndDialog函數調用中的nResult參數。

在標準對話框模板中，DLGTEMPLATE結構和每一個DLGITEMTEMPLATE結構必須按DWORD邊界對齊，遵循DLGEMTEPLATE結構而創建的數據數組也一定按DWORD邊界對齊。模板中其他所有變長數組一定要按DWORD邊界進行調整。

在擴展對話框模板上DLGTEMPLATEEX結構和每一個DLGITEMTEMPLATEEX結構必須按DWORD邊界對齊，遵循DLGEMTEPLATE結構而創建的數據數組也一定按DWORD邊界對齊。模板中其他所有變長數組一定要按DWORD邊界進行調整。

所有對話框模板的字符串，例如對話框和按鈕的標題，一定是Unicode字符串。使用

MultiByteToWidechar函數產生這些Unicode字符串可以創建在Windows和Windows NT兩種系統上工作的代碼。

Windows 95和以後版本：系統可支持每個對話框模板最多為255個控制。為把多於255個控制放入對話框。可以在WM_INITDLAIOG消息處理器中創建控制，而不是把它們放入模板中。

Windows CE：IpTemplateName參數指向的對話框模板中DLGTEMPLATE結構並不支持所有的類型。

速查：Windows NT:3.1 及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：Winuser.h;庫文件：user32.lib Unicode：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能；該函數根據內存中對話框模板創建一個模態的對話框。在顯示對話框之前，函數把一個應用程序定義的值作為WM_INITDIALOG消息的IParam參數傳到對話框過程,應用程序可用此值來初始化對話框控制。

函數原型:int DialogBoxlndirectParam(HINSTANCE hlnstance，LPCDLGTEMPLATE hDialogTemplate, HWND hWndParent,DLGPROC IpDiaIogFunc，LPARAM dwlnitParam）；

參數：

hlnstance：標識一個模塊的事例，該模塊創建對話框。

hDialogTemplate:此參數指向含有一個模板的全局內存對象的指針。DialogBoxlndirectParam用此模板創建對話框。對話框模板由描述對話框的標題組成，跟隨著標題之後的是描述每一個控制的一個或多個數據塊，模板可以用標準格式或擴展格式。

在標準模板中，標題是由DLGTEMPLATE結構跟隨一個變長數組組成。每個控制的數據是由DLGTEMPLATE結構跟隨一個變長數組組成。

在擴展模板中，標題用DLGTEMPLATEEX格式，且控制定義用DLGITEMPLATEEX格式。

hWndParent：指定擁有對話框的窗口。

IpDirlogFunc：指向對話框過程的指針。有關對話框過程更詳細的信息請參見DialogProc。

dwlnitParam：指定傳遞到WM_INITDIALOG消息的IParam參數中的對話框的值。

返回值：如果函數調用成功，則返回值為在函數EndDialog的調用中的nResult參數，該EndDialog函數用於中止對話框。如果函數調用失敗，則返回值為C1。若想獲得更多的錯誤信息，請調用GetLastError函數。

速查：Windows NT：3.1及以上版本；Windows:95及以上版本；Windows CE：1.0及以上版本；頭文件：Winuser.h;庫文件：user32.lib;Unicode:在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數根據對話框模板資源創建一個模態的對話框。在顯示對話框之前，函數把一個應用程序定義的值作為WM_INITDIALOG消息的IParam參數傳到對話框過程,應用程序可用此值來初始化對話框控制。

函數原型：int DialogBoxParam（HINSTANCE hlnstance，LPCTSTR IpTemplateName,HWND hWndParent， DLGPROCIPDialogFunc,LPARAM dwlnitParam）；

參數：

hlnstance：標識一個模塊的事例，該模塊的可執行文件含有對話框模板。

IpTemplateName：標識對話框模板。此參數可以指向一個以NULL結尾的字符串的指針,該字符串指定對話框模扳名，或是指定對話框模板的資源標識符的一個整型值。如果此參數指定了一個資源標識符，則它的高位字一定為零，且低位字一定含有標識符。一定用MAKEINTRESOURDE宏指令創建此值。

hWndParent：指定擁有對話框的窗口。

IpDirlogFunc：指向對話框過程的指針。有關更詳細的關於對話框過程的信息，請參見DialogProc。

dwlnitaram：指定傳遞到WM_INITDIALOG消息的IParam參數中的對話框過程的值。

返回值：如果函數調用成功則返回值為在對函數EndDialog的調用中的nResult參數，該EndDialog函數用於中止對話框。如果函數調用失敗，則返回值為C1。若想獲得錯誤信息，請調用GetLastError函數。

備註：DialogBoxParam函數用CreateWindowEx函數創建對話框。然後把一個WM_INITDIALOGG消息傳遞到對話框過程。如果模板指定DS_SETFONT類型，DialogBoxParam函數把一個WM_SETFONT消息傳遞到對話框過程。(不管模板是否指定WS_VISIBLE類型）,函數顯示對話框使擁有窗口失效,且為對話框啟動它本身的消息循環來檢取和傳遞消息。當對話框應用程序調用EndDialog函數時，DialogBoxParam函數清除對話框中止消息循環；使擁有窗口生效（如果以前有效），且返回函數EndDialog的調用中的nReSUlt參數。Windows 95和以後版本：系統可支持每個對話框模板最多為255個控制。為把多於255個控制放入對話框，可以在WM_INITDLALOG消息處理器中創建控制，而不是把它們放入模板中。Windows CE：IPTemplateName參數指向的對話框模板中DLGTEMPLATE結構並不支持所有的類型。

速查：Windows NT：3.1及以上版本：Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：Winuser.h;庫文件：USer32.lib：Unicode：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數為一個應用程序定義可與DialogBOX函數一起使用的回調函數。它處理發送到一個模態的或無模式對話框的消息。DLGPROC類型定義了一個指向此回調函數的指針。DialogProc函數是應用程序定義函數名的一個佔位符。

函數原型：BOOL CALLBACK DialogProc(HWND hwndDlg,UINT UMsg,WPARAM wParam,LPARAM IParam);

參數：

hwndDlg：指定對話框。

uMsg：指定消息。

wParam：指定消息特定的其他信息。

Iparam：指定消息特定的其他信息。

返回值：除了對MM_INITDIALOG消息的響應之外如果函數處理消息，則對話框應用程序應該返回非零值．

如果函數不處理消息，則對話框應用程序應該返回零值。再響應WM_INITDIALOG消息時，如果函數調用SetFocus設置對話框中控制中的一個焦點,則對話框應用程序應該返回零值，否則對話框應用程序應該返回非零值在,這種情況下系統對能夠有焦點的對話框中的第一個控制設置焦點。

備註：只要為對話框使用對話框類時才應該使用對話框應用程序。這是缺省的類，並且在對話框模板中沒有指定明顯的類時才使用。儘管對話框應用程序同Windows應用程序類似，但它不能調用DefWindowProc

函數來處理不需要的消息。不需要的消息通過對話框窗口應用程序內部處理。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：Winser.h；庫文件：用戶定義。


 函數功能：該函數調度一個消息給窗口程序。通常調度從GetMessage取得的消息。

函數原型：LONG DispatchMessage（CONST MSG★lpmsg）；

參數：

lpmsg：指向含有消息的MSG結構的指針。

返回值：返回值是窗口程序返回的值。儘管返回值的含義依賴於被調度的消息，但返回值通常被忽略。

備註：MSG結構必須包含有效的消息值。如果參數lpmsg指向一個WM_TIMER消息，並且WM_TIMER消息的參數IParam不為NULL，則調用IPa1ram指向的函數，而不是調用窗口程序。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：winuser.h；輸入庫：user32.lib；Unicode：在Windows NT環境下以Unicode和ANSI方式實現。


 函數功能：該函數用與指定的文件名匹配的所有文件的名字填充列表框。

函數原型：int DlgDirList(HWND hDlg,LPTSTR lpPathSpec,int nlDListBox,int nlDStaticPath,UINT uFileType);

參數：

hDlg：包含列表框的對話框句柄。

loPathSpec：指向包含路徑名或文件名的以NULL結尾的字符串指針。DIgDirList修改此串，該串必須有足夠的長度來保存修改的內容。關於此參數的更詳盡的信息，請看備註部分。

nlDListBox：定義一個列表框的標示。如果該參數為0，DlgDirList函數認為沒有列表框存在，也不試圖填充。

nlDStaticPath：定義用於顯示當前驅動器和目錄的靜態控制的標識符。若此參數為0，DlgDirList認為不存在這樣的控制。

UFileType：定義將要顯示的文件名字的屬性。該參數必須是一個或多個如下的值：

DDL_ARCHIyE：包含文檔文件。DDL_DIRECTORY：包含於目錄。於目錄名包含在方括號中。

DDL_DRIVES：包含驅動器。驅動器以〔一X」的形式列出，其中X是驅動器符。

DDL_EXCLUSIVE:僅包含指定屬性的文件。缺省情況下，可讀寫的文件將被列出，儘管並未指定DDL_READWRITE值。DDL_HIDDEN：包含隱含文件。

DDL_READONLy：包含只讀文件。DDL_READWRITE:包含沒有其他附加屬性的可讀寫文件。

DDL_SYSTEM:包含系統文件。DDL_POSTMSGS：傳遞消息給應用程序的消息隊列。缺省情況下，DlgDirList直接發送消息給對話框過程。

返回值：若函數調用成功，則返回值不為0。若函數調用失敗，則返回值為0。例如，lpPathSpec定義的串不是一個有效路徑時，函數將失敗。若想獲的錯誤信息，可以調用GetLastError函數。

備註:若對於lpPathSpec參數定義了一個0長度的串，或者僅定義了一個目錄名，而沒有文件名，則串被轉換為『.』。

lpPathSgec參數有如下形式：[drive：][\u]directory[\idirectory]\u][filename]

在這個例子中，drive是一個驅動器符，directory是一個有效的驅動器名，filename是一個有效的文件名，文件名中必須包含至少一個通配符。

若lpPathSpec包含一個驅動器或目錄名，或同時包含兩者，則在列表框被填充以前，當前的驅動器和目錄將被改變為指定的驅動器和目錄。nlDStaticPath參數標識的靜態控制也被用新的驅動器或/和目錄名來更新。

列表框填充以後，DlgDirList通過移去路徑和文件名的驅動器和/或目錄部分來更新lpPathSpec參數。

DlgDirList發送LB_RESETCONTENT和LB_DIR消息給列表框。

速查：Windows NT: 3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；庫文件：user32.lib；Unicode：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數用一個目錄列表來填充指定的組合框

函數原型：int DlgDirListComboBox（HWND hDlg，LPTSTR lpPathSpec，int nlDComboBox，int nlDStaticPath，UINT uFiletype）；

參數：

hDlg：包含組合框的對話框句柄。

lpPathSpel：指向一個以NULL結束的字符串，格式為 [driver][/][directory/][.][filename]

如果指定的串包括一個驅動器或目錄路徑，在填充列表之前，DlgDirListComboBox函數改變當前驅動

器和目錄。在列表被填充之後，驅動器和目錄路徑從lpPathspec參數標識的串中移出來。

nlDComboBox：指定對話框中組合框的標識符。如果hlDComboBox為零，則DlgDirlistComboBox函數沒有組合框存在或不試圖填充它。

hlDStatic Path：指定靜態控制的標識符，此靜態控制用於顯示當前目錄。如果nlDStasticPath為零，DlgDirListComboBox函數認為沒有這樣的控制。

uFiletype：指定被顯示的文件的屬性。它可以是下列的任意組合：

DDL_ARDIVE：包括檔案文件。

DDL_DIRECTORY：包括子目錄，子目錄名必須用方括號括起來（[]）。

DDL_DRIVES：包括驅動器，驅動器列在格式[-X-]中，其中X為驅動器字母名。

DDL_EXCIUSIVE：包括僅帶指定屬性的文件，缺省時，寫保護文件被引出，即使DDL_READ WRITE沒有被指定。

DDL_HIDBEN：包括隱含文件。DDL_READONLY：包括只讀文件。

DDL_READWRITE：包括讀寫文件且不帶有別的屬性。DDL_SYSTEM：包括系統文件。

DDL_POSTMSGS：把信息傳遞到應用信息隊列，缺省時，DlgDirlist函數把信息直接發送給對話框過程。

返回值：如果函數調用成功，返回值為非零值，否則返回值為零。例如，如果tpPatbSpec指定的串不是一個有效路徑，函數調用失敗。若想獲得更多錯誤信息，請調用GetLastError函數。

備註；如果參數lpszPatbSpec指向一個零字節串或一個指定驅動器目錄，或兩者的串，但沒有文件名，那麼認為文件名為"."。

Windows NT：如果有目錄列表的話，則顯示長文件名。

Windows 95：目錄列表顯示短文件名（為8.3形式）。可以用SHGetFilelnfo或GetFullPathName函數來得到相應的長文件名。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；庫文件：user32.lib：Unicode：在Windows NT環境中實現為Unicode和ANSI兩個版本。


 函數功能：該函數從由DlgDirlistcomboBox函數填充的組合框中檢取當前選擇。選擇內容為一個驅動器字母、文件名或目錄名。

函數原型：BOOL DlgDirSelectComboBox（HWND hDlg，LPTSTR lpString，int nCount，int nlDComboBox）；

參數：

hDlg：包括組合框的對話框的句柄。

IpString：指向存放選擇路徑的緩衝區。

nCount：指定IpString參數指向的緩衝區的字節長度。

nlDComboBox：指定控制對話框的組合框的整型標識符。

返回值：如果當前選擇為一個目錄名，返回值為非零值；否則，返回值為零值。若想獲得更多錯誤信息，請調用GetLastError函數。

備註：如果當前選擇指定於一個目錄名或驅動器字母，DlgDirSelectComboBoxEx函數則刪方括號（對驅動器字母則刪除破折號），以便使文件名或驅動器字母能插入新的路徑或文件名，如果沒有選擇，IpString參數指向的緩衝區的內容沒有改變。DlgDirselectComboBoxEx函數不允許從組合框返回多於一個的文件名。

DlgDirSectectComboBoxEx把消息CB_GETCILRSEL和CB_GETLBTEXT發送到組合框。在Win32API中，可應用帶有三種組合框的DlgDirSelectComboBoxEx函數（三種組合框為CBS_SIMPLE，CBS_DROPDOWN，與CBS_DROPDOWNLIST）。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；庫文件：user32.lib；Unicode：在Windows NT環境中實現為Unicode和ANSI兩個版本。


 函數功能：該函數從單選列表框中檢取當前選擇，列表框已經由DlgDirlist函數填充，並且選擇內容為一個驅動器字母，文件名或目錄名。

函數原型：BOOL DlgDirSelectEx（HWND hDlg，LPTSTR lpString，int nCount，int nlDListBox）；

參數：

hDlg：包括列表框的對話框句柄。

lpString：指向存放選擇路徑的一個緩衝區。

ncount：指定由lpString指向的緩衝區的字節長度。

nlDListBox：指定對話框中列表框的整型標識符。

返回值：如果當前選擇為目錄名，返回值為非零值。如果當前選擇不是一個目錄名，返回值為零，若想獲得更多錯誤信息，請調用函數GetLastError函數。

備往：DlgDirSelectEx函數把選擇複製到由IpString參數指向的緩衝區，如果當前選擇是一個目錄名或驅動器字母，DlgDirSelectEx則刪除方括號（對於驅動器字母，則刪去破折號）。這樣以便目錄名或驅動器字母能插入一個新的路徑。如果沒有選擇，lpString不改變。 DlgDirSelectEx函數把消息LB_GETCURSEL和消息LB_GETTEXT發送到列表框，函數禁止從列表框返回多於一個的文件名。列表框不應是復選的列表框，如果是的話，此函數不返回零值且Ipstring參數保持不變。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；庫文件：user32.lib；Unicode：在Windows NT環境中實現為Unicode和ANSI兩個版本。


 函數功能：該函數從單選列表框中檢取當前選擇。假定列表框已被DlgDirList函數填充，並且該選擇為一個驅動器符，文件名，或目錄名。

函數原型:BOOL DlgDirSelectEx(HWND hDlg,LPTSTR lpString,int nCount,int nlDlistBox)；

參數：

hDlg：包含列表框的對話框句柄。

lpString：接受選定的路徑的緩衝區指針。

nCount：定義lpstring指向的緩衝區中的字符串長度。

NlDListBox：定義對話框中列表框的整數標識符。

返回值：若當前選擇為目錄名，則返回值不為0。若當前選擇不是目錄名，則返回值為0。若要獲得更多的錯誤信息，可調用GetLastError函數。

備註:DlgDirSelectEx函數把選擇拷貝到lpString指向的緩衝區。若當前選擇為一目錄名或驅動器符，DlgDirSelectEx函數將去掉封閉的方形括號（對於驅動器符；還要去掉連字符），以便於將名字和符號插入到新的路徑中。若沒有選擇，lpString的值不變。

DlgDirSelectEx發送LB_GETCURSEL和LB_GETTEXT消息到列表框。該函數不允許從列表框返回多個文件名。該列表框一定不能是多選列表框。若為多選框，該函數不返回0值，且lpString的值不變。

速查：Windows nT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件；winuser.h；庫文件：user32.lib; Unicode:在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數捕獲並跟蹤鼠標的移動直到用戶鬆開左鍵、按下Esc。鍵或者將鼠標移動到圍繞指定點的「拖動矩形」之外。拖動矩形的寬和高由函數GetSystemMetrics返回的SM_CXDRAG或SM_CYDRAG確定。

函數原型：BOOL DragDetect（HWND hwnd，POINT pt）；

參數：

hwnd：接受鼠標輸入的窗口的句柄。

pt：鼠標在屏幕坐標下的初始位置，此函數根據這個點來確定拖動矩形的坐標。

返回值：如果用戶在按著鼠標左鍵時將鼠標移出了拖動矩形之外，則返回非零值；如果用戶按著鼠標左鍵在拖動內移動鼠標，則返回值是零。

備註：拖動矩形的系統度量是可構造的，允許更大或更小的拖動矩形。

速查：Windows NT： 4.0及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；輸入庫：user32.lib。


 函數功能：該函數在限定的設備上下文窗口的客戶區域繪製圖標。

函數原型：BOOL Drawlcon（HDC hDC，int X，nit Y HICON hlcon ）；

參數：

hDC:窗口設備上下文的句柄。

X：指定圖標左上角的邏輯X坐標。

Y：指定圖標左上角的邏輯y坐標。

hlcon:被繪製圖標的句柄。圖標資源必須已經通過Loadlcon或Loadlmage函數被裝載過。

返回值:如果函數成功，返回值是非零；如果函數失效，返回值是零。想獲得更多的錯誤信息，請調用GetLastError函數。

備註：Drawlcon函數將目標的左上角置於由X和Y參數指定的位置，該位置受當前設備上下文的映射方式支配。

Windows CE：Drawlcon函數被當做宏執行，定義為DrawlconEx（hdc，x，y， hicon，0，0，0，NULL，DI_NORMAL）。

速查：Windows NT:3.1及以上版本;Windows：95及以上版本;Windows CE:1.0及以上版本；頭文件：winuser.h;庫文件：user32.lib。


 函數功能：該函數在限定的設備上下文窗口的客戶區域繪製圖標，執行限定的光柵操作，並按特定要求伸長或壓縮圖標或光標。

函數原型：B00L DrawlconEX（HDC hdc，int xLeft，int yTOp，HICON hlcon，int cxWidth，int cyWidth UINT isteplfAniCur,HBRUSH hbrFlickerFreeDraw,UINT diFlags）；

參數：

hdc：窗口設備上下文的句柄。

xLeft：指定目標或光標左上角的邏輯x坐標。

yTop：指定圖標或光標左上角的邏輯y坐標。

hlcon:被繪製圖標的句柄，該參數可標識一個激活的光標。圖標或光標資源必須已經通過Loadlmage函數被裝載過。這參數能識別激活的光標。

cxWidth:指定圖標或光標的邏輯寬度。如果其值為零且diFlags參數是DI_DEFAULTSIZE；函數使用SM_CXICON或_CXCURSOR系統公制值設置寬度；如果其值為零且不使用DI_DEFAULTSIZE，函數使用資源實際寬度。

cyWidth:指定圖標或光標的邏輯高度。如果其值為零且diFlags參數是DI_DEFAULTSIZE，函數使用SM_CYICON或SM_CYCURSOR系統公制值設置高度；如果其值為零且不使用DI_DEFAULTSIZE，函數使用資源實際高isteplfAniCur:如果hlcon標識一個動態光標，參數指定要繪製的幀索引；如果hlcon不標識一個動態光標，該參數被忽略。

hbrFlickerFreeDraw:系統用做閃爍•自由繪圖的刷子句柄。如果hbrFlickerFreeDraw是有效的刷子句柄,系統利用背景顏色刷於創建一個反屏位圖將圖標或光標繪製到位圖中，並將位圖複製到由hdc。標識的設備上下文中。

diFlags：指定繪圖的標記，參數可為下列的值：

DI_COMPAT：系統採用缺省圖像而不是用戶定義的圖像繪製圖標和光標。

DI_DEFAULTSIZE：如果CXWidth和CyWidth參數被設為零，採用系統指定的圖標和光標的的公制寬度和高 度繪製圖標和光標；如果標記未被指定且cxWidth和cyWith參數設為零標，函數使用資源實際大小。

DI_IMAGE：用圖像繪製目標或光標。DI_MASK：用屏蔽繪圖圖標或光標。

DL_NORMAL：DI_IMAGE 與DI_MASKR的組合。

返回值：如果函數成功，返回值是非零；如果函數失效返回值是零。想獲得更多的錯誤信息請調用GetLastError函數。

備註：DrawlconEx。函數將圖標的左上角置於由xLeft和yTop參數指定的位置，該位置受當前設備上下文的映射方式支配。

Windows CE：下列的參數設置必須被使用：

djFlags必須是DI_NORMAL，DI_IMAGE，或DI_MASK（不支持DI_COMPAT and DI_DEFAULTSIZE）。

cxWidth和cyHeight必須是零或圖標的原始尺寸。hbrFlickerFreeDraw必須是NULL。

iSteplfAniCur必須是零，動態圖標不被支援。Windows CE不支援：伸長的和壓縮：也就是說該圖標分辨率對給定的HICON是固定的，不支持國標大小的再調整。映射方式：用DrawlconEx繪製光標時，hlcon參數不能標識動態光標。

速查：Windows NT：31及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：winuser.h；庫文件：user32.lib。


 函數功能：該函數是由應用程序定義的回調函數，該函數與EM_SETWORDBREAKPROC信號一起使用，一個多行編輯控制每當必須中斷文本行時都調用EditwordBreakProc函數。EditwordBreakProc函數定義了一個指向此回調函數的指針，EditwordBreakProc是一個應用程序定義的函數名的佔位符。

函數原型：int CALLBACK EditWordBreakkPrOC（LPTSTR lpCh，int ichCurrent，int CCh int code）；

參數；

Ipch:指向編輯控制文本的指針。

ichCurrent:指定一個文本緩衝區中字符位置的索引，該文本表示函數應該從這點開始檢查字的中斷。

cch:指定編輯控制文本中字符的數目。

code：指定回調函數要採取的措施，此參數可以是下列值之一。

WB_CLASSIFY：檢索指定位置的字符的字中斷標誌和字符類，此值是為與超文本編輯控制一起使用。

WB_ISDECIMITER：檢查在指定位置的字符是否是分隔符。

WB_LEFT：在指定位置的左邊，找到字的開頭。

WB_LEFTBREAK：在指定位置的左邊，找到字的結束分隔符，此值是為與超文本編輯控制一起使用。

WB_MOVEWORDLEFT：在指定位置的左邊，找到字的開頭，此值用於CTRL＋RIGHT使用時，此值是為與超文本編輯控制一起使用。

WB_MOVEWDRDRIGHT：在指定位置的右邊，找到字的開頭，此值用於CTRL＋ROGHT使用時，此值是為與超文本編輯控制一起使用。

WB_RIGHT：在指定位置的右邊，找到字的開頭。（對於右對齊編輯控制很有用）

WB_RIGHTBREAK：在指定位置的右邊找到字結束分隔符，（這對右對齊編輯控制很有用）此值是為與超文本編輯控制一起使用。

返回值：如果代碼參數指定WB_ISDELIMITER，且如果指定位置的字符為分隔符，則返回值為非零（TRUE），否則返回值為零。如果代碼參數指定WB_CLASSIFY，返回值為指定位置的字符類和字符字中斷標誌，否則，返回值為指向文本緩衝區的開頭的索引。

備註：一個回車操作跟著一個換行符，一定被回調函數看作為一個單一的字，緊跟著一個換行符的兩個回車操作也一定被看作為單一字。

一個應用程序必須通過EM_SETWORDBREAKPROC消息中指定回調函數的地址來安裝回調函數。

對於超文本編輯控制，也可用EM_SETWORDBREAKPROCEX消息來取代帶有EditWordBreadProcEx回調函數的缺省擴展字中斷程序，該函數還提供了關於文本的其他信息，如字符集。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持;頭文件：winuser.h；庫文件：用戶自定義。Unicode：定義為Unicode和ANSI兩種原型。


 函數功能：該函數使指定的菜單項有效、無效或變灰。

函數原型：BOOL EnableMenutem（HMENU hMenu，UINT ulDEnablttem，UINT uEnable；

參數

hMenu：菜單句柄。

ulDEnableltem：指定將使其有效、無效或變灰的菜單項，按參數uEnable確定的含義。此參數可指定菜單條、菜單或子菜單裡的菜單項。

uEnable：指定控制參數uIDEnableltem如何解釋的標誌，指示菜單項有效、無效或者變灰。此參數必須是MF_BYCOMMAND或MF_BYPOSITION，MF_ENABLED和MF_DISABLE或MF_GRAYED的組合。

MF_BYCOMMAND：表明參數uIDEnableltem給出了菜單項的標識符。如果MF_BYCOMMAND和MF_POSITION都沒被指定，則MF_BYCOMMAND為缺省標誌。

MF_BYPOSITION：表明參數uIDEnableltem給出了菜單項的以零為基準的相對位置。

MF_DISABLED：表明菜單項無效，但沒變灰，因此不能被選擇。

MF_ENABLED：表明菜單項有效，並從變灰的狀態恢復，因此可被選擇。

MF_GRAYED：表明菜單項無效並且變灰，因此不能被選擇。

返回值：返回值指定菜單項的前一個狀態（MF_DISABLED，MF_ENABLED或MF_GRAYED）。如果此菜單項不存在，則返回值是OXFFFFFFFF。

備註：一個應用程序必須用MF_BYPOSITION來指定正確的菜單句柄。如果菜單條的菜單句柄被指定，頂層菜單項（菜單條上的菜單項）將受到影響。若要根據位置來設置下拉菜單中的菜單項或子菜單的狀態，應用程序指定下拉菜單或子菜單的句柄。當應用程序指定MF_BYCOMMAND標誌時，系統在由指定菜單句柄標識的菜單裡選取那些打開了子菜單的菜單項。因此除非要複製菜單項，指定菜單條的句柄就足夠了。函數InsertMenu，InsertMenultem，LoadMenulndirect，ModifyMenu和SetMenultemlnfo也可設置菜單項的狀態（有效、無效或變灰）。Windows CE：Windows CE不支持參數uEnable取MF_DISABLED標誌。如果沒有變灰，菜單項不能無效。要使菜單項無效，用MF_RAYED標誌。

速查：Windows NT：3.1及以上版本;Windows：95的及以上版本；Windows CE：1.0及以上版本；頭文件：winuser.h；輸入庫：user32.lib。


 函數功能：該函數清除一個模態對話框,並使系統中止對對話框的任何處理。

函數原型：BOOL EndDialog(HWND hDlg,int nResult);

參數：

hDlg：表示要被清除的對話框窗口。

NResult：指定從創建對話框函數返回到應用程序的值。

返回值：如果函數調用成功，則返回值為非零值；如果函數調用失敗則返回值為零。若想獲得錯誤信息請調用GetLastError函數。

備註：由DialogBox，DialogBoxParam、DialogBoxlndirect和DialogBoxlndirectParam函數創建的對話框一定要用EndDialog函數來清除。應用程序從對話框應用程序內部調用EndDialog函數，該函數不能為其他目的而供使用。對話框應用程序可以在任何時間調用EndDialog函數；甚至在WM_INITDIALOG消息處理過程中。如果應用程序在WM_INTDIALOG消息處理過程中調用該函數，則對話框在顯示和輸入焦點被設置之前對話框被清除。EndDialog函數並不立即清除對話框。而是設置一個標誌，並且允許對話框應用程序把控制權返回系統。系統在試圖從應用程序隊列檢索下一個消息之前檢測標誌。如果已經設置了標誌則系統中止消息循環,清除對話框,且用nResUlt中的值作為從創建對話框的函數中返回的值。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：winuser.h；庫文件：user32.lib。


 函數功能：該函數終止在可執行文件中的資源更新。

函數原型：BOOL EndUpdateResource（HANDLE hUpdate，BOOL fDiscard）；

參數：

hUpdate：用於資源更新的句柄。此句柄通過BeginUpdateResource函數返回。

fDiscard：用來說明是否向可執行文件中寫入資源更新內容。如果此參數為TRUE，則在可執行文件中無變化；如果此參數為FALSE，則在可執行文件中寫入變化。

返回值：如果函數運行成功，並且通過調用UpdateResource函數指定的不斷積聚的資源修正內容被寫入指定的可執行文件，那麼其返回值為非零。如果函數運行失敗，其返回值為零。若想獲得更多的錯誤信息，請調用GetLastError函數。

速查：Windows NT 3.1以上，頭文件：winbase.h；庫文件：kernel32.lib，Unicode：在Windows NT上實現為Unicode和ANSl兩種版本。


 函數功能：該函數是由應用程序定義的，與函數EnumChildWindows一起使用的回調函數。它接收子窗口句柄。類型WNDENUMPROC定義了一個指向回調函數的指針。EnumChildProc是一個應用程序定義的函數名的位置標誌符。

函數原型：BOOL CALLBACK EnumChildProc（HWND hwnd，LPARAM ItParam）；

參數：

hwnd：指向在EnumChildWindows中指定的父窗口的子窗口句柄。

Lparam：指定在EnumChildWindows函數給出的應用程序定義值。

返回值：為繼續枚舉，回調函數必須返回TRUE；為停止枚舉，回調函數必須返回FALSE。

備註：回調函數可以執行任何要求的任務。

應用程序必須通過將其地址傳送給EnumChildWindows函數來註冊這個回user.h；庫文件：用戶自定義。


 {dwThreadld,WNDENUMROCIpfn,LPARAMIPam};

參數：

dwThreadld:標識將被列舉窗口的線程。

lpfn：指向一個應用程序定義的回調函數指針，請參看EnumThreadWndProc。

IPararm:指定一個傳遞給回調函數的應用程序定義值。

返回值：如果函數成功，返回值為非零；如果函數失敗，返回值為零。若想獲得更多錯誤信息，請調用GetLastError函數。

速查：Windows NT：3.1以上版本；Windows：95以上版本；Windows CE：不支持：頭文件：winuser.h；庫文件：user32.Iib。


 函數功能：該函數將窗口屬性表中的所有項列舉出來，一個一個地傳送給指定的回調函數，直到列舉到最後一項，或者回調函數返回FALSE為止。

函數原型：int EnumProps（HWND hWnd，PROPENUMPROC lpEnumFunc）；

參數：

hWnd：指向要列舉屬性表內容的窗口。

lpEnumFunc：指向回調函數的指針。有關回調函數方面更多的信息，可參考PropEnumProc函數。

返回值：返回值指定了回調函數返回的最後一個值、如果函數沒有發現要列舉的屬性，那麼它返回-1。

備註：應用程序只能刪除它增加進去的那些屬性。它無法刪除其他應用程序加進去的或者系統本身的屬性。

速查：Windows NT：3.1以上版本：Windows：95以上版本；Window CE：不支持；頭文件：winuser.h；庫文件：user32.lib；Unicode：在Windows NT環境中以Unicode和ANSI版本實現。


 函數功能：該函數將窗口屬性表中的所有項列舉出來，依次傳送給指定的回調函數，直到列舉到最後一項，或者回調函數返回FALSE為止。

函數原型：int EnumPropsEx（HWND hWnd，PROPENUMPROCEX lpEnumFunc，LPARAM IParam）；

參數：

hWnd：指向要列舉屬性表內容的窗口。

lpEnumFunc：指向回調函數的指針。有關目調函數方面更多的信息，可參考PropEnumProcEx函數。

IParam：包含應用程序定義的、要傳送給回調函數的數據。

返回值：返回值指定了回調函數返回的最後一個值。如果函數沒有發現要列舉的屬性，那麼它返回-1。

備註：應用程序只能刪除它增加進去的那些屬性。它無法刪除其他應用程序加進去的或者系統本有的屬性。

速查： Windows NT：3.1以上版本；Windows：95以上版本；Windows CE：不支持：頭文件：Winser.h；庫文件：user32.lib：URIC0d6：在Windows NT環境中以Unicode和ANSI版本實現。


 函數功能：該函數是一個用戶定義的和EnumResourceLanguages函數一起使用的回調函數。它接收資源語言。ENUMRESLANGPROC類型定義指向該響應函數的指針。EnumResLangProc是用戶定義的函數名稱的佔位符。

函數原型：BOOL CALLBACK EnumResLangProc（HANDLE hModule，LPCTSTR IPszType， LPCTSTR IpszName，WORDwlDLanguage，LONG IParam）；

參數：

hModule：處理那些包含著被列舉術語資源的可執行文件的模塊。如果這個參數為空，函數將在模塊中列出在建當前過程時所用的資源術語。

lpszType：指向一個以NULL為結束符的字符串，字符串指定了那些被列舉的語句資源的類型名。作為標準的資源類型，此參數可以為下列值，含義如下：

RT_ACCELERATOR：加速器表；RT_ANICURSOR：動態光標；

RT_ANIICON：動態圖標；RT_BITMAP：位圖資源；

RT_CURSOR：由硬件支持的光標資源；DI_DIALOG：對話框：

RT_FONT：字體資源；RT_FONTDIR；字體目錄資源；

RT_GROUP_CURSOR：與硬件無關的光標資源；

RT_GROUP_ICON：與硬件無關的目標資源；

RT_HTML：HTML文檔；RT_ICON：由硬件支持的圖標資源：

RT_MENU：菜單資源；RT_MESSAGETABLE：消息表的入口；

RT_PLUGPLAY：即插即用資源；

RT_RCDATA：應用定義資源（原始數據）：RT_STRING字符表入口；

RT_VERSION：版本資源：RT_VXD：VXD。

lpszName：指向一個以NULL為結束符的字符串，字符串說明了在資源中被列舉出術語的名稱。

wlDLanguage：指定了在資源中被列舉出語句的標識符。EnumResourceLanguages函數提供了這一值。有關原始的語句標識符和由標識符組成子句標識符的列表可以詳看MAKELANGID。

IParam：指定將應用定義的參數傳遞給EnumResourceLanguages函數，此參數將被用於錯誤檢查。

返回值：此響應函數返回值為TRUE時將繼續列舉：否則，當返回值為FALSE時將停止列舉。

注意：應用程序必須通過向EnumResourceLanguages函數傳遞這個函數的地址來註冊。

速查：Windows NT 3.1、Windows 95以上，頭文件：winbase.h；庫文件：由用戶定義。


 函數功能：該函數是一個用戶定義的和EnumResourceNames函數一起使用的回調函數。ENUMRESNAMEPROC類型定義一個指向該回調函數的指針。EnumResNameProc是用戶定義函數名的佔位符。

函數原型：BOOL CALLBACK EnumResNameProc（HANDL hModue.LPCTSTR haszTyPe，LPTSTR IPszName，LONGIParam）；

參數:

hModule：處理包含被列舉資源文件名的可執行文件的模塊。如果這個參數為NULL，那麼函數將在模塊中列舉出創建當前過程的資源名稱。

lpszType：指向以NULL為結束符的字符串，它指定了被列舉出的資源類型名稱。作為標準類型，這個參數的含義同EnumResLangProc\lpszType。

lpszName：指向以NULL為結束符的字符串，它指定了被列舉出的資源名稱。

IParam：指定傳遞給EnumResourceNames函數的應用程序定義的參數，此參數用於錯誤檢查。

返回值：此響應函數返回值為TRUE時將繼續列舉；否則，當返回值為FALSE時將停止列舉。

注意：應用程序必須通過向EnumResourceNames函數傳遞這個函數的地址來註冊。

速查：Windows NT 3.1、Windows 95以上，頭文件：winbase.h；庫文件：由用戶定義。


 函數功能：該函數為每個指定類型和名稱的資源搜索模塊，並且向定義的回調函數傳遞所搜尋到的每種資源語言。

函數原型；BOOL EnumResourceLanguages（HMODULE hModule，LPCTSTR lpType，LPCTSTR IpName，ENUMRESthNGPROC lpEnumFunc，LONG IParam）；

參數：

hModule：處理包含被列舉語言資源的可執行文件的模塊。如果這個參數為NULL，那麼函數將在模塊中列舉出創建當前過程的語言資源。

lpType：指向以NULL為結束符的字符串，它指定了被列舉出的語言資源類型。作為標準類型，這個參數的含義同EnumResLangProc\lpType。

IpName：指向以NULL為結束符的字符串，它指定了被列舉出的語言資源名稱。

IpEnumFunc：指向所需要每個列舉出的語言資源的響應函數。如要瞭解更多的信息請參見

EnumResLangProc。

IParam：指定一個申請定義參數值傳遞給響應函數，此參數可以用來錯誤檢查。

返回值：若函數運行成功，則返回非零值；若函數運行失敗，則返回零值。若想獲得更多錯誤信息，請調用GetLastError函數。

注意：EnumResourceLanguages函數將連續列舉出語言資源，直到響應函數返回False值或全部的語言資源均被列舉完畢。

速查：Windows NT 3.1、 Windows 95以上，頭文件：winbase.h；庫文件：kernel32.lib；Unicode：在Windows和Winaows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數為每個指定類型的資源搜尋模塊，並將每個查找到的資源名稱傳遞給回調函數。

函數原型： BOOL EnumResourceNames（HINSTANCE hModue，LPCTSTR lpszType，ENUMRESNAMEPROC lpEnumFunc，LONG IParam）；參數：

hModule：處理包含被列舉資源名稱的可執行文件的模塊。如果這個參數為NULL，那麼函數將在模塊中列舉出創建當前過程的資源名稱。

lpszType：指向以NULL為結束符的字符串，它指定了被列舉出的資源類型名稱。作為標準類型，這個參數的含義同EnumResLangProc\lpszType。

lpEnumFunc：指向所需要每個列舉出的資源名稱的響應函數。如要瞭解更多的信息請參見EnumResNameProc。

IParam：指定一個申請定義參數值傳遞給響應函數，此參數可以用來錯誤檢查。

返回值：若函數運行成功，則退回非零值；若函數運行失敗，則退回零值。若想獲得更多的錯誤信息，請調用GetLastError函數。

注意：函數將連續列舉出資源名稱，直到響應函數返回False值或全部的資源名稱均被列舉完畢。

速查： Windows NT 3.1、 Windows 95以上，頭文件：winbase.h；庫文件： kernel32.lib；Unicode：在Windows和Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數為資源搜尋模塊並且將它找到的每個資源類型傳遞給用戶定義的回調函數。

函數原型：BOOL EnumResourceTypes（HMODULE hModule，ENUMRESTYPEPROC lpEnumFunc，LONG IParam）；

參數：

hModule：處理包含被列舉資源類型的可執行文件的模塊。如果這個參數為NULL，那麼函數將在模塊中列舉出創建當前過程的資源類型。

lpEnumFunc：指向所需要每個列舉出的資源類型的響應函數。如要瞭解更多的信息請參見

EhumResNameProc。

IParam：指定申請定義值傳遞給響應函數。

返回值：若函數運行成功，則返回非零值；若函數運行失敗，則返回零值。若想獲得更多的錯誤信息，請調用GetLastError函數。

注意：函數將連續列舉出資源名稱，直到響應函數返回False值或全部的資源名稱均被列舉完畢。

速查：Windows NT 3.1、Windows 95以上，頭文件：winbase.h；庫文件：kernel32.lib；Unicode：在Windows和Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數是一個用戶定義的和EnumResourceTypes函數一起使用的回調函數。它接收資源類型。EnumResTypeProc類型定義一個指向這個回調函數的指針。EnumResTypeProc是這個用戶定義函數名稱的佔位符。

函數原型：BOOL CALLBACK EnumResTyPeProc（HANDLE hModue，LPTSTR lpszType，LONG IParam）；

參數：

hModule：處理包含被列舉資源類型的可執行文件的模塊。如果這個參數為NULL，那麼函數將在模塊中列舉出創建當前過程的資源類型。

IpszType：指向以NULL為結束符的字符串，它指定了被列舉出的資源類型。作為標準類型，這個參數的含義同EnumResLangProC＼lpszType。

IParam：指定一個申請定義參數值傳遞給EnumResourceTypes函數，此參數可以用來錯誤檢查。

返回值：若響應函數返回TRUE值則繼續列舉；否則，返回FALSE值時將停止列舉。

注意：應用程序必須通過將函數的地址傳遞給EnumResourceTypes函數來註冊。

速查：Windows NT 3.1、Windows 95以上，頭文件：winbase.h；庫文件：由用戶定義。


 函數功能：該函數已經過時，由EnumThreadwindows函數取代它。


 函數功能：該函數枚舉所有與一個線程相關聯的非子窗口，辦法是先將句柄傳送給每一個窗口，隨後傳送給應用程序定義的回調函數。EnumThreadWindows函數繼續直到所有窗口枚舉完為止或回調函數返回FALSE為止。要枚舉一個特定窗口的所有子窗口，使用EnumChildWindows函數。

函數原型：BOOL EnumThreadWindows（DWORD dwThreadld,WNDENUMPROClpfn,LPARAMlparam）；

參數：

dwThreadld：標識將被列舉窗口的線程。

lpfn：指向一個應用程序定義的回調函數指針，請參看EnumThreadWndProc。

lPararm：指定一個傳遞給回調函數的應用程序定義值。

返回值：如果函數成功，返回值為非零；如果函數失敗，返回值為零。若想獲得更多錯誤信息，請調用GetLastError函數。

速查：Windows NT：3.1以上版本； Windows：95以上版本； Windows CE：不支持：頭文件：winuser.h；庫文件：user32.Iib。


 函數功能：該函數枚舉所有與一個線程有關的非子窗口。辦法是先將句柄傳給每一個窗口，隨後傳送給應用程序定義的回調函數。EnumThreadWindows函數繼續到所有窗口枚舉完為止或回調函數返回FALSE為止。要枚舉一個特定窗口的所有子窗口；使用EnumChjdwjndows函數。

函數原型：BOOL EnumThreadWindows{D函數功能：該函數銷毀指定的窗口。該函數發送WS_DESTROY，WS_NCDESTROY消息到窗口中以撤消該窗口並且將鍵盤焦點移開。該函數也銷毀窗口菜單，刷新線程消息隊列，銷毀計時器，刪除剪貼板的所有權，並斷開剪貼板視窗鏈接（如果窗口在視窗鏈接的頂端）。

如果指定的窗口是父窗口或所有者窗口，DestroyWindow在銷毀父窗口或所有者窗口時自動銷毀相關的子窗口和從屬窗口。該函數首先銷毀相關聯的子窗口和從屬窗口，然後銷毀父窗口和所有者窗口。

DestroyWindow也銷毀由CreateDialog函數創建的無模式對話框。

函數原型： BOOL DestroyWindow（HWND hWnd）；

參數：

hWnd；將被銷毀窗口的句柄。

返回值：如果函數成功，返回值為非零；如果函數失敗，返回值為零。若想獲得更多錯誤信息，請調用GetLastError函數。

備註：一個線程不能用DestroyWindow函數銷毀由其他線程創建的窗口。

如果被銷毀窗口是一個不具有 WS_EX_NOPARENTNOTIFY風格的子窗口，則其父窗口將接收到一個WM_PARENTNOTIFY消息。

Windows CE：DestroyWindow函數不發送 WM_NCDESTROY消息。

速查：Windows NT：3.1以上版本；Windows：95以上版本；Windows CE：1.0以上版本：頭文件：Winuser.h；庫文件：user32.lib。


 函數功能：該函數是一個與EnumWindows或EnumDesktopWindows一起使用的應用程序定義的回調函數。它接收頂層窗口句柄。WNDENUMPROC定義一個指向這個回調函數的指針。EnumWindowsProc是應用程序定義函數名的位置標誌符。

函數原型：BOOL CALLBACK EnumWindowsProc（HWND hwnd，LPARAM IParam）；

參數：

hwnd：頂層窗口句柄。

lParam：指定在EnumWIndowsh或EnumDesktopWindows中的應用程序定義值。

返回值：為繼續列表，回調函數必須返回TRUE；若停止列表，它必須返回FALSE。

備註：應用程序必須通過傳遞給EnumWindows或EnumDesktopWindows應用程序地址來註冊這個回調函數。

速查：Windows NT：3.1以上版本；Windows：95以上版本；Windows CE：1.0以上版本：頭文件：winuser.h；庫文件：用戶自定義。


 函數功能；該函數返回存在於文件中的索引圖標或存在於相關聯可執行文件中的圖標句柄。

函數原型：HICON ExtractAssociatedlcon（HINSTANCE hlnst，LPTSTR lplconPath）；

參數：

hlnst：指定調用函數的應用程序的事例。

lplconPath：包含圖標文件的全稱路徑和文件名的指針，函數從文件或者與該文件相關聯的可執行文件中抽取圖標句柄。如果目標句柄是從可執行文件獲得，函數將可執行文件的全稱路徑和文件名存儲到lplconPath 指定的字符串中。

Ipilcon：指定要被獲取的目標句柄索引的字指針；如果圖標句柄從可執行文件獲得，函數將圖標的標識符存儲於Ipilcon指定的字中。

返回值：如果函數成功，返回值是有效的圖標句柄。如果圖標來自相關的可執行文件，函數將其全稱路徑和文件名存儲到IplconPath指定的字符串中，並將圖標識符存儲於Ipilcon指定的字中。如果函數失效返回值是NULL。

備註： EXtr8CtAssociatedlcon函數首先按 IplconPath指定的文件查找索引圖標，如果函數不能從該文件獲得圖標句柄，且該文件有關聯的可執行文件，它便從可執行文件中搜索圖標。可執行文件的關聯基於文件的擴展名，存儲於每用戶的註冊表中，並可被資源管理器中的關聯命令所定義。

速查： Windows NT：3.5及以上版本； Windows：95及以上版本；Windows CE：不支持：頭文件：shellaoi.h；庫文件：shell32.lib；Unicode：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數從限定的可執行文件，動態鏈接庫（DLL）；或者圖標文件中恢復圖標句柄．為恢復大或小的圖標句柄數組，使用ExtractlconEx函數。

函數原型：HICON EXtractlcon（HINSTANCE hlnst，LPCTSTR lpszExeFileName，UINT nlconlndex）；

參數：

hlnst：調用函數的應用程序的事例句柄。

IpszExeFileName:代表可執行文件，DLL，或者圖標文件的文件名的空結束字符串指針。

nlconlndex:指定要恢復圖標基於零的變址。例如，如果值是0,函數返回限定的文件中第一個圖標的句柄，如值是O函數返回限定文件中圖標的總數；如果文件是可執行文件或DLL返回值為RT_GROUP_ICON資源的數目:如果文件是一個.ICO文件，返回值是1；在Windows95，WindowsNT4.0和更高版本中，如果值為不等於向-l的負數，函數返回限定文件圖標句柄，該文件的資源標識符等於nlconlndex絕對值。例如，使用-3來獲取資源標識符為3的圖標。為獲取資源標識符為1的圖標，可採用ExtractlconEx函數。

返回值：返回值是圖標句柄。如果限定的文件不是可執行文件，DLL，或者圖標文件返回是1；如果發現在文件中沒有圖標，返回值是NULL。

備註：必須調用Destroyclon函數來清除由Extractlcon函數返回的圖標句柄。

速查：Windows NT：3.1及以上版本；Windows:95及以上版本；Windows CE:不支持;頭文件：shellapi.h;庫文件：shell32.lib;Unicode:在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數從限定的可執行文件；動態鏈接庫（DLL），或者圖標文件中生成圖標句柄數組。

函數原型：UINT EXtractlcohEX（LPCTSTR IpSZFile，int nlconlndex,HICON FAR*PhiCORLarge，HICON FAR'*phiconSmall,UINT nlcons）；

參數：

IpszFile:定義可獲取圖標的可執行文件，DLL,或者圖標文件的名字的空結束字符串指針。

nlconlndex:指定抽取第一個圖標基於零的變址；例如，如果該值是零；函數在限定的文件中抽取第一圖標；如該值是C1且phlconLarge和phiconSmall參數均為NULL，函數返回限定文件中圖標的總數；如果文件是可執行文件或DLL；返回值是RT_GROUP_ICON資源的數目；如果文件是一個ICO文件，返回值是1；在Windows95，WindowsNT4.0,和更高版本中，如果值為負數且phlconLarge和phiconSmall均不為NULL，函數從獲取圖標開始，該圖標的資源標識符等於nlconlndex絕對值。例如，使用-3來獲取資源標識符為3的圖標。

phiconLarge:指向圖標句柄數組的指針，它可接收從文件獲取的大圖標的句柄。如果該參數是NULL沒有從文件抽取大圖標。

phiconSmall：指向圖標句柄數組的指針，它可接收從文件獲取的小圖標的句柄。如果該參數是NULL，沒有從文件抽取小圖標。

nlcons:指定要從文件中抽取圖標的數目。

返回值：如果nlconlndex參數是-1，PhiconLarge和PhiconSmall參數是NULL，返回值是包含在指定文件中的圖標數目；否則，返回值是成功地從文件中獲取圖標的數目。

備註：必須調用Destroylcon函數來清除由ExtractlconEx函數返回的圖標。為恢復大小圖標尺寸,可使用SM_CXICON,SM_CYICON,SM_CXSMICON,SM_CYSMICON標記來調用GetSystemMetrics函數。

Windows CE：nlconlndex參數必須是零或CN（N是指定的資源標識符）；nlcons參數必須是1。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：shellspi.h；庫文件：shell32.lib；Unicodg：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數確定指定模塊中指定類型和名稱的資源所在位置。

函數原型：HRSRC FindResource（HMODULE hModule，LPCTSTR lpName，LPCTSTR lpType）；

參數：

hModule：處理包含資源的可執行文件的模塊。NULL值則指定模塊句柄指向操作系統通常情況下創建最近過程的相關位圖文件。

lpName：指定資源名稱。若想瞭解更多的信息，請參見注意部分。

lpType：指定資源類型。若想瞭解更多的信息，請參見注意部分。作為標準資源類型。這個參數的含義同EnumResLangProc\lpType。

返回值：如果函數運行成功，那麼返回值為指向被指定資源信息塊的句柄。為了獲得這些資源，將這個句柄傳遞給LoadResource函數。如果函數運行失敗，則返回值為NULL。若想獲得更多錯誤信息，請調用GetLastError函數。

注意：如果參數lpType或lpName的高字節為O，那麼其低字節中所給定的資源的類型或名稱標識說明。另外，這些參數指向以NULL為終止符的字符串。字符串的第一個字符是＃，後面的字符表示十進制數來表示源類型或名稱的整數標識符。例如。字符串"#258"表示整數標識符258。

如果用整數標識符替代名稱提交資源，用程序將減少所需的內存容量。

當使用完加速器表，位圖，光標，圖標，或是菜單後，可以通過調用下表所列舉的函數釋放內存。加速器表：DestroyAcceleratorTable；位圖：DeleteObject；光標：DestroyCursor；圖標：Destroylcon；菜單DestroyMenu。

當過程創建資源終止時，系統將自動刪除這些資源。然而通過調用適當的函數可以保留內存，減少過程中工作設置所需的空間大小。

應用程序可以使用FindResource函數去查找任何種類資源，但是這個函數只有在應用程序並發調用LoadLibray和LockResource函數來存取二進制資源時才被使用。

如果想立即使用某一資源，應用程序將使用下面詳細資源函數列表中某一函數去查找裝載所需資源，FormatMessage：裝裁且格式化信息表接口：LoadAccclerators：裝載加速器表；LoadBltmap：裝載位圖資源；LoadCursor：裝載光標資源；Loadlcon：裝載圖標資源；

LoadMenu：裝載菜單資源；LoadString：裝載字符串表資源。

例如，應用程序可以使用Loadlcon函數裝載某一圖標以在屏幕上顯示。但是，如果是裝載某一圖標為了將它的數據複製到另一個應用程序中，那麼這個應用程序就應該使用FindResource和LoadResource函數。

字符串資源存儲在由若幹部分組成的某區域，每部分有16個字符串。每部分的字符串是按統一計數方式排列的有序隊形式存儲的。

TheLoadstring函數將從相應的區域中摘取字符串資源。

參數hModule不能為NULL句柄。

參數lpName不支持ID為零的資源，即FindResource（h，o，t）不能按預期工作。

不可能在IpTyPe參數中傳遞RT_ANICURSOR或RT_ANllCON的值。

速查：Windows NT3.1、Windows95、Windows CE1.0以上，頭文件：winbase.h；庫文件：kerne132.lib；Unicode；在Windows和Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數確定指定模塊中指定類型、名稱及語言的資源所在位置。

函數原型：HRSRC FindResourceEx（HXODULE hModule，LPCTSTR lpType，LPCTSTR lpName，WORD wLanguage）；

參數：

hModule：處理包含資源的可執行文件的模塊。如果參數值為NULL，則函數搜索曾經創建的最近過程的模塊。

lpType：指向以NULL為結束符的字符串，它指定了被列舉出的資源類型名稱。若要瞭解更多的信息，請參見注意部分。作為標準類型，這個參數取值同EnumResLangProc\lpType。

lpName：指向說明資源文件名稱並以NULL為結束符的字符串。若要瞭解更多的信息，請參見注意部分。

WLanguage：指明語言資源。若此參數為MAKELANGID（LANG_NEUTRAL，SUBLANG_NEUTRAL），則為了指定零一種語言，可以使用宏創建這個參數。更多的信息請參見MAKELANGID。

返回值：如果函數運行成功，其返回值是一個指定資源信息塊的句柄。為了獲得資源，要將此句柄傳遞給LoadResource函數。如果函數運行失敗，返回值為空。若想獲得更多的錯誤信息，請調用GetLastError函數。

速查：Windows NT 3.1、Windows 95以上，頭文件：winbase.h；庫文件：kernel32.lib； Unicode：在Windows和Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數創建一個系統定義的無模式Find對話框，為使用戶指定一個串來查找文本內的文字。

函數原型：HWND FindText（LPFINDREPLACE lpfr）；

參數：

Ipfr：指向一個FINDEPLACE結構，此結構包含用來初始對話框的信息。對話框用此結構把用戶輸入的信息傳送到應用程序。有關更多的信息，請參見下面說明部分。

返回值：如果函數調用成功，返回值是對話框的窗口句柄。可以使用窗口句柄與對話框聯繫或關閉它；如果函數調用失敗，返回值為NULL。若想獲得更多的錯誤信息，請調用CommDlgExtendedError函數。其返回值如下：

CDERR_FINDRESFAILURE；CDERR_MEMLOCKFAILURE；CDERR_INITIALIZATION

CDERR_NOHINSTANCE；CDERR_LOCKRESFAILURE；CDERR_NOHOOK

CDERR_LOADRESFAILURE；CDERR_NOTEMPLATE；CDERR_LOADSTRFAILURE

CDERR_STRUCTSIZE；CDERR_MEMALLOCFAILURE；FRERR_BUFFERLENGTHZERO

備註：FindText函數不執行查找操作，相反，對話框把FINDMSGSTRING己登記的信息傳送到對話框窗口的窗口函數。當創建對話框時FINDReplace結構中的hwndCwner成員標識窗口。

調用Find Text函數前，必須調用RegisterWindowMessage函數以得到FINDMSGSTRING信息的標識符，對話框函數在用戶點擊FindNext按鈕或對話框被關閉時利用此標識符傳送信息。FINDMSGSTRING信息的IParam參數包含一個指向FINDREPLACE結構的指針，此結構的Flags成員顯示開誠信息的事件。

其他成員顯示用戶的輸入。

若想創建對話框，必須利用應用程序的主信息鏈中的IsDialogMessage函數來保證對話框正確處理鍵盤輸入，例如Tab和Esc鍵。IsDialogMessage返回值顯示Find對話框是否處理信息。

可以為Find對話框提供一個掛鉤函數FRHookProc。掛鉤函數可處理發送到對話框中的信息。為使掛鉤函數生效，可設置HNDREPLACE結構的Flags成員的FR_ENABLEHOOK標誌，且指定IpfnHook成員中掛鉤函數的地址。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：commdlg.h；庫文件：comdlg32.lib；Unicode：在Windows NT環境中實現為Unicode和ANSI兩個版本。


 函數功能：該函數已過時。它為16位的基於Win32的應用程序提供了一個簡單的端口。對於Win32應用程序（32位）沒有必要釋放用LoadResource函數裝載資源。由LoadResource所獲得的資源隨著被裝載模塊的卸載自動被釋放。但是，為了保留內存減少的程序工作設置所佔空間大小，必須通過調用下列表中的函數以釋放加速器表、位圖、光標、圖標以及菜單所佔的內存資源。

加速器表：DestroyAcceleratorTable；位圖：DeleteObject；光標：DestroyCursor；

圖標：Destroylcon；菜單：DestroyMenu。


 函數功能：該函數是由應用程序定義或庫定義的回調函數。它和FindText函數或Replace Text函數一定使用。掛鉤函數接收用於Find或Replace公共對話框的缺省對話框函數的消息和通告。

LPFRHOOKPROC類型定義了一個指向此回調函數的指針，FRHookProc是一個應用程序定義的函數名的位置持有者。數原型：UINT CALLBACK FRHookProc（HWND hdlg，UINT uiMsg WPARAM wParam，LPARAM IParam）；

參數：

hdlg：指向消息所傳送到的Find或Replace公共對話框窗口的句柄。

uiMsg：指定有放的消息。

wParam：指定有關消息的另外的信息，精確的意義要根據uiMsg參數的值來定。

IParam：指定有關消息的另外的信息，精確的意義要根據uiMsg參數的值來定。如果uiMsg參數表明WM_INItDIALOG消息。IParam是一個指向FINDREPLACE結構的指針，該結構包含公共對話框創建時指定的值。

返回值：如果掛鉤函數返回零，缺省對話框函數處理消息；如果掛鉤函數返回非零值，缺省對話框函數忽略消息。

備註：當用FindText，或ReplaceText函數創建一個Find或Replace公共對話框時，可提供一個處理與公共對話框函數有關的信息和通告的FRHookProc掛鉤函數。為使掛鉤函數生效，應用傳送到公共創建函數的FINDREPLACE結構且指定IpfnHook成員中掛鉤函數的地址和指定Flags成員中FR_ENABLEHOOK標誌的地址。缺省對話框函數處理WM_INTTDIALOG消息後，把它傳遞給掛鉤函數，對於其他所有消息，掛鉤函數首先接收消息，然後掛鉤函數的返回值決定缺省對話框函數是處理消息或忽略它。如果掛鉤函數處理WM_CTLCOLORDLG消息，那麼必須返回一個有效的刷子句柄，以便繪製對話框的背景。總之如果掛鉤函數處理任何一種WM_HLOLOR信息，那麼必須返回一個有效的刷子句柄以繪製指定控制的背景。

不須從掛鉤函數調用EndDialog函數。相反，掛鉤函數能調用PostMessage函數把帶有IDABORT值的一個WM_COMMAND信息傳送給對話框函數Posting IDABORT關閉對話框，使對話框函數返回FALSE值，若要瞭解為什麼掛鉤函數關閉對話框，必須提供掛鉤函數和應用程序之間的聯繫機理。

可以對公共對話框的標準控制面板進行子分類。但是公共對話框函數也可以對控制面板進行子分類。正因如此，必須在掛鉤函數函數WM_INTDIALDG消息時對控制面板子分類。這就保證對話框函數設置子分類函數之前，子分類函數接收指定的控制消息。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；windows CE：不支持；頭文件：commdlg.h；庫文件：用戶自定義。


 函數功能：該函數可以獲得與調用線程的消息隊列相關的活動窗口的窗口句柄。

函數原型：HWND GetActiveWindow（VOID）

參數：無。

返回值：返回值是與調用線程的消息隊列相關的活動窗口的句柄。否則，返回值為NULL。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：winser.h; 庫文件：user32.lib。


 函數功能：該函數獲得有關窗口類的信息，包括與窗口類相關的小圖標的句柄的信息。GetClasslnfo函數不檢索小圖標的句柄。

函數原型：BOOL GetClasslnfoEx（HINSTANCE hlnst，LPCTSTR lpszClass，LPWNDCLASSEX lpwcx）；

參數 ：

hlnst：創建類的應用程序的事例的句柄。獲得由系統定義的類（如按鈕或列表框）的信息，設置該參數為NULL。

IpszClass ：指向一個包含類名的空結束的字符串的指針。類名必須為事先己註冊的類，或是由此前調用 RegisterClaaEx 函數註冊的類。或者還可以是一個整型數，如果參數是一個整型數，它必須是由以前調用GlobaAdd原子函數創建的全局原子。這個16位整型數小於OXCOOO，必須是lpszClassS的低16位，其高位字為 0。

Ipwcx：指向接收類信息的WNDCLASSEX結構的指針。

返回值：如果函數未發現一個匹配的類，並且成功地拷貝了數據，則返回值為0。若想獲得更多錯誤信息，請調用 GetLastError函數。

速查：Windows NT：35以上版本；Windows：95以上版本：Windows CE：不支持；頭文件：winuser.h；庫文件：user32.lib；Unicode: 在Windows NT 上實現為Unicode和ANSI兩種版本。


 函數功能：該函數獲得有關一個窗口類的信息。GetClasslnfo函數已經由GetClasslnfoEx取代，但是如果不需要獲得類的小圖標信息．仍然可以使用該函數。

函數原型：BOOL GetClasslnfoEx（HINSTANCE hlnstance,LPCTSTR lpClassName, LPWNDCLASS lpWndClass）；

參數：

hlnstance：創建該類的應用程序的事例句柄。要獲得由系統定義的類的信息（例如按鈕和列表），將該參數設為NULL。

lpClassName：指向一個包含類名的空結束的字符串的指針。類名必須為事先註冊的類，或是由此前調用RegisterClassEx函數註冊的類。或者還可以是一個整型數原子，如果參數是一個整型數原子，它必須是由以前調用GlobalAdd原子函數創建的全局原子。這個16位整型數小於OxCOOO，必須是lpszClass的低16位，高位字必須為0。

lpWndClass：指向一個接收類信息的一個WNDCLASS結構的指針。

返回值：如果函數發現了一個匹配的類並且成功地拷貝了字符串，則返回值為非零；如果函數失敗，返回值為0。若想獲得更多錯誤信息，請調用GetLastError函數。

備註：在Windows CE中，如果lpClassName是一個原子，則它必須是從函數RegisterClass返回的原子。


 函數功能：該函數返回系統的對話基本單位，該基本單位為系統字體字符的平均寬度和高度。對於使用系統字體的對話框，可以用這些值在對話框模板之間轉換，比如在對話框模板和像素之間。對於不使用系統字體的對話框，從對話框模板單位到像素的轉換要根據對話框使用的字體而定。對於對話框的其中一種類型用MaPDialogRect函數很容易地來執行轉換,MaPDialogRect考慮字體且正確的把一個長方形模板單位轉換為此像素。

函數原型：LONG GetDialogBaseUnits（VOID）；

參數：無。

返回值：返回值為一個32位的含有對話基本單位的值。返回值的低位字含有水平對話框基本單位，且高低位字含有垂直對話框基本單位。

備註：GetDialogBaseUnits函數返回的水平基本單位同系統字體中字符以像素為單位的平均寬度相等；垂直基本單位同系統字體中字符的以像素為單位的平均高度相等； 對於一個沒有使用系統字體的對話框基本單位相等於對話框字體字符以像素為單位的平均寬度和平均高度。可以用GetTextMetrics和GetTextExtentPoint32函數為一個選擇的字體來計算這些值。但是,如果計算結果與那些通過系統執行的值不同，那麼可以用MapDialogRect函數避免可能發生的錯誤。每一個水平基本單位同四個水平對話框模板單位相等；每一個垂直基本單位同八個垂直對話框模板單位相等。所以用下列公式來把對話框模板單位轉換為像素：

PiselX=（temptateunitX★baseunitX）/4;PiseIY=（templateunitY★baseunitY）/8

同樣地．用下列公式來把像素轉換為對話框模板單位：templateunitX=(pixelX★4)/baseunitX;templateunitY=(plxelY★8)/baseunitY

Windows CE：Windows CE不支持此函數的任何一個擴展的錯誤值。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows：1.0及以上版本；頭文件：Winuser.h;庫文件：user32.lib


 函數功能：該函數返回指定控制的標識符。

函數原型：Int GetDlgCtrllD（HWND hwndCtl）；

參數：

hwndCtl:標識控制的句柄。

返回值：如果函數調用成功，則返回值為控制的標識符，如果函數調用失敗,則返回值為零。例如,hwndCtl參數的一個無效的值將導致函數失敗。若想獲得更多錯誤信息，請調用GetLastError函數。

備註：GetDlgCtrllD函數接收子窗口句柄和對話框中的控制句柄。當應用程序調用CreateWindow或CreateWindowEx函數，通過把標識符的值設置為hmenu參數來創建窗口時，應用程序為了窗口句柄設置標識符。如果hwndCtrl標識一個頂層窗口儘管GetDlgCtrllD可以返回一個值,但頂層窗口不能有標識符且這樣的返回值從不生效。windows CE：標識符僅對子窗口有效。標識符叫以通過把作為hwndCtrl參數中的標識符傳遞到CreatewindowEx函數來設置，它也可以通過調用帶有設置為GWL_ID的nlndex參數的SetwindowLong和GetWindowLong函數來設置和檢索。

速查：Windows NT:3.1及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：winuser.h;庫文件：user32.lib。


 函數功能：該函數檢索指定的對話框中的控制句柄。

函數原型：HWND GetDlgltem(HWND hDlg,int nlDDlgltem);

參數：

hDlg:標識含有控制的對話框。

nlDDlgltem:指定將被檢索的控制標識符。

返回值：如果函數調用成功則返回值為給定控制的窗口句柄。如果函數調用失敗，則返回值為NULL，表示為一個無效的對話框句柄或一個不存在的控制。若想獲得更多錯誤信息，請調用GetLastError函數。

備註：可以通過使用任何父子窗口對來使用GetDlgltem函數，而不僅只是對話框。只要hDlg參數指定一個父窗口，且子窗口有一個獨立的標識符（象CreateWindow中hMenu參數指定的或創建子窗口的CreateWindowEx指定的那樣），GetDlgltem就會返回一個有效的句柄到子窗口。Windows CE：GetDlgltem函數只為對話框中的直接於控制工作，它不通過嵌套的對話框來搜尋。

速查：Windows NT：3.1及以上版本；Windows:95及以上版本；Windows CE：1.0及以上版本；頭文件：winuser.h;庫文件：user32.lib。


 函數功能：該函數把對話框中指定控制的文本轉變為一個整型值。

函數原型：UINT GetDlgltemlnt(HWND hDlg,int nlDDlgltem,BOOL ★IpTranslated,BOOL bSigned);

參數：

hDlg：指向含有利益控制的對話框的句柄。

nlDDlgltem：指定文本將被轉變的控制的對話項目標識符。

IpTranslated：指向一個Boolean變量的指針。該變量保存函數成功/失敗的值。TRUE表示成功，FALSE表示失敗。此參數為可選的。它可以為NULL。在這種情況下，函數不返回關於成功和失敗的信息。

bSigned：指定函數足否在開始時為一個最小的消息檢測文本,且如果發現一個消息整型值，則返回它。TRUE指定應該這樣做，FALSE指定不應該這樣做。

返回值：如果函數調用成功則由IPTranslated指向的變量被設置為TRUE，且返回值為控制文本的轉變值。

如果函數調用失敗則由IPTranslated指向的變量被設置為FALSE，且返回值為零。注意因為零為一個可能轉變的值，返回的零值不能通過它自身來表示失敗。如果IpTranslated為NuLL，則表示函數沒有返回關於成功和失敗的信息。如果bSigned參數為TRUE，指定將被檢取的值為一個符號整型值，則把返回值設置為一個整型類型。有關詳細的錯誤信息，請調用GetLastError。

備註：GetDlgltemlnt函數通過發送WM_GETTEXT控制消息來檢索給定控制的文本。函數通過去除任何一個文本開頭的額外空間來轉變要檢索的文本，然後轉換為數值數據。當函數達到文本的末尾或遇到一個非數值的字符時，則函數停止轉變。 如果bSigned參數為TRUE，則GetDlgltemlnt函數檢測文本開頭的符號"C且把文本轉變為符號整型數值。否則，函數創建一個非符號整型數值。如果轉變的值大於IN_TMAX（對於有符號數）或UINT_MAX（對於無符號數），則GetDlgltemlnt函數返回零值。Windows CE：對於大於48個字符的文本字符串不能被轉變。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本：頭文件：Winuser.h;庫文件：user32.lib


 函數功能：該函數獲取對話框中與控制有關的文本或標題。

函數原型：UINT GetDlgltemText(HWND hDlg,int nlDDlltem,LPTSTR IpString int nMazCount);

參數：

hDlg：指向含有控制的對話框的句柄。

nlDDlgltem:指定標題或文本將被檢索的控制的標識符。

IpString:指向獲取標題或文本的緩衝器的指針。

nMaxCount：指定被複製到lpString參數指向的緩衝區的字符串的最大長度。如果字符串的字符最大長度超過範圍，則該字符串被截斷。

返回值：如果函數調用成功，則返回值表示被複製緩衝區的字符串的長度，不包括以NULL結尾的字符串。如果函數調用失敗,則返回值為零。若想獲得更多錯誤信息，請調用GetLastError函數。

備註: GetDlgltemText函數把一個WM_GETTEXT消息發送到控制。

速查:Windows NT: 3.1及以上版本；Windows：95及以上版本；Windows CE:1.0及以上版本：頭文件：winuser.h；庫文件：user32.lib；Unicode：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數取得鼠標的當前雙擊時間。一次雙擊是指對鼠標鍵的兩次連擊，第一次擊鍵後在指定時間內擊第二次。雙擊時間是指在雙擊中，第一次擊鍵和第二次擊鍵之間的最大毫秒數。

函數原型：UINT GetDoubleClickTime（VOID）

參數：無。

返回值：返回是當前雙擊時間，按毫秒計算。

速查：Windows NT：4.0及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：winuser.h；輸入庫：user32.lib。


 函數功能：該函數返回由IpszFile參數標識的文件名。

函數原型：short GetFTitle（LPCTSTR LPTSTR IpszTitle，WORD cbBuf）；

參數：

IpszFile：指向一個文件名或文件位置的指針。

IpszTitle：指向一個緩衝區，在此緩衝區中函數複製文件名。

chBuf：指定由IpszTitle函數指向的緩衝的字節長度。

返回值：如果函數調用成功，返回值為零；如果文件名無效，返回值為一負值。如果由IpszTitle參數指向的緩衝區的太小，返回值為一正整數，其值指定了所需緩衝區的大小。所需緩衝區的大小還包括結尾的NULL字符。

備註：如果由IpszFile參數指向的緩衝區包含下列任何一個成員，GetFileTitle函數返回一個錯誤信息值。

一個空字符串；一個含有星號（）、開括號（〔）、閉方括號（〕）的串、一個以冒號（：）、斜槓（/）或倒斜槓結尾的串；一個長度超過緩衝區長度的串；一個無效字符（如，一個空格或一個不能打印的字母）：為得到文件名所需的緩衝區的大小，用設置為NULL的IpszTitle和設置為零的cbBuf調用函數。函數將返回所需的大小。

GetFileTitle函數返回一個串，系統應用此串為用戶顯示文件名。這就意味著如果返回串應用在文件系統函數的調用中不可能準確地標識文件。

如果證IpszTitle緩衝區太小，GetFile Title返回的大小需要含有顯示名。在IpszFile緩衝區指定的需要的大小和字符之間沒有許可的聯繫。

速查：Windows NT：3.1及以上版本：Windows：95及以上版本：Windows CE：不支持：頭文件：Commdlg.h；庫文件：comdlg32.fib；Unicode：在Windows NT環境中實現為Unicode和ANSI兩個版本。


 函數功能：該函數恢復限定的圖標或光標的信息。

函數原型：BOOL Getlconlnfo（HICON hlcon，PICONINFO piconinfo）；

參數：

nlcon:圖標或光標的句柄；為恢復標準圖標或光標信息。

Piconinfo:指向ICONINFO結構的指針。函數填充結構的成員。

返回值：如果函數成功，返回值是非零且函數填充限定的ICONINFO結構的成員。如果函數失效；返回值是零。想獲得更多的錯誤信息，請調用GetLastError函數。

備註：Getlconlnfo為ICONINFO的成員hbmMask和hbmColor創建位圖，調用應用程序必須管理這些位圖和並在不再需要時刪除它們。

速查:Windows NT:3.1及以上版本；Windows：95及以上版本；Windows CE：不支持：頭文件：winuser.h;庫文件：user32.lib。


 函數功能：該函數確定在調用線程的消息隊列裡，是否有鼠標鍵或鍵盤消息。

函數原型：BOOL GetlnputState（VOID）

參數：無。

返回值：如果隊列裡含有一個或多個新的鼠標鍵或鍵盤消息，返回非零值。如果隊列裡沒有新的鼠標鍵或鍵盤消息，返回值是零。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；輸入庫：user32.lib。


 函數功能：該函數確定指定菜單上的缺省項。

函數原型：UINT GetMenuDefaultltem（HMENY hMenu，UINT fByPos，UINT gmdiFlags）；

參數：

hMenu：獲取缺省項的菜單的句柄。

fByPos：用於確定是取得菜單項的標識符還是位置的值。如果此參數值為FALSE，返回標識符，否則返回位置。

gmdiFlags：指定函數如何查找菜單項。此參數可取靈或多個下列值：

GMDI_GOINTOPOPUPS：如果缺省項打開了子菜單，此函數在相應的子菜單裡遞歸查找。如果子菜單沒有缺省項，返回值表示打開了子菜單的項。缺省情況下，函數返回指定菜單的第一個缺省項，不管它是否打開了一個子菜單。

GMDI_USEDISABLED：指定函數返回一個缺省項，即使該項無效。缺省情況下，函數跳過無效或變灰的項。

返回值：如果函數調用成功，返回值是菜單項的標識符或位置；如果函數調用失敗，返回值是C1。若想獲得更多的錯誤信息，請調用GetLastError函數。

速查：Windows：4.0及以上版本；Windows：95及以上版本：Windows CE：不支持；頭文件：winuser.h;輸入庫：user32.lib。


 函數功能：該函數確定指定菜單裡的菜單項個數。

函數原型：int GetMenultemCount（HMENU hMenu）；

參數：

hMenu：被檢查的菜單的句柄。

返回值：如果函數調用成功，返回值是菜單裡指定的菜單項數；如果函數調用失敗，返回值是C1。若想獲得更多的錯誤信息，請調用函數GetLastError函數。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；輸入庫：user32.fib。


 函數功能：該函數取得一個菜單項的信息。

函數原型：BOOL GetMenultemlnfo(HMENU hMenu，UINT ultem，BOOL fByPosition， LPMENUITEMINFOlpmii）；

參數：

hMenu：包含指定菜單項的菜單的句柄。

Ultem：將取得其信息的菜單項的標識符或位置。此參數的含義取決於參數fByPosition的值。

FbyPosition：此值用於指定參數Ultem的含義。如果此參數是FALSE，則ultem表示菜單項的標識符。否則，表示菜單項的位置。

lpmii：指向結構MENUITEMINFO的指針；該結構指定要取得的信息並接收菜單項的信息。

返回值：如果函數調用成功，返回非零值：如果函數調用失敗，返回值是零。若想獲得更多的錯誤信息，請調用GetLastError函數。

備註：Windows CE環境下，由參數lpmii指向的MENUITEMINFO結構的fMask成員不能取MIM_CHECKMARKS標誌。

速查：Windows NT：4.0及以上版本；Windows：95及以上版本;Windows cE：1.0及以上版本;頭文件：winuser.h；輸入庫：user32.lib Unicode：在Windows NT環境下以Unicode和ANSI方式實現。


 函數功能：該函數取得指定菜單項的邊界矩形。

函數原型：BOOL GetMenultemRect（HWND hWnd，HMENU hMenu，UINT ultem,LPRECT lprcltem）；

參數：

hWnd：含有指定菜單的窗口的句柄。

在Windows NT和Windows 98環境中，如果此值為NULL且hMenu代表一個彈出式菜單，此函數將找到菜單窗口。

ultem：菜單項相對於零的位置。

lprcltem：指向結構RECT的指針，該結構接收指定菜單項的邊界矩形（按屏幕坐標）。

返回值：如果函數調用成功，返回非零值；如果函數調用失敗，返回值是零。若想獲得更多的錯誤信息，請調用GetLastError函數。

速查：Windows NT：4.0及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：winuser.h;輸入庫：user32.lib。


 函數功能：該函數從調用線程的消息隊列裡取得一個消息並將其放於指定的結構。此函數可取得與指定窗口聯繫的消息和由PostThreadMesssge寄送的線程消息。此函數接收一定範圍的消息值。GetMessage不接收屬於其他線程或應用程序的消息。

函數原型：BOOL GetMessage（LPMSG lpMsg，HWND hWnd，UINT wMsgFilterMin，UINT wMsgFilteMax

參數：

lpMsg：指向MSG結構的指針，該結構從線程的消息隊列裡接收消息信息。

hWnd：取得其消息的窗口的句柄。這是一個有特殊含義的值（NULL）。GetMessage為任何屬於調用線程的窗口檢索消息，線程消息通過PostThreadMessage寄送給調用線程。

wMsgFilterMin：指定被檢索的最小消息值的整數。

wMsgFilterMax：指定被檢索的最大消息值的整數。

返回值：如果函數取得WM_QUIT之外的其他消息，返回非零值。如果函數取得WM_QUIT消息，返回值是零。如果出現了錯誤，返回值是_1。例如，當hWnd是無效的窗口句柄或lpMsg是無效的指針時。若想獲得更多的錯誤信息，請調用GetLastError函數。

備註：應用程序通常用返回值來確定是否終止主消息循環並退出程序。

GetMesssge只接收與參數hWnd標識的窗口或子窗口相聯繫的消息，子窗口由函數IsChild決定，消息值的範圍由參數wMsgFilterMin和wMsgFilterMax給出。如果hWnd為NULL，則GetMessage接收屬於調用線程的窗口的消息，線程消息由函數PostThreadMessage寄送給調用線程。GetMessage不接收屬於其他線程或其他線程的窗口的消息，即使hWnd為NULL。由PostThreadMessage寄送的線程消息，其消息hWnd值為NULL。如果wMsgFilterMin和wMsgFilterMax都為零，GetMessage返回所有可得的消息（即，無範圍過濾）。

常數 WM_KEYFIRST和WM_KEYAST可作為過濾值取得與鍵盤輸入相關的所有消息：常數WM_MOUSEFIRST和WM_MOUSELST可用來接收所有的鼠標消息。如果wMsgFilterMin和wMsgFilterMax都為零，GetMessage返回所有可得的消息（即，無範圍過濾）。

GetMessage不從隊列裡清除WM.PAINT消息。該消息將保留在隊列裡直到處理完畢。

注意，此函數的返回值可非零、零或-1，應避免如下代碼出現：

while（GetMessage（IpMsg，hwnd，0，0））…

－1返回值的可能性表示這樣的代碼會導致致命的應用程序錯誤。

速查：Windows NT： 3.1及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本：頭文件：winuser.h；輸入庫：user32.Iib；Unicode：在Windows NT環境下以Unicode和ANSI方式實現。


 函數功能：該函數為當前線程取得附加消息信息。附加消息信息是應用程序或驅動程序定義的與當前線程的消息隊列聯繫的32位值。可用SetMessageExtralnfo來設置線程的附加消息信息，該消息信息將會保留到下一次調用GetMessage或PeekMessage之前。

函數原型：LONG GetMessageEXtralnfo（VOID）

參數：無。

返回值：返回值為附加信息。附加信息是設備特定的。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；輸入庫：user32.lib。


 函數功能：該函數取得鼠標或畫筆。

函數原型：int GetMouseMovePoints（UINT cbSize，LPMOUSEMOVEPOlNT lppt，LPMOUSEMOVEPOINT IpptBuf，int，nBufPoints，DWORD resolution）；

參數：

cbSize：結構MOOSEMOVEPOINT的大小。

lppt：指向結構MOUSEMOVEPOINT的指針，該結構包含了有效的鼠標坐標（屏幕坐標）。也可以包含一個時間標記。

函數GetMouseMovePoints在鼠標坐標歷史記錄中查找一點。如果此函數查到該點，則返回包含提供點在內的在此之前的最後一個nBufPoints。如果應用程序提供一個時間標記，則函數GetMouseMovePoints將用它來區分記錄於不同時間的兩個相等的點。

應用程序使用從消息WM_MOOSEMOVE中接收的鼠標坐標來調用此函數，並把它們轉換為屏幕坐標。

lpptBut：將接收點的緩衝區的指針。其大小至少應為cbsze• nBuffPoints。

nBufPoints：指定將取得的點的個數。

resolution：指定希望的分辨率。此參數可取下列值之一：

GMMP_USE_DISPLAY_POINTS：用顯示分辨率取得點。

GMMP_USE_DRIVER_pOINTS：用驅動器分辨率取得點。在Windows CE平台下，畫筆驅動器的分辨率高於顯示分辨率。這樣，函數GetMouseMovePoints可被那些需要準確分辨率的應用程序使用。（如手寫體識別軟件或計算機輔助設計軟件）。

返回值：如果函數調用成功，返回值是緩衝區裡的點的數目。否則，函數返回C1。若想獲得更多的錯誤信息，請調用GetlastError函數。函數GetLastError可能返回下面的錯誤代碼。

GMMF_ERR_POINT_NOT_FOUNQ由lPPt指定的點找不到或不再存在於系統緩衝區中。

備註：系統至少保留著64個鼠標坐標及其時間標記。如果應用程序給GetMouseMovePoints提供了一個鼠標坐標，而該坐標存在於系統中的鼠標坐標歷史記錄中，則函數從歷史坐標記錄取得指定個數的坐標。也可以提供一個時間標記，用來區分歷史記錄中相同的點。

函數GetMouseMonePoints將返回實際發送給調用線程和其他線程的點。

速查：Windows NT：5.0及以上版本；Windows：98及以上版本；Windows CE：2.0及以上版本；頭文件：winuser.h；輸入庫：user32.lib。


 函數功能：該函數檢索控制組的第一個控制的句柄，該控制組跟隨對話框中指定的控制。

函數原型：HWND GetNextDlgGroupltem（HWND hDlg，HWND hctl，BOOL bPrevious）；

參數：

hDlg：標識正在被搜尋的對話框。

hCtl：指定用來作為搜尋開始點的控制。如果此參數為空，函數將以最後一個點為搜尋開始點。

BPrevious：指定參數如何搜尋，如果此參數為TRUE，則函數尋找以前的控制組中的控制。如果為FALSE，則函數尋找控制組中的下一個控制。

返回值：如果GetNextDlgGroupltem函數調用成功，則返回值為控制組中以前的（或下一個）控制。如果函數調用失敗，則返回值為零。若想獲得更多的錯誤信息，請調用GetLastError函數。

備往：GetNextDlgGroupltem函數按照對話框模板中被創建的順序（或相反的順序）尋找控制。控制組的第一個控制一定有WS_GROUP類型；所有其他的控制組的控制一定被順序創建且一定沒有WS_GROUP類型。

當尋找以前的控制時，函數返回第一個位置上可視的、且不失效的控制。如果由hCtl給定的控制有WS_GROUP類型，則函數暫時反向尋找具有WS_GROUP類型的第一個控制，然後重新回到原來的方向進行尋找，返回可視的、且不失效的第一個控制，如果沒有發現控制，則返回hWndCtrl。

當尋找下一個控制時，函數返回第一個位置上的可視控制，且沒有WS_GROUP類型。如果遇到一個有WS_GROUP類型的控制，則函數反向尋找具有WS_GROUP類型的第一個控制，且如果此控制為可視的、且沒有失效，則返回此控制。否則，函數重新回到原來方向的尋找，返回可視的、且不失效的第一個控制。如果沒有發現控制。則返回hCtl。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：winuser.h；庫文件：user32.lib。


 函數功能：該函數檢索有WS_GROUP類型的第一個控制的句柄，該WS_GROUP類型控制跟隨指定的控制。

函數原型：HWND GetNextDlgTabltem(HWND hDlg,HWND hCtl,BOOL bPrevious);

參數：

hDlg:標識將被搜尋的對話框。

hCtl：指定用來作為搜尋開始點的控制。如果此參數為NULL，則函數用對話框中上一個（或下一個）控制作為搜尋開始點。

bPrevious:指定函數怎樣尋找對話框。如果此參數為TRUE，則函數尋找上一個對話框中的控制。如果為FALSE，則函數尋找下一個對話框中的控制。

返回值：如果GetNextDlgTabitem函數調用成功，則返回值為有WS_GROUP類型的上一個（或下一個）控制的窗口句柄。如果函數調用失敗，則返回值為NuLL。若想獲得更多的錯誤信息，請調用GetLastError函數。

備註：GetNextDlgTabltem函數按照對話框模板中被創建的順序（或相反的順序）尋找控制。函數返回第一個位置上可視的、且不失效的控制，該控制具有WS_GROUP類型。如果不存在此控制，則函數返回hCtl。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：winuser.h；庫文件:user32.lib。


 函數功能：該函數返回z序中的前一個或後一個窗口的句柄。下一窗口在指定窗口的下面，前一窗口則在上面。如果指定的窗口是頂端窗口，該函數返回下一個（或前一個）頂端窗口的句柄。如果指定的窗口是頂層窗口，函數返回下一個（或前一個）頂層窗口的句柄。如果函數是子窗口，則函數搜索下一個或前一個子窗口的句柄。

函數原型：HWND GetNextWindow（HWND hWnd，UNIT wCmd）；

參數：

hWnd：一個窗口的句柄。窗口句柄在wCmd參數的基礎上獲得的相對於這個窗口的句柄。

wCmd:指明窗口返回的是前一窗口的句柄還是後一窗口的句柄。該參數可以是下列兩個值之一：

GW HWNONEXT：返回在給定窗口的下面窗口的句柄。

GW_HWNDPREV：返回在給定窗口的上面窗口的句柄。

返回值：如果函數成功，返回值是前一窗口（或後一窗口）的句柄。如果前後窗口不存在，則返回值為NULL。若想獲得更多錯誤信息，請調用GetLastError函數。

備註：在設定了GW_HWNDNEXT或GW_GETPREV標誌時，調用該函數與調用GetWindow函數相同。

速查：Windows NT：3.1以上版本；Windows：95以上版本：Windows CE：不支持：頭文件：Winuer.h;庫文件：user32.lib。


 函數功能：該函數創建一個Open公共對話框，使用戶指定驅動器、目錄和文件名、或使用戶打開文件。

函數原型：BOOL GetOpenFileName（LPOPENFILENAME Ipofn）；

參數：

Ipofn：指向包含初始化對話框的信息的一個OPENFILENAME結構。當OpenfileName函數返回時，此結構包含有關用戶文件選擇的信息。

返回值：如果用戶指定了一個文件名，點擊OK按鈕，返回值為非零。由OPENFILENAME結構的IPstrFile成員指向的緩衝區含有全路徑和用戶指定的文件名。如果用戶取消或關閉Open對話框或錯誤出現，返回值為零。若想獲得更多的錯誤信息，請調用CommDlgExtendedError函數。

備註：從Windows 95和Windows NT 4.0版開始，缺省的Open對話框提供了與Windows Explorer相似的用戶界面特徵。可以為一個瀏覽器風格的Open對話框提供一個OFNHOOKProc掛鉤函數。設置OPENFILFNAME結構的Flags成員中OFN_EXPLORER和OFN_ENABLEHOOK標示和指定IpfnHook成員中掛鉤函數的地址，可使掛鉤函數生效。

Windows 95和Windows NT仍支持舊風格的Open對話框以便維持與一個Windows 3.1或Windows NT3.51用戶界面相一致的用戶界面。使OFNHOOKProcOldstyle掛鉤函數生效和保證OFN_EXPLORER標誌沒有被設置，就可以顯示舊式的Open對話框。

為顯示允許用戶選擇一個目錄而不是一個文件的對話框，要調用SHBrowseForFolder函數。

Windows CE：並不是每一個OPENFILENAME結構的成員都在Windows CE中被定義。有關定義成員的更多的信息，請參見OPENFILENAME結構的資料主題。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：COmmdlg.h；庫文件：comdlg32.lib；Unlcode：在Windows NT環境中實現為Unicode和ANSI兩個版本。


 函數功能：該函數從給定窗口的屬性列表中檢索數據句柄。給定的字符串標識了要檢索的句柄。該字符串和句柄必須在前一次調用SetProp函數時已經加到屬性表中。

函數原型：HANDLE GetProp（HWND hWnd，LPCTSTR lpString）；

參數：

hWnd：指向要搜索屬性表的窗口。

LpString：指向以null結尾的字符串指針，或者包含一個標識字符串的原子。如果該參數是一個原子，那麼它必須是使用GlobalAddAtom函數創建的。原子是16位的數據值，它必須是放置在lpstring參數的低位率中，而高位字必須為O。

返回值：如果屬性表中包含了給定的字符串，那麼返回值為相關的數據句柄。否則，返回值為NULL。

速查：Windows NT：3.1以上版本；Windows：95以上版本；Windows CE：不支持：頭文件：winuser.h；庫文件：user32。lib；Unicode：在Windows NT環境中以Unicode和ANSI版本實現。


 函數功能：該函數創建一個Save公共對話框，以便用戶指定驅動器、目錄和文件名。

函數原型：BOOL GetSaveFileName（LPOPENFILENAME Ipofn）；

參數：

Ipofn：指向一個包含初始化對話框信息的OPENFILENAME結構。當GetsaveFileName函數返回時，此結構含有關於用戶文件選擇的信息。

返回值：如果用戶指定了一個文件名且點擊OK按鈕，返回值為非零值。由OPENFILENAME結構中的歸IpstrFile成員指向的緩衝區含有全路徑和用戶指定的文件名。如果用戶取消或關閉Save對話框或錯誤出現，返回值為零。若想獲得有關更多的錯誤信息，請調用CommDlgExtendError函數，其返回值同GetOpenFileName返回值。

速查：Windows NT：3.1引及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：commdlg.h；庫文件：comdlg32.lib；Unicode：在Windows NT環境中實現為Unicode和ANSI兩個版本。


 函數功能：該函數找到滾動條的參數，包括滾動條位置的最小值、最大值，頁面大小，滾動按鈕的位置， 函數原型：BOOL GetScrolllnfo（HWND hWnd，int fnBar，LPSCROLLINFO lpsi）； 參數： hWnd：滾動條控制或有標準滾動條的窗體句柄，由fnBar參數確定。 fnBar：指定待找回滾動條參數的類型，此參數可以為如下值，其值含義： SB_CTL：找回滾動條控制參數。其中參數hwnd一定是處理滾動條控制的句柄。 SB_HORZ：找回所指定窗體的標準水平滾動條參數。 SB_VERT：找回所指定窗體的標準垂直滾動條參數。 lpsi：指向SCROLLINFO結構。在調用Getscrolllofo函數之前，設置SCROLLINFO結構中cbSize成員以標識結構大小，設置成員fMask以說明待找回的滾動條參數。在運行之前，函數複製結構中適當的成員所指定的參數。 成員fMask可以是如下值： SIF_PAGE：複製滾動頁碼到由lpsi指向的SCROLLINFO結構的nPage成員中。 SIF_POS：複製滾動位置到由lpsi指向的SCROLLINFO結構的nPos成員中。 SIF_RANGE：複製滾動範圍到由lpsi指向的SCROLLINFO結構的nMin和nMax成員中。 SIF_TRACKPOS：複製當前滾動盒跟蹤位置到由nTrackPos指向的SCROLLINFO結構的nPage成員中。 返回值：如果函數找到任何一個值，那麼返回值為非零；如果函數沒有找到任何值，那麼返回值為零； 若要得到更多出錯信息，請調用GetLastError函數。 注意：Getscrolllnfo函數儘管WM_HSCROLL和WM_VSCROLL指出了滾動條位置消息，卻僅提供了16位數據，而函數SetScrollnfo和GetScrollnfo則提供了32位的滾動條數據。因而，當應用程序在處理WM_HSCROLL或 WM_VSCROLL時，要獲得32位滾動條位置的數據時，則要調用Getscrolllnfo函數。 在WM_HSCROLL或WM_VSCROLL消息中SB_THUMBTRACK通告過程中，為了獲得32位的滾動盒位置，需要調用GetScrolllnfo函數以得到結構SCROLLINFO成員fMask中的SCROLLINFO值。函數返回在結構SCROLLINFO成員nTrackPos中指出的滾動盒跟蹤位置的值。這將允許當用戶移動滾動盒時能得到其位置。 速查：Windows NT3.51、Windows 95、Windows CE1.0以上，頭文件：winuser.h；庫文件：user32.lib。


 函數功能：該函數獲取指定滾動條中滾動按鈕的當前位置。當前位置是一個根據當前滾動範圍而定的相對值。例如，如果滾動範圍是0到100之間，滾動按鈕在中間位置，則其當前位置為50。該函數提供了向後兼容性，新的應用程序應使用GetScroiliofo函數。

函數原型：int GetScrogPos（HWND hWnd；int nBar）；

參數：

hWnd：根據參數nBar值，處理滾動條控制或帶有標準滾動條窗體。

nBar：指定滾動條將被檢查。這個參數可以是下面值，含義如下：

SB_CTL：找回滾動條控制中滾動翻頁盒的位置。而參數hwnd必須是滾動條控制的句柄。

SB_HORZ：找回窗體上標準水平滾動條中參數滾動翻頁盒的位置。

SB_VERT：找回窗體上標準垂直滾動條中參數滾動翻頁盒的位置。

返回值：如果函數運行成功，其返回值是滾動翻頁盒的當前位置；如果函數運行失敗，其返回值是0。想若想獲得更多的錯誤信息，請調用GetLastError函數。

注意：函數GetScrollPos可以使應用程序使用32位滾動位置。儘管消息WM_HSCROLL和WM_VSCROLL指出了滾動條位置，但卻被限制為16位，而函數SetScrollPos，SetScrollRange，GetScrollPos，和 GetscrollRange都支持32位的滾動條數據。

在WM_HSCROLL或WM_VSCROLL消息中通告SB_JHUMBTRACK時，為了得到滾動條32位的位置，請調用GetScrolllnfo函數。

在WM_HSCROLL或WM_VSCROLL消息中通告SB_THUMBTRACK時，為了得到32位的滾動條，則調用函數GetScrolllnfo。

速查：Windows3.1、Windows 95以上，頭文件：winuser.h；庫文件：user32.lib


 函數功能：獲取指定滾動條中滾動按鈕位置的當前最大最小值。

函數原型：BOOL GetscrollRange（HWND hWnd，int nBar，LPINT lpMinPos，LPINT InMaxPos）；

參數：

hWnd：滾動條控制或帶標準滾動條窗體的句柄，由nBar參數值確定。

nBar：定滾動條哪一個位置將被找回。這個參數可以是下面值，含義如下：

SB_CTL：找回滾動條控制位置。而參數hWnd必須是滾動條控制的句柄。

SB_HORZ：找回窗體上標準水平滾動條的位置。

SB_VERT：找回窗體上標準垂直滾動條位置。

lpMinPos：指向所找到最小位置整型變量。

lpMaxPos：指向所找到最小位置整型變量。

返回值：如果函數運行成功，返回值為非零；如果函數運行失敗，返回值為零。若想獲得更多的錯誤信息，請調用GetLastError函數。

注意：如果所指定的窗體沒有標準的滾動條或者不是滾動條控制，那麼GetscrollRange函數將複製0到參數lpMinPos和lpMaxPos中。

標準滾動條的缺省範圍值是從0到100之間，滾動條控制的缺省範圍為空。

說明滾動條位置的消息WM_HSCROLL和WM_VSCROLL均為16位的數據。但是，因為函數SetScrolllnfo，SetScrollPos，SetScrollRange；GetScrolllnfo，GetScrollPos，和GetScrollRange都支持32位的滾動條位置數據，所以有一個解決16位WM_HSCROLL和WM_VSCROLL消息阻礙的途徑，請參見函數GetScrohnfo的有關技術說明。

速查：Windows NT 3.1、Windows 95以上，頭文件：winuserh；庫文件：user32.lib。


 函數功能：該函數已經過時，該函數只是為與16位版的窗口程序兼容而提供的。


 函數功能：該函數已經過時，該函數只是為與16位版的窗口程序兼容而提供的。基於32位的應用程序應該使用GetWindowThreadProcessld函數。


 函數功能：該函數返回創建指定窗口線程的標識和創建窗口的進程的標識符，後一項是可選的。

函數原型；DWORD GetWindowThreadProcessld（HWND hwnd，LPDWORD lpdwProcessld）；

參數：

hWnd:窗口句柄。

lpdwProcessld:接收進程標識的32位值的地址。如果這個參數不為NULL，GetWindwThreadProcessld將進程標識拷貝到這個32位值中，否則不拷貝。

返回值：返回值為創建窗口的線程標識。

速查：Windows NT：3.1以上版本；Windows：95以上版本；Windows CE：1.0以上版本；頭文件：winuser.h；庫文件；user32.lib。


 函數功能：該函數對菜單條中的菜單項加亮或清除亮度。

函數原型：BOOL HiliteMenultem（HWND hwnd,HMENU hMenu，UINT ultemHilite,UINT uHilite）；

參數：

hWnd：具有菜單的窗口句柄。

hMenu：含有將被加亮的菜單項的菜單條句柄。

UltmHilite：指定將被加亮的菜單項。此參數可以是菜單項的標識符，也可為菜單項在菜單條中的偏移量，其含義由參數uHilite的值確定。

yHilite：控制參數ultemHilite如何解釋的標誌，並確定菜單項是否被加亮。此參數必須是MF_BYCOMMAND或MF_BYPOSITION和MF_HILITE或MF_UNHILITE的組合。

MF_BYCOMMAND：表示參數ultemHilite給出了菜單項的標識符。

MF_BYPOSITION：表示參數ultemHilite給出了菜單項相對於零的位置。

MF_HILITE：加亮菜單項。如果此標誌未被指定，則清除菜單項的亮度。

MF_UNHILITE：清除菜單項的亮度。

返回值：如果菜單項被設置為指定的加亮狀態，返回非零值；如果菜單項未被設置為指定的加亮狀態，返回零。

備註：MF_HILITE和MF_UNHILITE標誌只能被函數HiliteMenutem使用，不能被函數ModifyMenu使用。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；輸入庫：user32.lib。


 函數功能：該函數決定當前窗口程序是否處理另一個線程調用SendMesssge（在相同進程或不同進程）發送來的消息。

函數原型：BOOL InsendMessage（VOID）；

參數：無。

返回值：如果窗口程序處理另一個線程調用SendMessage發送來的消息，返回非零值。如果窗口程序不處理另一個線程調用SendMessage發送來的消息，返回值是零。

速查：Windows NT：3.1及以上版本：Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h輸入庫：user32.Iib。


 函數功能：函數決定當前窗口程序是否處理另一個線程調用SendMessage（在相同進程或不同進程）發送來的消息。此函數與InsendMesssge相似，但另外提供了如何發送消息的信息。

函數原型：DWORD InsendMessageEx（LPVOID IpReserved）；

參數：

IpReserved：保留值，必須為NULL。

返回值：如果消息沒被發送，返回值是ISMEX_NOSEND。否則，返回值是一個或多個下列值：

ISMEX_CALLBACK：消息是用函數SendMesssgeCallback發送的。發送此消息的線程沒被阻塞。

ISMEX_NOTIFY：消息是用函數SendNotifyMessags發送的。發送此消息的線程沒被阻塞。

ISMEX_REPLIED：窗口程序處理了消息。發送此消息的線程不再被阻塞。

ISMEX_SEND：消息是用函數SendMessage或SendMessageTimeout發送的。如果ISMEX_REPLIED沒設置，發送此消息的線程被阻塞。

速查：Wihdows NT：5.0及以上版本：Windows：98及以上版本；Wihdows CE：不支持：頭文件：winuser.h；輸入庫：user32.Iib。


 函數功能:該函數在菜單的指定位置插入一個新菜單項。

函數原型：BOOL WINAPI InsertMenutem（HMENU hMenu，UINT ultem，BOOL fByPosition，LPMENUITEMINFO lpmii ）；

參數:

hMenu：新菜單項將被插入其中的菜單的句柄。

ultem：在其前面插入新菜單項的菜單項的標識符或位置。此參數的含義取決於參數fByPosition的值。

fByFosition：用於確定ultem的含義的值。如果此參數為FALSE，Ultem表示菜單項的標識符。否則，ultem 表示菜單項的位置。

lpmii：指向結構MENUITEMINFO的指針，該結構中包含了新菜單項的信息。

返回值：如果函數調用成功，返回非零值；如果函數調用失敗，返回值是零。若想獲得更多的錯誤信息，請調用GetLastError函數。

備註：為了使鍵盤加速鍵能控制位圖或自己繪製的菜單項，菜單的擁有者必須處理WM_MENUCHAR消息。

參見自繪製菜單和WM_MENUCHAR消息。

速查：Windows NT：4.0及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h; 輸入庫：user32.lib Unicode：在Windows NT環境下，以Unicode和ANSI方式實現。


 函數功能：該函數決定一個消息是否指定給指定的對話框，如果是，則處理消息。 函數原型：BOOL IsDialogMessage(HWND hDlg,LPMSG IpMsg); 參數: hDlg：標識對話框。 IpMsg：指向一個含有將被檢測的消息的MSG結構。 返回值：如果消息被處理，則返回值為非零值；如果消息沒有被處理，則返回值為零。 備註：儘管IsDialogMessage函數是為無模態對話框而擴展的，但可以用含有控制的任何一個窗回來使用它。當 IsDialogMessage處理一個消息時，它檢測鍵盤信息並把它們轉變成對響應對話框的選擇命令。例如當按下tab時選擇下一個控制或控制組，當按下down時選擇控制組的下一個控制。 因為IsDialogMessage 函數要執行消息所有必要的轉變和傳送，IsDialogMessage函數處理的消息不必傳送給TranslateMessage或 DispatchMessage函數處理。 IsDialogMessage函數把WM_GETDLGETDLGCODE發送到對話樞應用程序，決定應該處理哪個鍵。 lsDialogMessage函數把DMa_ETDEFID和DM_SETDEFID消息發送到窗口。這些消息在WINUSERH頭文件中定義為WM_USER和WM_USER＋1所以就有與應用程序定義的有一樣值的消息發生衝突。 速查：Windows NT: 3.1及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：winuser.h; 庫文件：usgr32.lib：Unicode：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數可以確定某個按鈕控制是否有選中標誌，或者三態按鈕控制是否為灰色的、選中的、或兩者都不是。

函數原型：UINT IsDlgButtonChecked（HWND hDlg，Int nlDBUtton）；

參數：

hDlg：指向包含按鈕控制的對話框。

nkDButtom：指定按鈕控制的整型標識符。

返回值：使用BS_AUTOCHECKBOX、BS_AUTORADIOBUTTON、BS_AUTO3STATE、BS_CHECKBOX、BS_RADIOBUTION或BS_3STATE樣式創建的按鈕的返回值可以是如下值之一：

BST_CHECKED：表示按鈕被選中。

BST_INDETERMINATE：表示按鈕是灰色的，即為不確定狀態（只有具有BS_3STATE或BS_AUTO3STATE樣式的按鈕才使用該值）。

BST_UNCHECKED：表示該按鈕未選中（unckecked）。如果該按鈕用其他任何樣式，那麼返回值為零。

速查：Windows NT：3.1及以11版本；Windows：95及以上版本；Windows CE：不支持：頭文件：winuser.h；庫文件：user32.lib。


 函數功能：該函數獲得給定窗口的可視狀態。；

函數原型：BOOL IsWindowVisible（HWND hWnd）；

參數；

hWnd：被測試窗口的句柄。

返回值：如果指定的窗口及其父窗口具有WS_VISIBLE風格，返回值為非零；如果指定的窗口及其父窗口不具有WS_VISIBLE風格，返回值為零。由於返回值表明了窗口是否具有Ws_VISIBLE風格，因此，即使該窗口被其他窗口遮蓋，函數返回值也為非零。

備註：窗口的可視狀態由WS_VISIBLE位指示。當設置了WS_VISIBLE位，窗口就可顯示，而且只要窗口具有WS_VISIBLE風格，任何畫在窗口的信息都將被顯示。

速查：Windows NT：3.1以上版本；Windows：95以上版本；Windows CE：1.0以上版本；頭文件：winuser.h;庫文件：user32.lib。


 函數功能：調入加速鍵表。該函數調入指定的加速鍵表。

函數原型：HACCEL LoadAccelerators（HINSTANCE hlnstance，LPCTSTR lpTableName）；

參數：

hlnstance:模塊的一個事例的句柄，該模塊的可執行文件中包含將要調入的加速鍵表。

IpTableName:指向一個以空結尾的字符串的指針，該字符串包含了即將調入的加速鍵表的名字。另一種可選的方案是，該參數可以在加速鍵表資源的低位字中指定資源標識符，而高位字中全零。MADEINTRESOURCE宏可被用於創建該值。

返回值：若函數調用成功，則返回非零值。若函數調用失敗，則返回值為零。若要獲得更多的錯誤信息，可以調用GetLastError函數。

備註：若加速鍵表尚未裝入，該函數可從指定的可執行文件中將它裝入。從資源中裝入的加速鍵表，在程序結束時可自動釋放。Windows CE：資源不被拷貝到RAM中，因而不能被修改。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：winuser.h;庫文件：user32.lib；Uncode：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數從與應用事例關聯的可執行文件（EXE）中裝載限定的圖標資源。 函數原型：HICON Loadlcon（HINSTANCE hlnstance,LPCTSTR lplconName）； 參數： hlnstance:模塊事例句柄，該模塊的可執行文件中包含被裝載的圖標。當標準的圖標是被裝載時，該參數必須是NULL。 IplconName:包含被裝載圖標資源名稱的空結束的字符串指針。作為選擇，該參數可在字的低位包含資源標識符而字的高位為0，使用MAKEINTRESOURCE宏產生該值。 為了使用某一的預先確定的圖標，將hlnstance參數設為NULL且IplconName參數為下列值之一： IDI_APPLICATION：缺省應用程序圖標；IDI_ASTERISK：與IDI_INFORMATION相同。 IDI--ERROR：手•形狀圖標：IDI_EXCLAMATION:與IDI_WARNING相同。 IDI_HAND:與IDI_ERROR相同；IDI_INFORMATION:星號圖標。 IDI_QUESTION:問號圖標;IDI_WARNING:感歎號圖標。 IDI_WINLOGO:Windows Logo 語言圖標。 返回值：如果函數成功，返回值是新裝載圖標的句柄。如果函數失效，返回值是NULL。想獲得更多的錯誤信息，請調用GetLastError函數。 備註：僅當圖標資源還沒有被裝載時才能用Loadlcon裝載它，否則，它得到已存在資源的句柄。該函數搜索最適合當前顯示器的圖標的圖標資源。圖標資源可能是彩色或單色位圖。 Loadlcon只能裝載大小符合SM_CXICON和SM_CYICON系統公制值的目標。使用Loadmage函數裝載其他大小的圖標。Windows CE：預先確定的圖標（IDI*）不被支持。在Windows CE 1.0中，圖標必須是每像素二位（.ic2）的圖標或單色圖標。 速查：Windows NT：3.1及以上版本；Windows；95及以上版本；Windows CE：不支持；頭文件：winuser.h；庫文件：user32.lib。


 函數功能：該函數加載指定的菜單模板到內存。

函數原型：HMENU LoadMenulndirect（CONST MENUTEMPLATE」lpMenuTemplate）；

參數：

lpMenuTemplate：指向菜單模板或擴展菜單模板的指針。

一個菜單模板由一個MENUITEMTEMPLATEHEADER結構和一個或多個連續的MENUITEMTEMPLATE結構組成。一個擴展菜單模板由一個MENUEX_TEMPLATE_HEADER結構和一個或多個MENUEX_TEMPLATE_ITEM結構組成。

返回值：如果函數調用成功，返回值是菜單句柄；如果函數調用失敗，返回值為NULL。若想獲得更多的錯誤信息，請調用GetLastError函數。

備註：此函數的ANSI和Unicode版本中，在MENUITEMTEMPLATE結構中的字符串必須是Unicode串。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；輸入庫：User32.lib；Unicode：在Windows NT環境下，以Unicode和ANSI方式實現。


 函數功能：該函數裝載指定資源到全局存儲器。

函數原型； HGLOSAL LoadResouare（HMODULE hModule，HRSRC hReslnfo）；

參數：

hModule：處理包合資源的可執行文件的模塊句柄。若hModule為NULL，系統從當前過程中的模塊中裝載資源。

hReslnfo：將被裝載資源的句柄。它必須由函數FirtdResource或FindResourceEx創建。

返回值：如果函數運行成功，返回值是相關資源的數據的句柄。如果函數運行失敗，返回值為NULL。若想獲得更多的錯誤信息，請調用GetLastError函數。

注意：LoadResource的返回類型是向後兼容的HGLOBAL型，而不是因為函數返回一個全局存儲塊句柄。不要傳遞這個句柄給函數GlobalLock或GlobalFree。為了得到更多資源數據信息，請調用LockResource函數。

當使用完資源後，必須通過調用函數以釋放加速器表、位圖、光標、圖標以及菜單所佔的內存資源：加速器表：DestroyAcceleratorTable；位圖：DeleteObject；光標：DestroyCursor；圖標：Destroylcon；菜單：DestroyMenu。

當過程創建終止時，系統將自動刪除這些資源。但是調用相關函數也可以保留內存減少過程的工作設置所佔空間。

Windows CE：參數hModule必須為非空。

速查：Windows NT 3.1、Windows 95、Windows CE1.0以上，頭文件：winbase.h；庫文件：kernel132.lib。


 函數功能：該函數鎖定內存中的指定資源。

函數原型：LPVOID LOCkResource（HGLOBAL hResDate）；

參數：

hResDate：被裝載的資源的句柄。函數LosdResource可以返回這個句柄。

返回值：如果被裝載的資源被所住了，返回值是資源第一個字節的指針；否則為NULL。

注意：通過使用函數FindResource或FindResourceEx返回句柄試圖所住資源，不再工作。可以返回一個錯誤的數據和任意數據的指針。

當使用完資源後，必須通過調用函數以釋放加速器表、位圖、光標、目標以及某單所佔的內存資源：加速器表：DestroyAcceleratorTable；位圖：DeleteObject；光標：DestroyCursor；圖標：Destroylcon；菜單：DestroyMenu。

當過程創建終止時，系統將自動刪除這些資源。但是調用相關函數也可以保留內存減少過程的工作設置所佔空間。

速查：Windows NT 3.1、Windows 95、Windows CE 1.0以上，頭文件：winbase.h；庫文件：kerne132.lib。


 函數功能：該函數通過圖標或光標數據搜索最適合當前顯示設備的圖標或光標。

函數原型：int LookuPlconldFromDirectoryEx（PBYTE presbits，BOOL flcon，int cxDesired，int cyDesired，UINT Flags）；

參數：

presbits:指向圖標或光標目錄數據的指針。因為該函數不驗證資源數據，它導致通用的保護（GP）錯誤或返回一個未定義的值（如果presbits未指向有效的資源數據）。

flcon：指定是尋求圖標或是光標。如果該參數是真；函數搜索圖標；如果參數是假，函數搜索光標。

cxDesired:指定圖標的期望寬度（以像素為單位）。如果該參數是零，函數使用SM_CXICON或SM_CXCURSOR系統公制值。

cyDesired:指定圖標的期望寬度（以像素為單位）。如果該參數是零，函數使用SM_CYICON或SM_CYCURSOR系統公制值。

Flags:指定下列值的組合：

LR_DEFAULTCOLOR：使用缺省顏色格式；LR_MONOCHROME：創建單色圖標或光標。

返回值：如果函數成功，返回值最適合當前顯示設備的圖標或光標的整數型資源標識符。如果函數失效,返回值是零。想獲得更多的錯誤信息，請調用GetLastError函數。

備註：在一些設備相關和設備獨立的格式中，RT_GROUP_ICON類型的資源文件（RT_GROUP_CURSOR指示光標）包含目標（或光標）數據。LookuPlconldFromDirectoryEx函數搜索最適合當前顯示設備的圖標（或光標）的資源文件並返回它的整型標識符。FindResourceEx函數利用該標識符使用MAKENTRESOURCE宏在模塊中查找資源。

圖標所在目錄是從一個具有RT_GROUP_ICCON資源類型的資源文件裝入（或者光標的

RT_GROUP_CURSOR類型），並且一特定圖標的整型資源名稱被載入。LookuPlconldFromDirectoryEx函數返回一個代表圖標資源名的整型標識符，該圖標與當前顯示器件最匹配。

Loadcon,LOadlmage，LOadcUrSor函數使用這個函數搜索最適合當前顯示設備的圖標或光標的特定的資源數據。

速查：Windows NT：4.0及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h;庫文件：user32.lib。


 函數功能：該函數通過圖標或光標數據搜索最適合當前顯示設備的圖標或光標。

函數原型：int LookuplconldFromiDirectory（PBYTE presbits,BOOL flcon）；

參數：

presbits：指向圖標或光標圖錄數據的指針。因為該函數不驗證資源數據，它導致通用的保護（GP）錯誤或返回一個未定義的值（如果presbitS未指向有效的資源數據）。

flcon:指定是尋求圖標或是光標。如果該參數是真，函數搜索圖標；如果參數是假，函數搜索光標。

返回值：如果函數成功，返回值最適合當前顯示設備的圖標或光標的整數型資源標識符。如果函數失效，返回值是零。想獲得更多的錯誤信息，請調用GetLastError函數。

備註:在一些設備相關和設備獨立的格式中，RT_GROUP_ICON類型的資源文件（RT_GROUP_CURSOR指示光標）包含圖標（或光標）數據。LookuPIconldFromDirectory函數搜索最適合當前顯示設備的圖標（或光標）的資源文件並返回它的整型標識符。FindResource和FindResourceEx函數利用該標識符使用MAKEINTRESOURCE宏在模塊中查找資源。

圖標所在目錄是從一個具有RT_PROUP_ICON資源類型的資源文件裝入（或者光標的

RT_GROUP_CURSOR類型），並且一特定圖標的整型資源名稱被載入。LookuPIconldFromDirectory函數返回一個代表圖標資源名的整型標識符，該圖標與當前顯示器件最匹配。

Loadlcon，LOadCursor，LOadlmsge函數使用這個函數搜索最適合當前顯示設備的圖標或光標的特定的資源數據。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；庫文件：user32.lib。


 函數功能：該函數把指定的對話框單位映射成屏幕單位（像素）。函數MapDialogRect用變換坐標替換指定的RECT結構中的坐標，這就使得該結構可以用來創建對話框或定位對話框內的控制。

函數原型：BOOL MapDialogRect(HWND hDlg,LPRECT IpRect);

參數：

hDlg:標識對話框。MapDialogRect 函數只接收對話框創建函數中一個創建的對話框的句柄，對於其他窗口的句柄失效。

IpRect：指向一個含有將被轉變的對話框坐標的RECT結構。

返回值：如果消息被處理，則返回值為非零值。如果消息沒有被處理則返回值為零。若想獲得更多的錯誤信息，請調用GetLastError函數。

備註：MapDialogRect函數假定RECT結構內的起始坐標代表對話框單位。為把這些坐標從對話框單位轉變為像素，函數檢索對話框的當前水平和垂直基本單位，然後應用下列公式：

left=（left*baseunitX）/4;right=（right*baseunitX）/4

top=（top* baseunitY）/ 8; bottom=（bottom* baseunitY）/ 8

在很多情況下，對話框的基本單位同用GetDialogBaseUnits函數檢索到的單位一樣。如果對話板模板有DS_SETFONT類型，那麼基本單位為模扳給定的字體中的字符的平均寬度和高度，單位為像素。

速查：Windows NT：3.1及以上版本：Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：Winuser.h;庫文件：USer32.lib。


 函數功能：該函數將虛擬鍵碼翻譯為掃瞄碼或字符值，或者將掃瞄碼翻譯為虛擬鍵碼。該函數使用由給她鍵盤佈局句柄標識的物理鍵盤和輸入語言來翻譯這些代碼。

函數原型：UINT MapVirtualKeyEx（UINT uCode，UINT uMapType，HKL dwhkl）；

參數：

uCode：定義一個鍵的虛擬鍵碼或掃瞄碼。該值如何解釋依賴於uMapType參數的值。

uMapType：定義將要執行的翻譯。該參數的值同MapVirtuaIKe。

dwhkl：翻譯給定代碼所使用的鍵盤佈局的句柄。該參數值可以是在此之前調用LoadKeyboardLayout函數返回的任何鍵盤佈局句柄。

返回值：返回值可以是一掃瞄碼，或一虛擬鍵碼，或一字符值，這完全依賴於不同的uCode和uMapType的值。若未進行翻譯，則函數返回O。

返回值：返回值可以是一掃瞄碼，或一虛擬鍵碼，或一字符值，這完全依賴於不同的uCode和uMapType的值。若未進行翻譯，則函數返回0。

備註：應用程序可以使用MapVirtualKeyEx將掃瞄碼翻譯為虛擬鍵碼常數VK_SHIT；VK_CONTROL和VK_MENU。反之亦然。這些翻譯不區分左右shift，ctrl，alt鍵。應用程序可以通過調用MapVirtualKey函數時將uCode參數設置為如下的虛擬鍵碼常數來獲得分別相應於上述鍵的左右鍵的掃瞄碼：

Vk_LSHIFT，VK_RDHIFT；VK_LCONTROL，VK_RCONTROL；VK_LMENU，VK_RMENU

僅當應用程序調用GetKeyboardState，SetKeyboardState，GetAsyncKeystate，GetKeyState，MapVirtuaIKey和MapVirtualKeyEx函數時，才可用這些區分左右鍵的常數。若要查看完整的虛擬鍵碼表，請參考Virtual.KeyCodes。

速查：Windows NT：4.0及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；庫文件：user32.lib；Unicode：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數確定指定位置的菜單項（如果存在）。

函數原型：UINT WINAPI MenultemFromPoint(HWND hWnd,HMENU hMenu,POINT ptScreen)；

參數：

hWnd：含有菜單的窗口的句柄。

在Windows NT 5.0和Windows 98環境下，如果此值為NULL並且參數hMenu指定一個彈出式菜單，則此函數將會找到菜單窗口。

hMenu：將被命中測試的菜單項所在的菜單的句柄。

PtScreen：用於指定測試位置的POINT結構。如果hMenu指定一個菜單條，此參數按窗口坐標，否則按客戶坐標定義。

返回值：返回指定位置的菜單項相對於零的位置，或者當指定位置沒有菜單項時返回C1。

速查：Windows NT：4.0及以上版本：Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；輸入庫：user32.lib。


 函數功能：該函數創建、顯示、和操作一個消息框。消息框含有應用程序定義的消息和標題，加上預定義圖標與Push（下按）按鈕的任何組合。

函數原型：int MessageBox(HWND hWnd,LPCTSTR IpCaption,UINT UType);

參數：

hWnd:標識將被創建的消息框的擁有窗口。如果此參數為NULL，則消息框沒有擁有窗口。

IpText：指向一個以NULL結尾的、含有將被顯示的消息的字符串的指針。

IpCaption：指向一個以NULL結尾的、用於對話框標題的字符串的指針。

uType：指定一個決定對話框的內容和行為的位標誌集。此參數可以為下列標誌組中標誌的組合。

指定下列標誌中的一個來顯示消息框中的按鈕，標誌的含義如下。

MB_ABORTRETRYIGNORE：消息框含有三個按鈕：Abort，Retry和Ignore。

MB_OK：消息框含有一個按鈕：OK。這是缺省值。

MB_OKCANCEL：消息框含有兩個按鈕：OK和Cancel。

MB_RETRYCANCEL：消息框含有兩個按鈕：Retry和Cancel。

MB_YESNO：消息框含有兩個按鈕：Yes和No。

MB_YESNOCANCEL：消息框含有三個按鈕：Yes，No和Cancel。

指定下列標誌中的一個來顯示消息框中的圖標：標誌的含義如下。

MB_ICONEXCLAMATION:

MB_ICONWARNING：一個驚歎號出現在消息框。

MB_ICONINFORMATION：

MB_ICONASTERISK：一個圓圈中小寫字母i組成的圖標出現在消息框。

MB_ICONOUESTION:一個問題標記圖標出現在消息框。

MB_ICONSTOP:

MB_ICONERROR：

MM_ICONHAND：一個停止消息圖標出現在消息框。

指定下列標誌中的一個來顯不缺省的按鈕：標誌的含義如下。

MB_DEFBUTTON1：第一個按鈕為缺省按鈕。如果MB_DEFBUTTON2，MB_DEFBUTTON3，MB_DEFBUTTON4沒有被指定，則MB_DEFBUTTON1為缺省值。

MB_DEFSUTTON2；第二個按鈕為缺省按鈕。

MB_DEFBUTTON3：第三個按鈕為缺省按鈕。

MB_DEFBUTTON4：第四個按鈕為缺省按鈕。

指定下列標誌中的一個來顯示對話框的形態：標誌的含義如卜。

MB_APPLMODAL：在hwnd參數標識的窗口中繼續工作以前，用戶一定響應消息框。但是，用戶可以移動到其他線程的窗口且在這些窗口中工作。根據應用程序中窗口的層次機構，用戶則以移動到線程內的其他窗口。所有母消息框的子窗口自動地失效，但是彈出窗口不是這樣。如果既沒有指定MB_SYSTEMMODAL也沒有指定MB_TASKMOOAL，則MB_APPLMODAL為缺省的。

MB_SYSTEMMODAL：除了消息框有WB_EX_TOPMOST類型，MB_APPLMODAL和WS_EX_TOPMOST一樣。用系統模態消息框來改變各種各樣的用戶，主要的損壞錯誤需要立即注意（例如，內存溢出）。如果不是那些與hwnd聯繫的窗口，此標誌對用戶對窗口的相互聯繫沒有影響。

MB_TASKMODAL：如果參數hwnd為NULL，除了所有屬於當前線程高層次的窗口足失效的，MB_TASKMODALL和MB_ApPLMODAL一樣。當調用應用程序或庫沒有一個可以得到的窗口句柄時，使用此標誌。但仍需要阻止到調用應用程序甲其他窗口的輸入而不是擱置其他線程。

另外，可以指定下列標誌。

MB_DEFAULT_DESKTOP_ONLy：接收輸入的當前桌面一定是一個缺省桌面。否則，函數調用失敗。缺省桌面是一個在用戶已經紀錄且以後應用程序在此上面運行的桌面。

MB_HELP：把一個Help按鈕增加到消息框。選擇Help按鈕或按F1產生一個Help事件。

MB_RIGHT：文本為右調整。

MB_RTLREADING：用在Hebrew和Arabic系統中從右到左的順序顯示消息和大寫文本。

MB_SETFOREGROUND：消息框變為前景窗口。在內部系統為消息個調用SetForegrundWindow函數。

MB_TOPMOSI：消息框用WS_EX_TOPMOST窗口類型來創建MB_SERVICE_NOTIFICATION。

Windows NT：調用程序是一個通知事件的用戶的服務程序。函數在當前活動桌面上顯示一個消息框，即使沒有用戶登記到計算機。

如果設置了此參數，則hwnd參數一定為NULL。所以消息框可以出現在一個桌面上而不是桌面響應參數hwnd。

對於Windows NT 4.0，MB_SERVICE_NOTIFICATION的值己經改變。對於舊的和新的值，請參見WINUSER。

Windows NT 4.O通過把舊值映射到MessageBox和MessageBoxEx執行中的新值，為先存在的服務程序提供逆兼容。此映射只為有了版本數目的可執行程序而做。

為了建立一個用MB_SERVICE_NOTIFICATION的服務器，且可以在Windows NT 3.X和Window NT 4.0上執行，可有兩種選擇。在連接時間，指定一個版本數目小於4.0的版本，或在連接時間，指定一個4.0版本。在運行時間，用函數GetVersionEx來檢測系統版本，然後在Windows NT 3.X上用MB_SERVICE_NOTIFICATION_NT 3.x來運行和在Windows NT 4.0上用MB_SERVICE_NOTIFICAION來運行。MB_SERVCE_NOTIFICATION_NT3.x（WindowNT）此值響應於為WindowNT3.51的MB_SERVICE_NOTIFICAION

定義的值。

返回值：如果沒有足夠的內存來創建消息框，則返回值為零。如果函數調用成功，則返回值為下列對話框返回的菜單項目值中的一個：

IDABORT：Abort 按鈕被選中。IDCANCEL：Cancel按鈕被選中。IDIGNORE：Ignore按鈕被選中。

IDNO：NO按鈕被選中。IDOK：OK按鈕被選中。IDRETRY：RETRY按鈕被選中。

IDYES：YES按鈕被選中。

如果一個消息框有一個Cancel按鈕，且如果Esc鍵被按下或Cancel鍵被選擇，則函數返回IDCANCEL值。如果消息框沒有Cancel按鈕，則按Esc鍵沒有作用。

備註：當創建一個系統模態消息框來表示系統在內存的低端中時，由lpTeXt和lpCaption參數指向的字符串不應該從一個資源文件中取出，因為試圖裝載此資源可能導致失敗。

當一個應用程序調用MessageBox，且為uType參數指定MB_ICONHAND和MB_SYSTEMMODAL標誌時，系統不管可用內存為多少，直接顯示結果消息框。當這些標誌被指定，系統把消息框文本的長度局限於三行。系統不能自動截斷要填到消息框的行，但是消息字符串一定含有回車換行，以在合適的位置換行。

如果在對話框出現的的同時創建了消息框，則可使用對話框的句柄作為hwnd參數，hwnd參數不應該標識一個子窗口，例如對話框中的一個控制。

Windows 95：系統可以支持最大達16364個窗口句柄。

Windows CE:Windows CE 不支持uType參數的下列值：

MB_STSTEMMODAL；MB_TASKMODAL；MB_HELP；MB_RTLREADING;MB_DEFAULT_DESKTOP_ONLY；

MB_SERVICE_NOTIFICATION；MB_USERICON。

不支持下列返回值：IDCLOSE；IDHELP。

速查：Windows：3.1及以上版本：Windows：95及以上版本；Windows：1.0及以上版本;頭文件：Winuser.h;庫文件：USer32.lib；URicode：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數創建、顯示、和操作一個消息框。消息框含有一個應用程序定義的消息和標題，加上預定義目標與pus（下推）按鈕的任何組合。wLanguageld參數指定哪一個語言資源集被用於預定義的下推按鈕。有關MessageBoxEX函數其他參數的完整描述，請參見MessageBoxEx函數。

函數原型：int MessageBoxEXHWND hwnd，LPCTSTR IPText, LPCTSTR IpCaPtion, UINT UTye, WORD wLanguageld);

參數：

hWnd：標識將被創建的消息框的擁有窗口。如果此參數為NULL，則消息框沒有擁有窗口。

IpCaption：指向一個以NULL結尾的、含有將被顯示的消息的字符串的指針。

IpszTitle：向一個以NULL結尾的結、用於對話框標題的字符串的指針。如果此參數為NULL，則用缺省的標題Error。

uType:指定一個決定對話框的內容和行為的位標誌集。標誌的意義參見MessageBox\uType。

備註:當創建一個系統模態消息框來表示系統在在內存的低端中時，由IPText和IpCaPtion參數指向的字符串不應該從一個資源文件中取出，因為試圖裝載此資源可能導致失敗。

當一個應用程序調用MessageBox，且為uType參數指定MB_ICONHAND和MB_SYSTEMMODAL標誌時，系統不管可用內存為多少，直接顯示結果消息框。當這些標誌被指定，系統把消息框文本的長度局限於三行。系統不能自動截斷要填到消息框的行，但是消息字符串一定含有回車換行，以在合適的位置換行。

如果在對話框出現的的同時創建了消息框，則可使用對話框的句柄作為hwnd參數，hwnd參數不應該標識一個子窗口，例如對話框中的一個控制。

Windows 95：系統可以支持最大達 16364個窗口句柄。

速查：Windows NT：3.1及以上版本：Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：Winuser.h;庫文件： user32.lib; Unicode：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數創建、顯示和操作一個消息框。消息框含有應用程序定義的消息文本和標題，任何位圖和預定義的push（下推）按鈕的任意組合。

函數原型：int MessageBoxlndirect（LPMSGBoXPARAMs IpMsgBoxParams）；

參數：

IpMsgBoxParams：指向一個含有用於顯示消息框信息的MSGBOXPARAMS結構。

返回值：如果沒有足夠內存來創建消息框，則返回值為零。如果函數調用成功，則返回值為下列對話框返回的菜單項目值中的一個：IDABORT:Abort按鈕被選中；IDCANCEL：Cancel 按鈕被選中；IDGNORE:lgnorem按鈕被選中；IDNO：NO按鈕被選中；IDOK：OK按鈕被選中；IDRETRY：RETRY按鈕被選中；IDYES：YES按鈕被選中。

如果一個消息框有一個Cancel按鈕，且當Esc鍵被按或Cancel鍵被選擇時，則函數返回IDCANCEL值。如果消息框沒有Cancel按鈕，則按Esc鍵沒有作用。

備註:當創建一個系統模態消息框來表示系統在在內存的低端時，由IpText和lpCaption參數指向的字符串不應該從一個資源文件中取出，因為試圖裝載此資源可能導致失敗。

當一個應用程序調用MessageBox，且為uType參數指定MB_ICONHAND和MB_SYSTEMMODAL標誌時，系統不管可用內存為多少，直接顯示結果消息框。當這些標誌被指定，系統被把消息框文本的長度局限於三行。系統不能自動截斷要填到消息框的行，但是消息字符串一定含有回車換行，以在合適的位置換行。

如果在對話框出現的的同時創建了消息框，則可使用對話框的句柄作為hwnd參數，hwnd參數不應該標識一個子窗口，例如對話框中的一個控制。

Windows 95：系統可以支持最大達16364個窗口句柄。

速查：Wbindows NT：4.0及以上版本；Windows：95及以下版本；Windows CE：不支持；頭文件：winuser.h;庫文件：User32.lib：Unicoda：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該掛鉤函數是應用程序定義的或庫定義的回調函數，此回調函數與Explorer_Style和Save As公共對話框一起使用。函數貯存從公共對話框發送來的消息或通知LPOFNHOOKPROC類型定義一個指向回調函數指針，OFNHOOKProc是應用程序定義的或庫定義的函數名的位置佔有者，當創建一個Open或Save As公共對話框時，如果沒有指定OFN_EXPLORER標誌且需一個掛鉤函數。必須用舊式的OFNHookProcOldSttyle掛鉤函數。這種情況下對話框將顯示舊式的用戶界面。

函數原型：UINT CALLBACK OFNHookProc（HWND hdlg，UINT uiMsg，WPARAM wParam，LPARAM IParam）；

參數：

hdlg：指向Open或Save as對話框的子對話框的句柄。用GetParent函數可得到指向Open或Save As對話框窗口的句柄。

uiMsg．標識存放的消息。

wParam：指定有關消息的其他信息。精確的意義要根據uiMSg參數的值來決定。

IParam；指定有關消息的其他信息。精確的意義要根據uiMsg參數的值來決定。如果uiMsg參數顯示了WM_INITDIALOG消息，IParam是一個指向OPENFILENAME結構的指針。該結構含有創建對話框時指定的值。

返回值：如果掛鉤函數返回零，缺省對話框函數處理消息。如果掛鉤函數返回非零值，缺省對話框函數忽略消息。對於CDN_SHAREVIOLATION和CDN_FILEOK通告消息，掛鉤函數應該返回非零值，以表明已經利用SetWindowLong函數設置了一個非零DWL_MSGRESULT值。

備註：當用GetOpenFileName或GetSaveFileName函數創建瀏覽器風格的Open或Save As公共對話框時，可以提供一個OFNHookProc掛鉤函數。為使掛鉤函數生效，須應用傳遞到對話創建函數的OPENFILENAME結構，且須指定一個指向PfnHook成員中的掛鉤函數的指針，及指定Flags成員中OFN_ENABLEHOOK標識。

如果為瀏覽器風格的公共對話框提供了一個掛鉤函數，系統創建了一個缺省對話框的子對話框，掛鉤函數為子對話框作為對話函數，此子對話框以OPENHLENAME結構指定的模塊為基礎，或如果沒有指定模板，對話框是一個缺省的子對話框。當缺省對話框函數正在創建WM_INITDALOG消息時，創建了子對話框。在子對話框處理它本身的WM_INITDIALOG消息時，缺省對話函數刪除掉標準控制面板，如果需要，可為子對話框的其他的任何一個控制面板提供空間，然後系統將CDN_INITDONE通告消息發送給掛鉤函數。

掛鉤函數不接收指定給缺省對話框的標準控制面板的消息。可以對控制面板進行子分類，但是如果控制面板使應用程序與公共對話框將來的版本不一致，那麼不能進行子分類。但瀏覽器風格的公共對話框提供了一套消息，此掛鉤函數可利用此消息來最小化和控制對話框。它包括了從對話框發送來的一組通知消息，還有可以發送到從對話框檢取信息的消息。關於這些消息的全部列表，參見EXplorer-Style HookProcedures。如果掛鉤函數處理WM_CTLCOLORDLG信息，它必須返回一個有效的刷子句柄，以刷對話的背景。總之，如果掛鉤函數處理任何一個WM_CTLCOLOR消息，那麼必須返回一個有效刷子句柄，以繪製指定控制背景。不須從掛鉤函數調用EndDialog函數。相反，掛鉤能調用PostMessage函數把帶有IDABORT值的一個WM_COMMAND信息，傳送給對話框函數Posting IDABORT來關閉對話框，使對話框函數返回FALSE值。若要瞭解為什麼掛鉤函數關閉對話框，必須提供掛鉤函數和應用程序之間的聯繫機理。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：commdlg.h；庫文件：用戶自定義。


 函數功能：該掛鉤函數是應用程序定義或庫定義的回調函數。此回調函數與Open和Save AS公共話框一起使用。函數接收指定給對話框函數的消息或通告。LPOFNHOOKPROC類型定義了一個指向這種回調函數的指針。OFNHookProcOldStyle是應用程序定義的或庫定義的函數名的位置佔有者。當創建一個Open或Save As公共對話框時，如果指定OFN_EXPLORER標誌且需一個掛鉤函數，那麼必須應用一個Explorer_style的OFNHookProc掛鉤函數。

函數原型：UINT CALLBACK OFNHookProcOldStyle（HWND hdlg，UINT uiMsg WPARAM wParam，LPARAM IParam）；

參數：

hdlg：指向消息指定的Open或Save As對話框窗口。

uiMsg：標識接收的消息。

wParam：指定有關消息的其他信息。精確的意義要根據uiMSg參數的值來決定。

IParam：指定有關消息的其他信息。精確的意義要根據uiMsg參數的值來決定。如果uiMsg參數顯示了WM_INITDIALOG消息，IParam是一個指向OPENFILENAME結構的指針。該結構含有創建對話框時指定的值。

返回值：如果掛鉤函數返回零，缺省對話框函數處理消息；如果掛鉤函數返回非零值，缺省對話框忽略消息。

備註：當用GetOpenFileName或GetSaveFileName函數創建一個舊式的Open或Save As對話框時。可以提供一個OFNHookProcOldStyle掛鉤函數。為使掛鉤函數生效，須應用傳遞到對話創建函數的OPENHLENAME結構，且須指定一個指向IpnHook成員中的掛鉤函數的指針，及指定Flags成員中OFN_ENABLEHOOK標識。如果掛鉤函數處理WM_CTLCOLORDLG消息，那麼必須返回一個有效的刷子句柄，以便繪製對話框的背景。總之，如果掛鉤函數處理任何一種WM_CTLCOLOR信息，那麼必須返回一個有效的刷子句柄以繪製指定控制的背景。不須從掛鉤函數調用EndDialog函數。相反，掛鉤函數能調用PostMessage函數，把帶有IDABORT值的一個WM_COMMAND信息傳送給對話框函數PostingIDABORT，並關閉對話框，使對話框函數返回 FALSE值，若要瞭解為什麼掛鉤函數關閉對話框，必須提供掛鉤函數和應用程序之間的聯繫機理。可以對公共對話框的標準控制面板進行子分類。但是公共對話框函數也可以對控制面板進行子分類。正因如此，必須在掛鉤函數WM_INTDIALDG處理消息時對控制面板子分類。這就保證對話框函數設置子分類函數之前，子分類函數接收指定的控制消息。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：commdlg.h；庫文件：用戶自定義。


 函數功能：該函數將一個最小化窗口恢復到原來的位置和尺寸並且激活該窗口。

函數原型：BOOL Openlcon（HWNDhWnd）；

參數：

hWnd:被恢復與激活的窗口的句柄。

返回值：如果函數成功，返回值為非零；如果函數失敗，返回值為零。若想獲得更多錯誤信息，請調用GetLastError函數。

備註：Openlcon向給出的窗口發送WM_QUERYOPEN消息。

速查：Windows NT:3.1以上版本；Windows:95以上版本；Windows CE：不支持：頭文件：winuser.h;庫文件：user32.lib。


 函數功能：該掛鉤函數是一個由應用程序或庫定義的回調函數，該回調函數與PageSetup函數一起使用。該函數接收製作PageSetup對話框中樣本頁繪圖的消息。LLPPAGEPAINTHOOK類型定義了一個指向此回調函數的指針。PagePaintHook是由應用程序或庫定義的函數名的位置持有者。

函數原型：UINT CALLBACK PagePaintHook（HWND hdlg，UINT uiMsg，WPARAM wParam，LPARAM IParam）；

參數：

hdlg：指向pagesetup對話樞窗口的句柄。

uiMsg：標識接收的消息。

wparam：指定有關消息的其他信息。精確的意義要根據uiMsg參數的值來決定。

IParam：指定有關消息的其他信息。精確的意義要根據uiMsg參數的值來決定。

返回值：如果掛鉤函數對前三個繪圖順序消息中的任何一個返回值為TRUE。且前三個消息為WM_PSD_PAGESETUPDLG，WM_PSD_FULLPAGERECT或WM_PSD_MINMARGINRECT），對話框不再發送消息。且直到下一次系統需要重畫樣本頁時才繪出樣本頁。如果對所有的三個消息。掛鉤函數返回FALSE，對話框發送給圖順序的保留的消息。

如果掛鉤函數對繪圖順序中保留消息的任何一個，返回值為TRUE，那麼對話框不繪樣本頁對應的部分，如果掛鉤函數對這些信息中的任何一個返回值為FALSE，對話框繪樣本頁部分。

備註PageSetup對話框含有一個樣本頁的構想。此構想展示了用戶選擇如何影響打印輸出的外觀。構想由代表選擇頁或信封類型的長方形組成，點線長方形代表當前頁邊。部分字母展示了文本在打印出的頁中的狀況。當用PageSetupDlg函數創建Page Setup Dialog對話框時，可提供一個PagePaintHook掛鉤函數來製作樣本頁的表觀。

為使掛鉤函數生效，須用傳遞到創建對話函數的PAGESETUPDLG結構，且指定一個指向

IpfnPagePrintHook成員中掛鉤函數的指針和指定Flags成員中PSD_ENABLEPAGEPAINTHOOK標誌。

無論何時，只要對話框將要繪樣本頁的內容，那麼掛鉤函數就接受以下列順序列表的消息：WM_PSD_PAGESETUPDLG：對話框將要繪樣本頁，掛鉤函數利用此消息準備給樣本頁裡的內容。

WM_PSD_FULLPAGERECT：對話框要繪樣本頁，此信息指定樣本頁的長方形邊。

WM_PSD_MINMARGINRECT：對話框將要繪樣本頁，此信息指定空白長方形。

WM_PSD_MARGINRECT：對話框將要繪空白長方形。

WM_PSD_REEKTEXTRECT：對話框將要在空白長方形內繪Greek文本。

WM_PSD_ENVSTAMPRECT：對話框將要在信封樣本頁上繪郵票長方形。此消息僅發向信封。

WM_PSD_YAFULLPAGERECT：對話框將要繪信封樣本頁的返回地址部分。此消息僅發向信封和其他紙張大小。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持：頭文件：commdlg.h；庫文件：用戶自定義。


 函數功能：該函數創建一個PageSetup對話框，此對話框能使用戶指定打印頁的屬性。這些屬性包括紙張大小和來源，送紙方向和頁邊距。

函數原型：BOOL PageSetupDlg（LPPAGESETUPDLGI ppsd）；

參數：

Ippsd：指向一個包含初始化對話框信息的PAGESETUPDLG結構。當函數返回時，該結構存放有關用戶選擇的信息。

返回值：如果用戶點擊OK鈕，返回值為非零值，Ippsp參數指向的PAGESETUPDLG結構中的成員顯示用戶的選擇。如果用戶取消或關閉PageSetup對話框或錯誤出現，返回值為零。若想獲得更多的錯誤信息，請調用CommDlgExtendedError函數

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：commdlg.h；庫文件：commdlg32.lib；Unicode：在Windows NT環境中實現為Unicode和ANSI兩個版本。


 函數功能：該掛鉤函數為由應用程序或庫定義的回調函數。此回調函數與PageSetupDlg函數一起使用，它接收為PageSetup公用對話框設置缺省對話框的消息或通告。LPPAGESETUPHOOK類型定義了一個指向此回調函數的指針。PageSetupHook是由應用程序或庫定義的函數名的位置持有者。

函數原型：UINT CALLBACK PageSetupHook（HWND hdlg，UINT uiMsg，WPARAM wParam，LPARAM IParam）；

參數：

hdlg：指向消息指定給Page Setup對話框窗口的句柄。

uiMsg：標識接收的消息。

wParam：指定有關消息的其他信息。精確的意義要根據uiMsg參數的值來決定。

IParam：指定有關消息的其他信息。精確的意義要根據uiMsg參數的值來決定。

返回值：如果掛鉤函數返回零，則缺省對話框函數處理消息；返回非零值，將忽略消息。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：commdlg.h；庫文件：用戶自定義。


 函數功能：該函數為一個消息檢查線程消息隊列，並將該消息（如果存在）放於指定的結構。

函數原型：BOOL PeekMessage（LPMSG IpMsg，HWND hWnd，UINT wMSGfilterMin，UINT wMsgFilterMax，UINT wRemoveMsg）；

參數：

lpMsg：接收消息信息的MSG結構指針。

hWnd：其消息被檢查的窗口的句柄。

wMsgFilterMin：指定被檢查的消息範圍裡的第一個消息。

wMsgFilterMax：指定被檢查的消息範圍裡的最後一個消息。

wRemoveMsg：確定消息如何被處理。此參數可取下列值之一：

PM_NOREMOVE：PeekMessage處理後，消息不從隊列裡除掉。

PM_REMOVE：PeekMessage處理後，消息從隊列裡除掉。

可將PM_NOYIELD隨意組合到PM_NOREMOVE或PM_REMOVE。此標誌使系統不釋放等待調用程序空閒的線程。

缺省地，處理所有類型的消息。若只處理某些消息，指定一個或多個下列值：

PM_QS_INPUT：Windows NT5.0和Windows 98：處理鼠標和鍵盤消息。

PM_QS_PAINT：Windows NT 5.0和Windows 98：處理畫圖消息。

PM_QS_POSTMESSAGE：Windows NT 5.0和Windows 98：處理所有被寄送的消息，包括計時器和熱鍵。

PM_QS_SENDMESSAGE：Windows NT 5.0和Windows 98：處理所有發送消息。

返回值：如果消息可得到，返回非零值；如果沒有消息可得到，返回值是零。

備註：和函數GetMessage不一樣的是，函數PeekMesssge在返回前不等待消息被放到隊列裡。

PeekMesssge只得到那些與參數hWnd標識的窗口相聯繫的消息或被lsChild確定為其子窗口相聯繫的消息，並且該消息要在由參數wMsgFiterMin和wMsgFiherMax確定的範圍內。如果hWnd為NULL，則PeekMessage接收屬於當前調用線程的窗口的消息（PeekMessage不接收屬於其他線程的窗口的消息）。如果hWnd為C1，PeekMessage只返回hWnd值為NULL的消息，該消息由函數PostThreadMessage寄送。如果wMsgFilterMin和wMsgFilterMax都為零，GetMessage返回所有可得的消息（即，無範圍過濾）。

常數WM_KEYFIRST和WMKEYLAST可作為過濾值取得所有鍵盤消息；常數WM_MOUSEFIRST和WM_MOUSELAST可用來接收所有的鼠標消息。

PeekMessage通常不從隊列裡清除WM_PANT消息。該消息將保留在隊列裡直到處理完畢。但如果WM_PAINT消息有一個空更新區，PeekMessage將從隊列裡清除WM_PAINT消息。

Windows CE：有一個NULL更新區的WM_PAINT消息不從隊列裡清除。

速查：Windows NT：3.1及以上版本；Wihdows：95及以上版本：Windows CE：1.0及以上版本；頭文件：winuser.h輸入庫：user32.lib：Unicode：在Windows NT環境下以Unicode和ANSI方式實現。


 函數功能：該函數已過時。提供此函數只是為了與Windows的16位版本兼容。基於Win32的應用程序應該使用函數PostThreadMessage。


 函數功能：該函數向系統表明有個線程有終止請求。通常用來響應WM_DESTROY消息。

函數原型：VOID PostQuitMessage（int nExitCode）；

參數：

pExitCode：指定應用程序退出代碼。此值被用作消息WM_QUIT的wParam參數。

返回值：無。

備註：PostQuitMessage寄送一個WM_oUT消息給線程的消息隊列並立即返回；此函數向系統表明有個線程請求在隨後的某一時間終止。

當線程從消息隊列裡取得WM_QUIT消息時，應當退出消息循環並將控制返回給系統。返回給系統的退出值必須是消息WM_QUIT的wParam參數。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：winuser.h；輸入庫：user32，lib：Uhicode：在Wihdows NT環境下以Unicode和ANSI方式實現。


 函數功能：該函數顯示打印對話框或打印設置對話框。打印對話框使用戶指定特殊的打印工作的特點。

打印設置對話框不能應用在新應用程序中，它已經被PageSetupDlg函數創建的打印設置公共對話框所替代。

函數原型：BOOL PrintDIg（LPPRINTDLG Ippd）；

參數：

Ippd：指向一個含有初始化對話框信息的PRINTDLG結構。當PRINTDLG函數返回時，此結構含有關用戶選擇的信息。

返回值：如果用戶點擊OK按鈕，返回值為非零值。由lppd參數指向的PRINTDLG結構中的成員顯示用戶的選擇。如果用戶取消或關閉Print或PrinterSetup對話框或錯誤出現，返回值為零。若想獲得更多的錯誤信息，請調用CommDlgError函數。如果用戶取消或關閉對話框，函數返回零值：否則，返回值如下：

CDERR_FINDRESFAILURE PDERR_CRETELCFAILUPE

COERR_INITIALIZATION PDERR_DEFAULTDIFFERENT

CDERR_LOADRESFAILURE PDERR_DNDMMISMATCH

CDERR_LOADSTRFAILURE PDERR_GETDEVMODEFAIL

CKERR_LOCKRESFAILURE PDERR_INITFAILURE

CDERR_MEMALLOCFAILURE PDERR LOADDRVFAILURE

CDERR_MEMLOCKFAILURE PDERR_NODEFAULTPRN

CDERR_NOHINSTANCE PDERR_NODEVICES

CDFRR_NOHOOK PDERR_PARSEFAILURE

CDERR_NOTEMPLATE PDERR_PRINTERNOTFOUND

CDERR_STRUCTSIZE PDERR_RETDEFFAILURE

備註：如果掛鉤函數（由PRINTDLG結構中的IpfnrintHOOk成員或IpfnSetupHOOk成員指向的）處理WM_CTLCOLORDLG信息，掛鉤函數必須返回一個刷子句柄，此刷了用來刷控制背景。

Windows NT 5.0以及以後的版本：可用PrintDlgEx函數來顯示一個Print屬性頁，此屬性頁有一個含有Print公共對話框相似的控制的General頁，其控制與Print公共對話框中的控制相似。

Windows CE：PRINTDLG結構包含Windows CE中不同的成員。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：2.0及以上版本；頭文件：commdlg.h；庫文件：comdlg32.lih；Unicode：在Windows NT環境中實現為Unicode和ANSI兩個版本。


 函數功能：該函數顯示一個Print屬性頁。該屬性頁使用戶指定特定的打印工作的特性，一個Print屬性頁有一個控制的General頁。該控制與Print中的對話框相似。屬性頁也有另外緊隨General頁的指定的應用程序和指定的驅動器特性頁。

函數原型：HRESULT PrintDlgEx（LPPRINTDLGEX Ippd）；

參數：

Ippd：指向一個包括初始化屬性頁信息的PRINTDLGEX結構。當PrintDlgEx函數返回時，此結構含有關於用戶選擇的信息。

返回值：如果函數調用成功，返回值為S_OK，且PRINTDLGEX結構中的dw ResuhltAction成員含有下列值：

PD_RESULT_APPLY：用戶點擊Apply按鈕，然後點擊Cancel按鈕，這顯示出用戶想應用在屬性頁中做的改變，但還不想打印。當Apply按鈕被點擊時，PRINTDLGEX結構包含用戶指定的信息。

PD_RESUCT_CANCEI：用戶點擊Cancel按鈕，PRINTDLGEX結構中的信息未被改變。

PD_RESUCT_PRINT：用戶點擊Print按鈕，PRINTDLGEX結構含有用戶指定的信息。

如果函數調用成功，返回值可能是下列COM錯誤代碼中的一個，有關更多的信息請參見ErrorHandling。

E_OUTOFMEMORT：內存不足；E_INVALIDARG：一個或更多的參數無效。

E_POINTER：指針失效；E_HANDLE：句柄失效；E_FAIL：不確定的錯誤。

備註：有關更多的信息，請見Print Propertysheet。

速查：Windows NT：5.0及以上版本；Windowss：不支持；Windows CE：不支持；頭文件：commdlg.h，庫文件。comdlg32.lib；Unicode：在Windows NT環境中實現為Unicode和ANSI兩個版本。


 函數功能：該掛鉤函數是一個由應用程序或庫定義的回調函數，此回調函數與PrintDlg函數一起使用。

函數接收指定給Print公共對話框的缺省對話框函數的消息和通知。LPPWTHOOKPROC類型定義了一個指向此回調函數的指針。PrintHookProc為由應用程序或庫定義的函數名的位置佔有者。

函數原型：UINT CALLBACK PrintHookProc（HWND hdlg，UINT uiMsg，WPARAM wParam，LPARAM IParam）；

參數：

hdlg：指向消息指定給的Print公共對話框窗口的句柄。

uiMsg：標識接收的消息。

wParam：指定有關消息的其他信息、精確的意義由uiMsg參數的值來決定。

IParam：指定有關消息的其他信息、精確的意義由uiMsg參數的值來決定。

返回值：如果掛鉤函數返回值為零，缺省對話框函數處理消息；返回非零值，將忽略消息。

備註：當用PrintDlg函數創建一個Print公共對話框時，可以提供一個PrintHookProc掛鉤函數來處理指定給對話框函數的消息或通知。

為使掛鉤函數生效，要用傳遞到創建對話框函數的PRINTDLG結構，且要指定IpfnPrintHook成員中掛鉤函數的地址和指定Flags成員中PD_ENABLEPRINTHOOK標誌。

缺省對話框函數把消息WM_InITDIALOG傳送到掛鉤函數之前先處理此消息。對於其他所有的消息，掛鉤函數首先存放消息。然後其返回值決定此缺省對話函數是處理消息或忽略消息。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：2.0及以上版本；頭文件：commdlg.h；庫文件：用戶自定義。


 函數功能：該函數註冊在隨後調用CreateWindow函數和CreateWindowEx函數中使用的窗口類。 RegisterClass函數己經由函數RegisterClassEx函數來代替，但是，如果不需要設置類的小目標則仍然可以使用RegisterClass函數。

函數原型：ATON RegisterClass（CONST WNDCLASS ★lpWndClass）；

參數：

lpWndClass：指向一個WNDCLASS結構的指針。在將它傳遞給函數之前，必須在該結構中填充適當的類屬性。

返回值：如果函數成功，返回值是唯一標識已註冊的類的一個原子；如果函數失敗，返回值為0。若想獲得更多錯誤信息，請調用GetLastError函數。

備註：如果使用RegisterClassA來註冊窗口，應用程序通知系統被註冊類的窗口的消息使用ANSI字符集的文本和字符參數；如果使用RegisterClassW來註冊窗口，應用程序需要系統以Unicode來傳遞消息的文本參數。lsWindowUnicode函數使應用程序可以查詢每一個窗口的字符特徵。參看Win32API中的ANSI和Unicode

函數，請查閱Functiont prototype。

應用程序註冊的所有的窗口類在應用程序中止後都為未註冊的類。

Windows 95：所有由DLL註冊的類在DLL卸載後均未註冊的類。

Windows NT：所有由DLL註冊的類在DLL卸載後仍為已註冊的類。

Windows 95：如果WNDCLASSEX結構中的cbWndExtra或cbClsExtra單元包含字節數超過40個字節，則RegisterClassEx將失敗。

Windows CE：由lpWndClass參數指向的WNDCLAS結構不支持lpszMenuName域，因為WindowsCE不支持缺省菜單。

除非使用了WindowsCE的lconcurs組件（這個組件提供了在適當目標平台上的鼠標支持），否則不能使用由lpWndClass指向的WNDCLASS結構中的hCursor域。

速查：Windows NT：3.1以上版本；Windows：95以上版本：WindowsCE：1.0以上版本；頭文件：Winuser.h;庫文件：user32.lib；Unicode：在Windows NT上實現為Unicodee和ANSI兩種版本。


 函數功能：該函數為隨後在調用Createwindow函數和CreatewindowEx函數中使用的窗口註冊一個窗口類。

函數原型：ATON RegisterClassEX（CONST WNDCLASSEX★Ipwcx）；

參數：

Ipwcx：指向一個WNDCLASSEX結構的指針。在傳遞給這個函數之前，必須在結構內填充適當的類的屬性返回值：如果函數成功，返回值是唯一識別被註冊類的一個原於；如果函數失敗，返回值為0。若想獲得更多錯誤信息，請調用callGetLastError函數。

備註：如果使用RegisterClassEx來註冊窗口類，應用程序通知系統被註冊類的窗回的消息使用ANSI字符集的文本和字符參數；如果使用RegisterClassExW來註冊窗口類，應用程序需要系統以Unicode來傳遞消息的文本參數。IsWindowUnicode函數使應用程序可以查詢每一個窗口的字符特徵。參看 Win32 API中的ANSI和Unicode函數，請查閱 Functiont prototype（函數原型）。

應用程序註冊的所有的窗口類在應用程序中止後都為未註冊的類。

Windows 95：所有由DLL註冊的類在DLL卸載後均未註冊的類。

Windows NT：所有由DLL註冊的類在DLL卸載後仍為已註冊的類。

Windows 95：如果WNDCLASSEX結構中的cbWndEXtra或cbCIsEXtra單元包含字節數超過40個字節，則RegisterClassEx將失敗。

速查：Windows NT：4.0以上版本；Windows：95以上版本；Windows CE：不支持：頭文件：winuser.h；庫文件：user32.lib; Unicode：在 Windows NT上實現為 Unicode和 ANSI兩種版本。


 函數功能：該函數定義一個系統範圍的熱鍵。

函數原型：BOOL RegisterHotKey（HWND hWnd，intid，UINT fsModifiers，UINT vk）；

參數：

hWnd：接收熱鍵產生WM_HOTKEY消息的窗口句柄。若該參數NULL，傳遞給調用線程的WM_HOTKEY消息必須在消息循環中中進行處理。

id：定義熱鍵的標識符。調用線程中的其他熱鍵不能使用同樣的標識符。應用功能程序必須定義一個0X0000-0xBFFF範圍的值。一個共享的動態鏈接庫（DLL）必須定義一個0xC000-0xFFFF範圍的值伯GlobalAddAtom函數返回該範圍）。為了避免與其他動態鏈接庫定義的熱鍵衝突，一個DLL必須使用GlobalAddAtom函數獲得熱鍵的標識符。

fsModifoers：定義為了產生WM_HOTKEY消息而必須與由nVirtKey參數定義的鍵一起按下的鍵。該參數可以是如下值的組合：

MOD_ALT：按下的可以是任一Alt鍵。MOD_CONTROL：按下的可以是任一Ctrl鍵。

MOD_SHIFT：按下的可以是任一Shift鍵。

MOD_WIN：按下的可以是任一Windows按鍵。這些鍵可以用Microsoft Windows日誌記錄下來。

vk：定義熱鍵的虛擬鍵碼。

返回值：若函數調用成功，返回一個非O值。若函數調用失敗，則返回值為0。若要獲得更多的錯誤信息，可以調用GetLastError函數。

備註：當某鍵被接下時，系統在所有的熱鍵中尋找匹配者。一旦找到一個匹配的熱鍵，系統將把WM_HOTKEY消息傳遞給登記了該熱鍵的線程的消息隊列。該消息被傳送到隊列頭部，因此它將在下一輪消息循環中被移去。該函數不能將熱鍵同其他線程創建的窗口關聯起來。

若為一熱鍵定義的擊鍵己被其他熱鍵所定義，則RegisterHotKey函數調用失敗。

若hWnd參數標識的窗口已用與id參數定義的相同的標識符登記了一個熱鍵，則參數fsModifiers和vk的新值將替代這些參數先前定義的值。

Windows CE：Windows CE 2.0以上版本對於參數fsModifiers支持一個附加的標誌位。叫做MOD_KEYUP。

若設置MOD_KEYUP位，則當發生鍵被按下或被彈起的事件時，窗口將發送WM_HOTKEY消息。

RegisterHotKey可以被用來在線程之間登記熱鍵。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；庫文件：user32.lib。


 函數功能：該函數定義一個新的窗口消息，該消息確保在系統中是唯一的。返回的消息值可在調用函數SendMessage或PostMessage時使用。

函數原型：UINT RegisterWindowsMessage（LPCTSTR lpString）；

參數：

lpString：指定將被註冊的消息的以『\O』結束的字符串指針。

返回值:如果消息被成功註冊，返回值是在範圍OxCOOO到OxFFFF的消息標識符；如果函數調用失敗，返回值是零。要得到更多的錯誤信息，調用函數GetLastError。

備註：RegisterWindowMessage通常為合作應用程序間的通信註冊消息。

如果不同的應用程序註冊同樣的消息字符串，應用程序返回同樣的消息值。消息保持註冊，直到會話完成。

當一個以上的應用程序必須處理同一個消息時，必須使用RegisterWindowMessage。要在窗口類裡發送私有消息，應用程序可以使用UM_USER到OX7FFF範圍內的任意整數。（在此範圍的消息對窗口類私有，而不是對應用程序私有。如，預定義的控制類如BUTTON， EDIT LISTBOX和COMBOBOX可用此範圍的值。）

速查：Windows NT： 3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；輸入庫：user32.lib；Unicode：在Windows NT環境下以Unicode和ANSI方式實現。


 函數功能：該函數從指定的窗口的屬性表中刪除一項。指定的字符串標識了要刪除的項。

函數原型：HANDLE RemoveProp（HWND hWnd，LPCTSTR lpString）；

參數：

hWnd：指向要改變屬性項的窗口的句柄。

lpString：指向以null結尾的字符串指針，或者包含一個標識字符串的原子。如果該參數是一個原子，那麼它必須是使用AddAtom函數創建的。原子是16位的數據值，它必須是放置在lpString參數的低位字中，

而高位率必須為0。

返回值：返回值標識了指定的字符串。如果該串無法在指定的屬性表中發現，那麼返回值為NULL。

備註：應用程序必須釋放與從屬性表中清除的項相關的數據句柄。應用程序只能清除它加入的那些屬性它不能清除其他應用程序或系統本身加入的屬性。

RemoveProp函數返回與該字符串相關的數據句柄，這樣應用程序就可以釋放與該句柄相關的數據。

速查：Windows NT：3.1以上版本；Windows：95以上版本；Windows CE：不支持；頭文件：winuser.h；文件：user32.lib；Unicode：在Windows NT環境中以Unicode和ANSI版本實現。


 函數功能。該函數創建一個系統定義的無模式對話框，此對話框使用戶查找或替代一個串，或執行控制和替代操作。

函數原型：HWND Replace Text （LPFINDREPLACE Ipfr）；

參數：

Ipfr：指向一個包含初始化對話框的信息的FINDREPLACE結構。對話框應用此結構把用戶輸入的有關信息傳送到應用程序。有關更多的信息，見卜列說明部分。

返回值：如果函數調用成功，返回值為對話框的窗口句柄，可以用窗口句柄與對話框聯繫或關閉它。如果函數調用失敗，返回值為NULL。若想獲得更多的錯誤信息，調用CommDlgExError函數，其返回值如下：

CDERR_FINDRESFAILURE CDERR_MEMLOCKFAILURE

CDERR_INITIALIZATION COERR_NOHINSTANCE

CDERR_LOADRESFAILURE CDERR_NOHOOK

CDERR_LOADSTRFAILURE CDERR_BITEMPLATE

CDERR_LOCKRESFAILURE CDERR_STRUCTSIZE

CDERR_MEMALLOCFAILURE FRERR_BUFFERLENGTHZERO

備註：PepIACE Text函數不執行文本替代操作。相反，對話框把FINDSGSTRING 已登記的信息傳送到對話框窗口的窗口函數。當創建對話框時，FINDREPLACE結構的hwndowner成員指定該對話框窗口。

調用ReplaceText函數之前，必須調用RegisterWindowMessage函數為FINDSGSTRING信息登記標識。

當用戶擊點Find Next，Replace ALL按鈕時，或當關閉對話框時，對話框函數應用這些標識發送信息。

FINDMSGSTRING信息中的IParam參數含有一個指向FINDREPLACE結構的指針。此結構的Flags成員表明了形式信息的事件。該結構中其他的成員表明用戶的輸入信息。

如果創建了Replace對話框，必須應用應用程序信息鏈中的IsDialogMesssage函數來保證對話框能正確處理鏈盤輸入信息，例如Tab鍵和Esc鍵。

ISDialogMessage函數返回值表明Replace對話框是否處理信息。

可以為Replace對話樞提供一個FRHookProc掛鉤函數，此掛鉤函數能處理發送到對話框中的信息。

為使一個掛鉤函數生效，可設置FINDREPLACE結構中Flags成員的FR_ENABLEHOOK標誌且指定IpfnHook成員中掛鉤函數的地址。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：commdlg.h；庫文件：comdlg32.lib：Unicode：在Windows NT環境中實現為Unicode和ANSI兩個版本。


 函數功能：該函數是應用程序定義的回調函數，和SendMessageCallback一起使用。系統在將消息傳給目標窗口程序後，將消息傳給回調函數。類型SENDASYNCPROC定義了一個指向此回調函數的指針。SendAsyncProc是此應用程序定義的函數名的佔位符。

函數原型：VOID CALLBACK SendAsyncProc（HWND hwnd，UINT uMsg，DWORD dwData，LRESULT IResult）；

參數：

hwnd；其窗口程序接收消息的窗口的句柄。如果將SendMessageCallback的參數hwnd設置為HWND_BROADCAST，系統為每個頂層窗口調用一次SendAsyncProc。

uMsg：指定消息。

dwData：指定從函數SendMessageCallback發送來的應用程序定義的值。

IResult：指定消息處理的結果與消息。

返回值：此回調函數無返回值。

備註：通過傳一個SENDASYNCPROC指針給函數SendMessageCallback來安裝一個SendAsyncProc應用程序定義的回調函數。

此回調函數僅當調用SendMessageCallback的線程調用GetMessage，PeekMessage或WaitMessage時調用。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件： winuser.h；輸入庫：user32.lib。


 函數功能：該函數把一個消息發送給指定的對話框中的控制。

函數原型：LONG SendDlgltemMessage(HWND hDlg,int nlDDlgltem,UINT Msg,WPARAM wParam,LPARAM IParam);

參數：

hDlg:指定含有控制的對話框。

nlDDigltem:指定接收消息的控制的標識符。

Msg：指定將被發送的消息。

wParam:指定消息特定的其他信息。

IParam:指定消息特定的其他信息。

返回值：返回值指定消息處理的結果，且依賴於發送的消息。

備註：SendDlgltemMessage函數直到消息已經被處理時才返回。

使用SendDlgltemMessage函數同從一個指定的控制中檢索句柄和調用SendMessagge函數一樣。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：winuser.h；庫文件：user32.lib Unicode：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數用於合成擊鍵、鼠標移動、按鈕按下等。

函數原型：UINT SendlnpUt（UINT nlnputs，LPINPUT plnputs，int cbSize）；

參數：

nlnprts：定義plnputs指向的結構的數目。

plnputs：指向INPUT結構數組的指針。每個結構代表插人到鍵盤或鼠標輸入流中的一個事件。

cbSize：定義INPUT結構的大小。若cbSize不是INPUT結構的大小，則函數調用失敗。

返回值：函數返回被成功地插人鍵盤或鼠標輸入流中的事件的數目。若要獲得更多的錯誤信息，可以調用GetlastError函數。

備註：Sendlnput函數將INPUT結構中的事件順序地插入鍵盤或鼠標的輸入流中。這些事件與用戶插入的（用鼠標或鍵盤）或調用keybd_event，mouse_event，或另外的Sendlnput插人的鍵盤或鼠標的輸入流不兼容。

Windows CE：Windows CE不支持plnputs參數指向的INPUT結構的類型域中的INPUT_HARDWARE值。

速查：Windows NT：4.0及以上版本：Windows：98及以上版本；Windows CE：不支持;頭文件：winuser.h；

庫文件：user32.lib。


 函數功能：該函數為當前線程設置附加消息信息。附加消息信息是應用程序或驅動程序定義的與當前線程的消息隊列聯繫的32位值。GetMessageExtralnfo來取得線程的附加消息信息。

函數原型：LPARAM SetMesssgeEXtralnfo（LPARAM IParam）；

參數：

IParam：指定與當前線程聯繫的32位值。

返回值：返回值為前一個32位值。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winser.h；輸入庫：user32.lib。


 函數功能：該函數把對話框中控制文本設置為用一個指定整型值的字符串表示。

函數原型：BOOL SetDlgltemlnt(HWND hDlg,int nLDDlgltem,UINT uValue,BOOL bSigned）;

參數：

hDlg:指定含有控制的對話框。

nlDDlgltem:指定將被改變的控制。

uValue:指定用於產生項目文本的整型值。

bsigned:指定uValue參數為有符號的還是為無符號的。如果此參數為TRUE，則uValuee為有符號的。如果此參數為TRUE且uValue小於零，則最小符號被放在第一個數據之前。如果此參數為FALSE，則uValue為無符號的。

返回值：如果函數調用成功則返回值為非零值。如果函數調用失敗，則返回值為零。若想獲得更多錯誤信息，請調用GetLastError函數。

備註：為設置新文本，此函數把一個WM_SETTEXT消息發送到指定的控制。

Windows CE：bSigned參數不被使用。所有被傳送到nValue參數的值都假定為有符號的。

速查：Windows NT：3.1及以上版本;Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件:winuser.h;庫文件：user32.lib。


 函數功能：該函數設置對話框中控制的文本和標題。

函數原型：BOOL SetDlgltemText(HWND hDlg,int nlDDlgltem,LPCTSTR IpString);

參數：

hDlg：指定含有控制的對話框。

nlDDlgltem:標識帶有將被設置的標題和文本的控制。

IpString:指向一個以NULL結尾的字符串指針，該字符串指針包含了將被複製到控制的文本。

返回值：如果函數調用成功，則返回值為非零值。如果函數調用失敗，則返回值為零。若想獲得更多的錯誤信息，請調用GetLastError函數。

備註：SetDlgltem函數把一個WM_SETTEXT消息發送到指定的控制。

速查：Windows NT：3.1及以上版本：Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：winuser.h；庫文件：user32.lib；Unicode：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數為鼠標設置雙擊時間。

函數原型：BOOL SetDoubleCIckTime（UINT ulnterval）；

參數：

ulnterval：指定在雙擊中第一次和第二次點擊之間的毫秒數。如果此參數設置為零則系統使用缺省的雙擊時間，即500毫秒。

返回值：如果函數調用成功，返回非零值。如果函數調用失敗，返回值是零。若想獲得更多的錯誤信息，請調用GetLastError函數。

備註：函數SetDoubleClickTime為系統中所有的窗口修改雙擊時間。

速查：Windows NT 3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；輸入庫：user32.lib。


 函數功能：該函數對指定的窗口設置鍵盤焦點。該窗口必須與調用線程的消息隊列相關。

函數原型：HWND SetFocus（HWND hWnd）；

參數：

hWnd：接收鍵盤輸入的窗口指針。若該參數為NULL，則擊鍵被忽略。

返回值：若函數調用成功，則返回原先擁有鍵盤焦點的窗口句柄。若hWnd參數無效或窗口未與調用線程的消息隊列相關，則返回值為NULL。若要獲得更多錯誤信息，可以調用GetLastError函數。

備註：SetFocus函數發送WM_KILLFOCUS消息到失去鍵盤焦點的窗口，並且發送WM_SETFOCUS消息到接受鍵盤焦點的窗口。它也激活接受鍵盤焦點的窗口或接受鍵盤焦點的窗口的父窗口。

若一個窗口是活動的，但沒有鍵盤焦點，則任何按鍵將會產生WM_SYSCHAR,WM_SYSKEYDOWN或WM_SYSKEYUP消息。若VK_MENU鍵也被按下，則消息的IParam參數將設置第30位。否則，所產生的消息將不設置此位。

使用AttachThreadInput函數，一個線程可將輸入處理連接到其他線程。這使得線程可以調用SetFocus函數為一個與其他線程的消息隊列相關的窗口設置鍵盤焦點。

Windows CE：不使用SetFocus函數為一個與其他線程的消息隊列相關的窗口設置鍵盤焦點。但有一個例外。若一個線程的窗口是另一線程的子窗口，或這些窗口是具有同一父窗口的兄弟窗口，則與一個線程關聯的窗日可以為其他窗口設置焦點，儘管該窗口屬於一個不同的線程。在這種情況下，就不必先調用AttachThreadlnpUt函數。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本：Windows CE：1.0及以上版；頭文件：winuser.h；庫文件：user32.lib。


 函數功能：該函數給指定的菜單設置缺省菜單項。

函數原型：BOOL SetMenuDefaultltem（HMENU hMenu，UINT ultem，UINT fByPo ）；

參數：

httenu：將為其設置缺省菜單項的菜單的句柄。

Uttrne：新缺省菜單項的標識符或位置，無缺省項時，取值為C1。此參數的含義由參數fByPoS的值決定。

ByPos：用於確定參數ultem的值的含義。如果此參數為FALSE，參數ultem表示菜單項的標識符。否則，表示菜單項的位置。

返回值：如果函數調用成功，返回非零值；如果函數調用失敗，返回值是零。若想獲得更多的錯誤信息，請調用GetLastError函數。

速查：Windows NT：4.0及以上版本；Windows: 95及以上版本；Windows CE：不支持；頭文件：winuser.h；輸入庫：user32.lib。


 函數功能：該函數將指定的位圖與一個菜單項相聯繫。無論該菜單項是否被選取，系統都將適當的位圖顯示在菜單項旁邊。

函數原型：BOOL SetMenultemBitmaPs（HMENU hMenu，UINT uPosition,UINT uFlags，HBITMAP hBitmapUnchecked,HBITMAP hBitmspChecked）；

參數：

hMenu：其菜單項將接受新選取標記位圖的菜單的句柄。

uPosition：指定將被修改的菜單項。其含義由參數uFlags決定。

UFlags：指定參數uPosition將如何解釋。此參數必須是下列值之一：

MF_BYCOMMAND：表示參數uPosition給出菜單項的標識符。如果MF_BYCOMMAND和MF_POSITION都沒被指定，則MF_BYCOMMAND是缺省標誌。

MF_BYPOSITION：表示參數uPosition給出菜單項相對於零的位置。

hBitmapUnchecked：當菜單項沒被選取時顯示的位圖的句柄。

hBitmapChecked：當菜單項被選取時顯示的位圖的句柄。

返回值：如果函數調用成功，返回非零值；如果函數調用失敗，返回值是零。若想獲得更多的錯誤信息，請調用GetLastError函數。

備註：如果參數hBitmapUnchecked或hBitmapChecked的值為NULL，系統將不為相應選取狀態顯示任何位圖到菜單項旁邊。如果兩參數值均為NULL，系統在菜單項被選取時顯示缺省的選取標誌位圖，菜單項未被選取時刪除位圖。當菜單項被銷毀時，位圖並沒被銷毀，需要應用程序來將其銷毀。

已選取或未選取的位圖應當是單色的。系統將用布爾AND運算符組合位圖和菜單。這樣，位圖中白色部分變成透明的，而黑色部分成為菜單項的顏色。如果使用彩色位圖，結果會不符合需要。以CXMENUCHECK和CYMENUCHECK來使用函數GetSystemMetrics將取得位圖的尺寸。

速查：Windows NT：3.1及以上版本：Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；輸入庫：user32.lib。


 函數功能：該函數改動一個菜單項的信息。

函數原型：BOOL SetMenultemlnfo（HMENU hMenu，UINT uitem，BOOL fByPosition，LPMENUITEMINFO lpmii）;

參數：

hMenu：包含菜單項的菜單的句柄。

ultem：將被修改的菜單項的標識符或位置。此參數的含義由參數fByPosition確定。

FByPosition：用於指定參數ultem的含義的值。如果此參數值為FALSE，則參數ultem是菜單項的標識符，否則，表示菜單項的位置。

lpmii：指向結構MENUITEMINFO的指針。該結構含有菜單項的信息，並且．指定將被修改的菜單項的屬性。

返回值：如果函數調用成功，返回非零值：如果函數調用失敗，返回值是零。若想獲得更多的錯誤信息，請調用GetLastError函數。

備註：為了使鍵盤加速鍵能控制位圖或自己繪製的菜單項，菜單的擁有者必須處理WM_MENUCHAR消息。參見自繪製菜單和WM_MENUCHAR消息。Windows CE環境下，只有下列值對參數lpmii指向的MENUITEMINFO結構中的fMask成員有效：MIIM_DATA;MIIM_；MIIM_TYPE;如果MIIM－TYPE被指定，結構MENUITEMINFO的fType成員必須為菜單項的當前類型，也就是說，該類型不能被改變。

速查：Windows NT：4.0及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；輸入庫：user32.lib；Unicode：在Windows NT環境下，以Unicode和ANSI方式實現。


 函數功能：該函數已過時。提供此函數只是為了與Windows的16位版本兼容。此函數對基於Windows的32位版本不起作用，因為消息隊列根據需要動態擴展。


 函數功能：該函數在指定窗口的屬性表中增加一個新項，或者修改一個現有項。如果指定的字符串不在屬性表中，那麼就增加該新的項，新項中包含該字符串和句柄，否則就用指定的句柄替換該字符串的全前句柄。

函數原型：BOOL SetProp（HWND hWnd，LPCTSTR lpString，HANDLE hData）；

參數：

hWnd：指向窗口的句柄，該窗口的屬性表要接收一個新項。

lpString：指向以null結尾的字符串指針，或者包含一個標識字符串的原子。如果該參數是一個原子，麼它必須是以前使用GlobalAddAtom函數創建的。原子是16位的數據值，它必須是放置在lpstring參數低位字中，而高位字必須為O。

hData：指向要拷貝到屬性表中的數據的句柄。該數據句柄可以標識任何對應用程序有用的值。

返回值：如果該數據句柄和字符串以加到屬性表中，那麼返回值為非零。如果該函數失敗，那麼返回為零。若想獲得更多錯誤信息，請調用GetLastError函數。

備註：在清除窗口之前（也就足在處理WM_DESTROY消息之前），應用程序必須把它加到屬性表的所項清除。應用程序必須使用RemoveProp函數來清除這些項。

速查：Windows NT：3.1以上版本：Windows：95以上版本：Windows CE：不支持：頭文件：winuser.h；文件：user32.lib：Unicode：在Windows NT環境中以Unicode和ANSI版本實現。


 函數功能：該函數設置滾動條參數，包括滾動位置的最大值和最小值，頁面大小，滾動按鈕的位置。如被請求，函數也可以重畫滾動條。

函數原型：int SetScrohnfo（HWND hWnd；int fnBar，LPSCROLLINFO lpsi，BOOL fRedraw）；

參數：

hWnd：滾動條控制或帶標準滾動條的窗體句柄，由fnBar參數決定。

fnBar：指定被設定參數的滾動條的類型。這個參數可以是下面值，含義如下：

SB_CTL：設置滾動條控制。而參數hwnd必須是滾動條控制的句柄。

SB_HORZ：設置所給定的窗體上標準水平滾動條參數。

SB_VERT：設置所給定的窗體上標準垂直滾動條參數。

IPBI：指向SCROLLINFO結構。在調用SetScrognfo之前，設置SCROLLINFO結構中cbSize成員以標識結構大小，設置成員fMask以說明待設置的滾動條參數，並且在適當的成員中制定新的參數值。成員fMask可以為下面所列復合值，含義如下：

SIF_DfSABLENOSCROLL：如果滾動條的新參數使其為沒必要，則使滾動條無效而不再移動它。

SIF_PAGE：設置滾動頁碼值到由Ipsi指向的SCROLLINFO結構的nPage成員中。

SIF_POS：設置滾動位置值到由lpsi指向的SCROLLINFO結構的nPos成員中。

SIF_RANGE：設置滾動範圍值到由lpsl指向的SCROLLINFO結構的nMin和nMax成員中。

fRedraw：指定滾動條是否重畫以反映滾動條的變化。如果這個參數為TRUE，滾動條將被重畫，否則不被重畫。

返回值：返回值是滾動盒的當前位置。

注意：SetScrolllnfo函數執行任務是檢查SCROLLINFO結構中由成員nPage和nPos值的範圍。成員uPage值必須從0到nMax- nMin＋1，成員nPos必須是在nMin和nMax-nMax-max（nPage C1，0）之間的指定值。如果任何一個值超過了這個範圍，函數將在指定範圍內為它設置一個值。

在Windows CE 2.0中，如果在參數lpsi中指定一個NULL指針，Setscrohnfo則返回0，而不返回滾動盒的當前位置。

速查：Windows NT 3.51、Windows 95、Windows CE 1.0以上，頭文件：wnuser.h；庫文件：user32.lib。


 函數功能：該函數設置所指定滾動條中的滾動按鈕的位置，如要求重畫滾動條以反映出滾動按鈕的新位置。該函數提供了向後兼容性，新的應用程序應使用SetScrolllnfo函數。

函數原型：int SetScrollPos（HWN hWnd，int nBar，int nPos，BOOL bRedraw）；

參數：

hWnd：滾動條控制或帶有標準滾動條窗體的句柄，由nBar參數值確定。

nBar：指定滾動條將被設置。這個參數可以是下面值，含義如下：

SB_CTL：設置滾動條控制中滾動翻頁盒的位置。而參數hwnd必須是滾動條控制的句柄。

SB_HORZ：設置窗體上標準水平滾動翻頁盒的位置。

SB_VERT：設置窗體上標準垂直滾動翻頁盒的位置。

nPos：指定滾動翻頁盒的新位置。這個位置必須在滾動範圍之內。若要瞭解更多有關滾動範圍的信息，請參見SetScrollRange函數。

bRedraw：指定滾動條是否被重畫以反映出新的滾動翻頁盒的位置。如果這個參數為TRUE，則滾動條將被重畫；為FALSE則滾動條不被重畫。

返回值：如果函數運行成功，其返回值是滾動翻頁盒的前一個位置。如果函數運行失敗，其返回值是0。若想獲得更多的錯誤信息，請調用GetLastError函數。

注意：如果由於其他並發函數調用，滾動條又被重畫，那麼設置參數bRedraw為負時非常有必要的。

因為說明滾動條位置的消息WM_HSCROLL和WM_VSCROLL只能為16位數據，那些只依賴於說明位置數據消息的應用程序在函數SetScrollPos的參數nPos中有一個實際最大值。

但是，因為函數SetScrolllnfo，SetScrollPos，SetScrollRange，GetScrollPos， 和 GetScrollRange都支持32位的滾動條位置數據，所以有一個解決16位WM_HSCROLL和WM_VSCROLL消息阻礙的途徑，請參見函數GetScrolllnfo的有關技術說明。

速查：Windows NT 3.1、Windows 95、Windows CE 2.0以上，頭文件：winuser.h；庫文件：user32.lib。


 函數功能：該函數設置所指定滾動條位置的最大最小值。

函數原型：BOOL SetScrollRange（HWND hWnd，int nBar，int nMinPos，int nMaxPos，BOOL bRedraw）；

參數：

hWnd：滾動條控制或帶有標準滾動條窗體的句柄，由nBar參數值確定。

nBar：指定滾動條將被設置。這個參數可以是下面值，含義如下：

SB_CTL：設置滾動條控制的範圍。而參數hwnd必須是滾動條控制的句柄。

SB_HORZ：設置窗體上標準水平滾動翻頁盒的範圍。

SB_VERT：設置窗體上標準垂直滾動翻頁盒的範圍。

nMinPos：指定滾動位置的最小值。

nMaxPos：指定滾動位置的最大值。

bRedraw：指定滾動條是否被重畫以反映變化。如果這個參數為TRUE，滾動條將被重化；如果為FALSE則不被重畫。

返回值：如果函數運行成功，返回值為非零；如果函數運行失敗，返回值為零。若想獲得更多的錯誤信息，請調用GetLastError函數。

注意：可以使用setScrollRange函數把nMinPos和nMaxPos設置為一樣的值從而隱藏起滾動條。在處理滾動條消息時，應用程序可以不用調用函數SetScrollRange來隱藏滾動條。新的應用程序使用函數ShowScrollBar來隱藏滾動條。

如果調用函數SetScrollPos之後馬上調用函數SetScrollRange，則SetScrollPos中的bRedraw參數一定為零，以防止滾動條被畫兩次。

標準滾動條的缺省範圍時0到100。滾動條控制的缺省值為NULL（參數nMinPos和nMaxPos的值均為零）。兩個範圍值之間的不同之處在於由參數nMinPos和nMaxPos指定的值不能超過MAXLONG的值。

因為說明滾動條位置的消息WM_HSCROLL和 WM_VSCROLL只能為16位數據，那些只依賴於說明位置數據消息的應用程序在函數SetScrollRange的參數nMaxPos中有一個實際最大值65，535。但是，因為函數SetScrolllnfo，SetScrollPos， SetScrollRange，GetScrolllnfo，GetScrollPos，和GetScrollRange都支持32位的滾動條位置數據，所以有一個解決16位WM_HSCROLL和WM_VSCROLL消息阻礙的途徑，請參見函數GetScrolllnfo的有關技術說明。

速查：Windows NT 3.1、Windows CE 2.0以上，頭文件：winuser.h；庫文件：user32.lib。


 函數功能：該函數已經過時，該函數只是為與16位版的窗口程序兼容而提供的。新的輸入模塊不允許系統的模塊窗口。


 函數功能：該掛鉤函數是一個由應用程序或庫定義的回調函數，該回調函數與PrintDlg函數一起使用。

其他同函數19。

函數原型：UINT CALLBACK SetupHookProc（HWND hdlg，UINT uiMsg，WPARAM wParam，LPARAM IParam）；

參數：

hdlg：指向消息指定給的Print公共對話框窗口的句柄。

UiMsg：標識接收的消息。

wParam：指定有關消息的其他信息、精確的意義由uiMSg參數的值來決定。

IParam：指定有關消息的其他信息、精確的意義由uiMsg參數的值來決定。

返回值：如果掛鉤函數返回值為零，缺省對話框函數處理消息；返回非零值，將忽略消息。

備註；PrintSetup對話框函數已經被PageSetup對話框所取代。這需要用新的應用程序來使用。但是，為了一致性，PrintDlg函數仍支持Print Setup對話框的顯示。可以提供一個SetupHookProc函數給PrintSetup對話框，從便處理指定給對話框函數的消息和通知。為使掛鉤函數生效，要用傳遞到對話創建函數的PRINTDLG結構，且指定IpfnSetupHook成員中掛鉤函數的地址和指定Flags成員中PD_ENABLESETUPHOOK標誌。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：commdlg.h；庫文件：用戶自定義。


 函數功能：該函數顯示或隱藏所指定的滾動條。

函數原型：BOOL ShowScrollBar（HWND hWnd，int wBar，BOOL bShow）；

參數：

hWnd：根據參數wBar值，處理滾動條控制或帶有標準滾動條窗體。

wBar：指定滾動條是被顯示還是隱藏。這個參數講師下面值之一，具體含義如下：

SB_SOTH：顯示或隱藏窗體的標準的水平或垂直滾動條。

SB_CTL：顯示或隱藏滾動條控制。參數hWnd必須是指向滾動條控制的句柄。

SB_HORZ：顯示或隱藏窗體的標準的水平滾動條。

SB_VERT：顯示或隱藏官體的標準的垂直滾動條。

bShow：指定滾動條是被顯示還是隱藏。此參數為TRUE，滾動條將被顯示，否則被隱藏。

返回值：如果函數運行成功，返回值為非零；如果函數運行失敗，返回值為零。若想獲得更多的錯誤信息，請調用GetLastError函數。

注意：當處理滾動條消息時，不能調用這個函數隱藏滾動條。

速查：Windows NT 3.1、Windows 95以上，頭文件：winuserh；庫文件：user32.lib。


 函數功能：該函數返回指定資源字節數大小。

函數原型：DWORD SizeofResource（HMODULE hModule，HRSRC hReslnfo）；

參數：

hModule：包合資源的可執行文件模塊的句柄。

hReslnfo：資源句柄。此句柄必須由函數FindResource或FindResourceEx來創建。

返回值：如果函數運行成功，返回值資源的字節數。如果函數運行失敗，返回值為零。若想獲得更多的錯誤信息，請調用GetLastError函數。

速查：Windows NT 3.1、Windows 95、Windows CE 1.0以上，頭文件：winbase.h；庫文件：kerne132.lib。


 函數功能：該函數是一個庫定義的回調函數，當SOUNDSENTRY易用特性存在，並且一個基於win32的應用程序（或者在窗口內運行的應用程序）通過計算機的內置揚聲器發聲時，它產生一個控制的可視化消息。

函數原型：LRESULT CALLBACK SOUNDSENTRYProc（DWORD dwMillisec，DWORD fdwEffect）；

參數：

Millisec：指定可視化消息的持續時間，以毫秒為單位。該消息是在一個基於win32的應用程序（或運行在窗口的應用程序）發聲時顯示出來的。

tdwEffect：指定要顯示的可視化消息的類型。當前值通常應為SSWF_CUSTOM。

返回值：如果可視化消息已經或將要正確顯示，那麼返回值為TRUE，如果消息異步，並當調用該函數時其狀態無效，那麼應該返回TRUE。如果出錯使得消息無法顯示，那麼返回值為FALSE。若想獲得更多錯誤信息，請調用GetLastError函數。

備註：包含SOUNDSENTRYProc函數的庫必須是一個32位的DLL，並且該 DLL必須導出名為SOUNDSENTRYProc的函數，即供外部調用和連接。SOUNDSENTRYProc函數只是在應用程序或庫調用SystemParameterslnfo函數之後才調用。SystemParameterslnfo函數指定SPI_SETSOUNDSENTRY項的值以及SOUNDSENTRY結構的地址，在SOUNDSENTRY結構中，成員iWindowsEffect的值設為SSWF_CUSTOM。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；庫文件：用戶自定義。


 函數功能：該函數將指定的虛擬鍵碼和鍵盤狀態翻譯為相應的字符或字符串。該函數使用由給定的鍵盤佈局句柄標識的物理鍵盤佈局和輸入語言來翻譯代碼。

函數原型：int ToAsciiEx(UINT uVirtKey,UINT uScanCode，PBYTE lpKeyState，LPWORD lpChar,UINT uFlags, HKL dwhkl);

參數：

nVirtkey：指定要翻譯的虛擬鍵碼。

uScanCode：定義被翻譯鍵的硬件掃瞄碼。若該鍵處於up狀態，則該值的最高位被設置。

IpKeyState：指向包含當前鍵盤狀態的一個256字節數組。數組的每個成員包含一個鍵的狀態。若某字節的最高位被設置，則該鍵處於down狀態。若最低位被設置，則表明該鍵被觸發。在此函數中，僅有Capslock鍵的觸發位是相關的。Numlock和Scroll lock鍵的觸發狀態將被忽略。

lpchar：指向接受翻譯所得字符或字符串的緩衝區。

uFlags：定義一個菜單是否處於激活狀態。若一菜單是活動的，則該參數為1，否則為0。

dwnkl：翻譯給定代碼所使用的鍵盤佈局的句柄。該參數可以是先前LoadKeyboardLayout函數返回的鍵盤佈局句柄。

返回值：同上。

速查：Windows NT：4.0以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winustr.n；庫文件：user32.lib。


 函數功能：該函數將給定的虛擬鍵碼和鍵盤狀態翻譯成相應的字符或字符串。

函數原型: int ToUnicodeEx(UINT wVirtKey，UINT wScanCode，PBYTE lpKeyState，LPWSTR pwszBuff，int cchBuff，UINTwFlags,HKL dwhkl);

參數:

wVirtKey：定義將被翻譯的虛擬鍵碼。

WScanCode：定義被翻譯鍵的硬件掃瞄碼。若該值的最高為被置為1，則該鍵處於uP狀態。

LpKeyState：指向一個包含當前鍵盤狀態的256字節數組。數組中的每個成員（字節）包含了一個鍵的狀態。若一字節的最高位被置為1，則該鍵處於down狀態。

pwszBuff:接受翻譯所得Unicode字符或字符串的緩衝區指針。

cchBuff：定義pwszBuff參數指向的緩衝區中字符串的大小。

wFlags：形成函數執行條件的一個標誌域集。若一個菜單處於激活狀態，則將第0位設置為1。第1位到第31位保留。

dwhkl：用鍵盤層翻譯指定的代碼。

返回值；該函數返回值同ToUnicode。

速查：Windows NT：4.0及以上版本；Windows：不支持；Windows CE：不支持；頭文件：Winuser.h；庫文件：user32.lib。


 函數功能：當在指定時間內鼠標指針離開或盤旋在一個窗口上時，此函數寄送消息。

函數原型：BOOL TrackMouseEvent（LPTRACKMOUSEEVENT lpEventTrack）；

參數：

lpEventTrack；指向結構TRACKMOUSEEVENT的指針。

返回值：如果函數調用成功，返回非零值；如果函數調用失敗，返回值是零。若想獲得更多的錯誤信息，請調用GetLastError函數。

此函數能寄送如下消息：

WM_MOUSEHOVER：在上次調用TrackMouseEvent指定的時間裡，鼠標盤旋在窗口的客戶區。當此消息產生時，盤旋跟蹤停止。如果需要進一步的鼠標盤旋跟蹤，應用程序應當再次調用TrackMouseEvent。

WM_MOUSELEAVE：鼠標離開上次調用TrackMouseEvent時指定的窗口客戶區。當此消息產生時，所有由TrackMouseEvent要求的跟蹤都被取消。當鼠標再次進入窗口，並且要求進一步的鼠標盤旋跟蹤時，應用程序必須調用TrackMouseEvent。

備註：當鼠標指針在指定時間內停留在指定矩形內，就被認為是處於盤旋狀態。調用函數

SystemParameterslnfo並使用SPI_GETMOUSEAOVERWIDTH，SPI_GETMOUSEHOVERAEIGHT和

SFI_GETMOOSEAOVERTIME值來取得矩形的大小和時間。

速查：Windows NT 4.0及以上版本；Windows 98及以上版本；Windows CE：1.0及以上版本；頭文件：winuser.h；輸入庫：user32.lib。


 函數功能：翻譯加速鍵表。該函數處理菜單命令中的加速鍵。該函數將一個WM－DEYDOUN或WM-SYSDEYDOWN消息翻譯或一個WM-COMMAND或WM-SYSCOMMAND消息（如果在給定的加速鍵表中有該鍵的入口），然後將WM-COMMAND或WM－SYSCOMMAND消息直接送到相應的窗口處理過程。

TranslateAccelerator直到窗口過程處理完消息後才返回。

函數原型：int TranslateAccelerator（HWND hWnd,HACCEL hAccTable，LPMSG IpMsg）;

參數：

hWnd:窗口句柄，該窗口的消息將被翻譯。

hAccTable:加速鍵表句柄。加速鍵表必須由LoadAccelerators函數調用裝入或由CreateAccd_eratorTable函數調用創建。

LpMsg:MSG結構指針，MSG結構中包含了從使用GetMessage或PeekMessage函數調用線程消息隊列中得到的消息內容。

返回值：若函數調用成功，則返回非零值；若函數調用失敗，則返回值為零。若要獲得更多的錯誤信息，可調用GetLastError函數。

備註：為了將該函數發送的消息與菜單或控制發送的消息區別開來，使WM_COMMAND或WM_SYSCOMMAND消息的wParam參數的高位字值為1。用於從窗口菜單中選擇菜單項的加速鍵組合被翻譯成WM－SYSCOMMAND消息：所有其他的加速鍵組合被翻譯成WM-COMMAND。若TransLateAccelerator返回非零值且消息已被翻譯，應用程序就不能調用TranslateMessage函數對消息再做處理。每個加速鍵不一定都對應於菜單命令。若加速鍵命令對應於菜單項，則WM－INITMEMU和WM－INITMENUPOPUP消息將被發送到應用程序，就好像用戶正試圖顯示該菜單。然而，如下的任一條件成立時，這些消息將不被發送：窗口被禁止，菜單項被禁止。

加速鍵組合無相應的窗口菜單項且窗口己被最小化。鼠標抓取有效。有關鼠標抓取消息，參看SetCapture函數。若指定的窗口為活動窗口且窗口無鍵盤焦點（當窗口最小化時一般是這種情況），TranslatMssage翻譯WM－SYSDEYUP和WM-SYSKEYDOWN消息而不是WM－DEYUP和WM－DEYDOWN消息。

當按下相應於某菜單項的加速鍵，而包含該菜單的窗口又已被最小化時，TranslateMessage不發送WM－COMMAND消息。但是，若按下與窗口菜單或某單項的任一項均不對應的加速鍵時，TranslateMessage將發送一WM-COMMAND消息，即使窗口己被最小化。

Windows CE：所有的加速鍵消息被翻譯成WM－COMMAND消息；Windows CE不支持WM－SYSCOMMAND消息。

速查：Windows NT：3.1 及以上版本；Windows：95及以上版本：Windows CE：1.0及以上版本；頭文件：windows.h;庫文件：user32.lib; Unicode：在Windows NT實現為Unicode和ANSI兩種版本。


 函數功能：該函數處理與指定MDI客戶窗口相聯繫的多文檔接口（MDI）子窗口的菜單命令的加速鍵響應。該函數轉換WM_KEYUP和WM_KEYDOWN消息為WM_SYSCOMMAND消息，並把它的發送給相應MDI子窗口。

函數原型：BOOL TranslateMDlSysAccel（HWND hWndClient，LPMSG IpMsg）；

參數：

hWndClient：MDI客戶窗口句柄。

lpMsg：由GetMessage或PeedMessage函數檢索到的消息的指針，這個消息必須為MSG結構，並包含來自應用程序消息隊列的消息信息。

返回值：如果消息被轉換為系統命令，則返回值為非零值。如果消息未轉換為系統命令，則返回值為0。

速查：Windows NT： 3.1及以上版本；Windows：95及以上版本：Windows CE：不支持；頭文件：winuser.h；

輸入庫：user32.lib。


 函數功能：該函數將虛擬鍵消息轉換為字符消息。字符消息被寄送到調用線程的消息隊列裡，當下一次線程調用函數GetMessage或PeekMessage時被讀出。

函數原型：BOOL TranslateMessage（CONST MSG★lpMsg）；

參數：

IpMsg：指向含有消息的MSG結構的指針，該結構裡含有用函數GetMessage或PeekMessage從調用線程的消息隊列裡取得的消息信息。

返回值：如果消息被轉換（即，字符消息被寄送到調用線程的消息隊列裡），返回非零值。如果消息是WM_kEYDOWN，WM_KEYUP WM_SYSKEYDOWN或WM_SYSKEYUP，返回非零值，不考慮轉換。如果消息沒被轉換（即，字符消息沒被寄送到調用線程的消息隊列裡），返回值是零。

備註：此函數不修改由參數IpMsg指向的消息。

WM_KEYDOWN和WM_KEYUP組合產生一個WM_CHAR或WM_DEADCHAR消息。

WM_SYSKEYDOWN和WM_SYSKEYUP組合產生一個SYSWM_CHAR或 WM_SYSDEADCHAR消息。TtanslateMessage為那些由鍵盤驅動器映射為ASCll字符的鍵產生WM_CHAR消息。

如果應用程序為其他用途處理虛擬鍵消息，不應調用TranslateMessage。例如，如果件ThranslateAccelerator返回一個非零值，應用程序不應調用TranslateMessage。

Windows CE：Windows CE不支持掃瞄碼或擴展鍵標誌，因此，不支持由TranslateMessage產生的WM_CHAR消息中的IKeyData參數（IParam）取值16-24。

TranslateMessage只能用於轉換調用GetMessage或PeekMessage接收的消息。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：winuser.h；輸入庫：user32.lib。


 函數功能：該函數移去一個鍵盤佈局。

函數原型：BOOL UnloadKeyboardLayout（ HKL hkl）；

參數：

hkl：將被卸載的鍵盤佈局句柄。

返回值：若函數調用成功，返回值不為0。若函數調用失敗，返回值為0。函數調用失敗可有以下幾種原因：傳遞了一個無效的鍵盤佈局句柄。鍵盤佈局己被預先調入。鍵盤佈局正被使用。

若要獲得更詳盡的錯誤信息，可以調用GetLastError函數。

備註：Windows 95：UnloadKeyboardLayout不能卸載系統缺省的鍵盤佈局。這樣可以確保對於用戶敲入的shell命令和文件系統使用的名字總有一個合適的字符集可用。

Windows NT：UnloadKeyboardLayout能夠卸載系統缺省的鍵盤佈局。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；庫文件：user32.lib。


 函數功能能：該函數已過時。這個函數僅兼容於16位的Windows，對於32位的應用程序不必要解鎖資源。


 函數功能：該函數釋放調用線程先前登記的熱鍵。

函數原型：BOOL UnregisterHotKey（HWND hWnd，int id）；

參數：

hWnd：與被釋放的熱鍵相關的窗口句柄。若熱鍵不與窗口相關，則該參數為NULL。

id：定義被釋放的熱鍵的標識符。

返回值：若函數調用成功，返回值不為0。若函數調用失敗，返回值為0。若要獲得更多的錯誤信息，可以調用GetLastError函數。

速查：Windows NT： 3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：Winuser.h;庫文件：user32.lib。


 函數功能：該函數增加，刪除，或替代某可執行文件中的資源。

函數原型：BOOL UPdateResource（HANDLE hUpdate，LPCTSTR lPTyPe，LPCTSTR IPName，WORD wLanguage，LPVOID lgData，DWORD cbData）；

參數：

hUpdate：指定更新文件句柄。此句柄由BeginUpdateResource函數返回。

lpType：指向說明將被更新的資源類型的字符串，它以NULL為終止符。這個參數可以是一個通過宏MAKENTRESOURCE傳遞的整數值，含義參見EnumResLangProc＼lpType。

lpName：指向說明待被更新的資源名稱的字符串，它以NULL為終止符。這個參數可以是一個通過宏MAKEINTRESOURCE傳遞的整數值。

wLanguage：指定將被更新資源的語言標識。要瞭解基本的語言標識符以及由這些標識符組成的字語言標識符的列表，可參見宏MAKELANGID。

lpData：指向被插入可執行文件的資源數據的指針。如果資源是預定義類型值之一，那麼數據必須是有效且適當排列的。注意這是存儲在可執行文件中原始的一進制數據，而不是由Loadlcon，LoadString或其他裝載特殊資源函數提供的數據。所有包含字符串、文本的數據必須是Unicode格式；IpData不能指向ANSI數據。

如果lpData為NULL，所指定的資源將從可執行文件中被刪除。

cbData：指定lpData中的資源數據數據大小，以字節計數。

返回值：如果函數運行成功，返回值為非零；如果函數運行失敗，返回值為零。若想獲得更多的錯誤信息，請調用GetLastError函數。

注意：應用程序重複使用UpdateResource去改變資源數據。每次UpdateResource調用都要佔用系統內部的一個增加、刪除、替代的列表，而實際上並沒有將數據寫到可執行文件中。應用程序必須通過使用EndUpdateResource函數將每次積累的變化寫入可執行文件中。

速查：Windows NT 3.1以上，頭文件：winbase.h；庫文件：kerne132.lib；Unicode：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數將一個字符翻譯成相應的虛擬鍵碼和對於當前鍵盤的上擋狀態。該函數使用由給定的鍵盤佈局句柄標識的物理鍵盤佈局和輸入語言來翻譯字符。

函數原型：SHORT VkKeyScanEx（TCHA ch,HKL dwhkf）；

參數：

ch:定義被翻譯成虛擬鍵碼的字符。

Dwhkl：用於翻譯字符的鍵盤佈局句柄。該參數值可以是任意先前由LoadKeyboardLayout函數返回的鍵盤佈局句柄。

返回值：同VkKeyScan。

速查: Windows NT：4.0及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；庫文件：user32.lib; Unicode：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數產生對其他線程的控制，如果一個線程沒有其他消息在其消息隊列裡。此函數中止線程，直到一個新消息被放入該線程的消息隊列裡，再返回。

函數原型；BOOL WaitMessage（VOID）

參數：無。

返回值：如果函數調用成功，返回非零值；如果函數調用失敗，返回值是零。若想獲得更多的錯誤信息，請調用GetLastError函數。

備註：在線程調用一個函數來檢查隊列後，如果有未經閱讀的輸入在消息隊列裡，WaitMessage不返回。這是因為PeekMessage，GetMessage，GetQueueStatus：WaitMessage，MsgWaitForMultipleObjects，MsgWaitForMulitpleObjectEx等函數檢查隊列後，改變隊列的狀態信息這樣輸入不再被認為是新的。如果連續調用WaitMessage，將等到指定類型的新輸入到達後才返回。已存在的未讀過的輸入（在上次線程檢查隊列之前接收的）被忽略。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；輸入庫：user32.lib。


 函數功能：該函數是一個應用程序定義的函數。它處理發送給窗口的消息。WNDPROC類型定義了一個指向該回調函數的指針。WindowProc是用於應用程序定義函數的佔位符。

函數原型：LRESULT CALLBACK WindowProc（HWND hwhd，uMsg，WPARAM wParam，LPARAM IParam）；

參數：

hwnd：指向窗口的句柄。

uMsg：指定消息類型。

wParam：指定其餘的、消息特定的信息。該參數的內容與UMsg參數值有關。

IParam：指定其餘的、消息特定的信息。該參數的內容與uMsg參數值有關。

返回值：返回值就是消息處理結果，它與發送的消息有關。

速查：Windows NT：3.1以上版本；Windows：95以上版本；Windows CE：1.0 以上版本；頭文件：winuser.h；庫文件：用戶自定義。


 函數功能：該函數被系統調用，作為一個32位應用程序的入口點。

函數原型：int WINAPI WinMain（HINSTANCEE hlnstance，HINSTANCE hPrelnstance，LPSTR lpCmdLine，int nCmdShow）；

參數；

hinstance：應用程序當前事例的句柄。

hPrelnstance：應用程序的前事例的句柄。對於一個32的位程序，該參數總為NULL。

如果需要檢測另外一個事例是否已經存在，則使用CreateMutex函數創建一個獨一無二的名字。即使互斥名已經存在，CreateMutex函數也是成功的，但是GetLastError函數將返回 ERROR_ALREADY_EXISTS，這就表明在應用程序中有另外一個事例存在，因為它首先創建了互斥名。

lpCmdLine：指向應用程序命令行的空字符串的指針，不包括函數名。獲得整個命令行，參看GetCommandLine。

nCmdShow：指明窗口如何顯示。該參數可以是下列值之一：

SW_HIOE：隱藏窗口並且激活另外一個窗口。

SW_MINIMIZE：最小化指定的窗口，並且激活在系統表中的頂層窗口。

SW_RESTORE：激活並顯示窗口。如果窗口已經最小化或最大化，系統將以恢復到原來的尺寸和位置顯示窗口（與SW_SHOWNORMAL相同）。

SW_SHOW：激活一個窗口並以原來的尺寸和位置顯示窗口。

SW_SHOWMAXIMIZED：激活窗口並且將其最大化。

SW_SHOWMINIMIZED：激活窗口並將其目標化。

SW_SHOWMINNOACTIVE：將一個窗口顯示為圖標。激活窗口維持活動狀態。

SW_SHOWNA：以窗口的當前狀態顯示窗口。激活窗口保持活動狀態。

SW_SHOWNOACTIVATE：以窗口的最近一次的尺寸和位置顯示窗口。激活窗口維持激活狀態。

SW_SHOWNORMAL：激活並顯示窗口。如果窗口最大化或最小化，系統將其恢復到原來的尺寸和位置（與SW_RESTORE相同）。

返回值：如果函數成功，當它接收到一個WM_QUIT消息時就中止，函數應該返回在該消息的wParam參數的退出值。如果函數在進入消息循環時退出，應該返回零。

備註：WinMain函數應初始化應用程序，顯示主窗口，進入一個消息接收一發送循環，這個循環是應用程序執行的其餘部分的頂級控制結構。當接收到一個WM_QUIT消息時，程序就中止。這時，WinMain函數應退出應用程序，並且返回傳遞給WM_QUIT消息的wParam參數的值。如果由於調用PostQuitMessage函數而接收到WM_QUIT消息，wParam的值是PostQuiMessage函數的nExitCode的值。請參看「創建一個窗口循環」。

ANSI應用程序可以使用WinMain函數的lpCmdLine參數進入命令行字符串（除了程序名之外）。WinMain不能返回Unicode字符串的原因是IpCmdLine使用的是LPSTR數據類型，而不是LPTSTR類型。GetCommandLine函數可以用於進入命令行的Unicode字符串，因為它使用的是LPTSTR類型。

Windows CE：Windows CE不支持下列 nCmdLine參數值：

SW_MINIMIZE；SW_RESTORE；SW_RESTORE；SW_SHOWMAXMIZED

SW_SHOWMINIMIZED；SW_SHOWMINNOACTIVE

速查：Windows NT：3.1以上版本；Windows：95以上版本：Windows CE：1.0以上版本；頭文件：Winbase.h庫文件：用戶自定義。


 函數功能：該函數從指定的文件裡增加字體資源到系統字體表，這些字體可隨後被任何基於Win32的應用程序用來作正文輸出。

函數原型：int AddFontResource(LPCTSTR lpszFilename)；

參數：

lpszFilename：指向含有一個有效的字體文件的文件名，它是以\0結束的字符串的指針，此文件名可以指定一個.FON字體資源文件、一個.FNT未加工位圖字體文件、一個.TTF未加工TrueType文件或一個.FON TrueType資源文件。

返回值：如果函數調用成功，則返回值為增加的字體數；如果函數調用失敗，返回值是0。

Windows NT：若想獲得更多錯誤信息，請調用GetLastError函數。

備註：任何增加或刪除系統字體表中字體的應用程序都必須以發WM_FONTCHANGE消息給操作系統中所有最頂層的窗口來通過其他窗口字體的改變，應用程序調用SendMessage和設置參數hwnd為HWND_BROADCAST來發送消息。

當一個應用程序不再需要一種由調用AddFontResource加載進來的字體資源，應該用RemoveFontResource來刪除這種資源。

Windows CE：版本1.0僅支持光柵字體。Windows CE 2.0版本支持使用TrueType字體或光柵字體其中之一的系統，字體類型（光柵或TrueType）在系統設計時就已確定，不能被一個應用程序修改。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：wingdi.h；庫文件：gdi32.lib；Unicode：在Windows NT環境下以Unicode和ANSI兩種方式實現。


ADDJOB_INFO_1

ADDJOB_INFO_1——請參考AddJob
類型定義
Type ADDJOB_INFO_1 ' 8 Bytes lpPath As Long JobId As Long End Type
說明
Contains information regarding a print job
字段表
字段 | 類型及說明
lpPath | Long，到文件名的一個路徑 （Contains the path and filename that the application can use to store the print job.）
JobId | Long，一個作業編號


 函數功能：該函數用來顯示透明或半透明像素的位圖。

函數原型：AlphaBlend(HDC hdcDest,int nXOriginDest,int nYOriginDest,int nWidthDest,int hHeightDest,HDC hdcSrc,int nXOriginSrc,int nYOriginSrc,int nWidthSrc,int nHeightSrc,BLENDFUNCTION blendFunction)；

參數：

hdcDest：指向目標設備環境的句柄。

nXoriginDest：指定目標矩形區域左上角的X軸坐標，按邏輯單位。

nYOriginDest：指定目標矩形區域左上角的Y軸坐標，按邏輯單位。

nWidthDest：指定目標矩形區域的寬度，按邏輯單位。

hHeghtdest：指向目標矩形區域高度的句柄，按邏輯單位。

hdcSrc：指向源設備環境的句柄。

nXOriginSrc：指定源矩形區域左上角的X軸坐標，按邏輯單位。

nYOriginSrc：指定源矩形區域左上角的Y軸坐標，按邏輯單位。

nWidthSrc：指定源矩形區域的寬度，按邏輯單位。

nHeightSrc：指定源矩形區域的高度，按邏輯單位。

blendFunction：指定用於源位圖和目標位圖使用的alpha混合功能，用於整個源位圖的全局alpha值和格式信息。源和目標混合功能當前只限為AC_SRC_OVER。

返回值：如果函數執行成功，那麼返回值為TRUE；如果函數執行失敗，那麼返回值為FALSE。

Windows NT：若想獲取更多錯誤信息，請調用GetLastError函數。

備註：如果源矩形區域與目標矩形區域大小不一樣，那麼將縮放源位圖與目標矩形區域匹配。如果使用SetStretchBltMode函數，那麼iStretchMode的值是BLACKONWHITE和WHITEONBLACK，在本函數中，iStretchMode的值自動轉換成COLORONCOLOR。目標坐標使用為目標設備環境當前指定的轉換方式進行轉換。源坐標則使用為源設備環境指定的當前轉換方式進行轉換。如果源設備環境標識為增強型圖元文件設備環境，那麼會出錯（並且該函數返回FALSE）。如果目標和源位圖的色彩格式不同，那麼AlphaBlend將源位圖轉換以匹配目標位圖。

AlphaBlend不支持鏡像。如果源或目標區域的寬度或高度為負數，那麼調用將失敗。

速查：Windows NT：5.0及以上版本；Windows：98及以上版本；Windows CE：不支持；頭文件：wingdi.h；庫文件：作為一個資源包含在msimg32.dll中。


 函數功能：該函數替換指定邏輯調色板上的入口點。

函數原型：BOOL AnimatePalette(HPALETTE hpal, UINT iStartindex, UINT cEntries, CONST PALETTEENTRY *ppe)；

參數：

hpal：邏輯調色板的句柄。

iStartIndex：指定要被替換的第一個邏輯調色板入口點。

cEntries：指定要被替換的入口點數目。

ppe：指向PALETTEENTRY數組結構第一個元素的指針，用來替換當前的入口點。

返回值：如果執行成功，返回非零值；如果失敗，返回值是零，若想獲得更多錯誤信息，請調用GetLastError函數。

註釋：通過調用GetDeviceCaps函數和定義RASTERCAPS常量，一個應用可以確定一個設備是否支持調色板操作。僅當LOGPALETTE結構的palPalEntry成員置有PC_RESERVED標誌時，AnimatePalette函數才能改變入口點。如果給定的調色板與一個活動窗口相聯繫，那麼調色板中的色彩立即被替換。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：wingdi.h；庫文件：gdi32.lib。


BITMAP
類型定義
Type BITMAP ' 24 bytes bmType As Long bmWidth As Long bmHeight As Long bmWidthBytes As Long bmPlanes As Integer bmBitsPixel As Integer bmBits As Long End Type
字段表
字段 | 類型及說明
bmType | Long，Must be 0.
bmWidth | Long，Width of the bitmap in pixels.
bmHeight | Long，Height of the bitmap in pixels.
bmWidthBytes | Long，The number of bytes of data in a raster line. Must be an even number.
bmPlanes | Integer，The number of color planes in the bitmap.
bmBitPixel | Integer，The number of bits per pixel on each plane.
bmBits | Long，Address of the actual bitmap data.
註解
參考CreateBitmapIndirect函數


BY_HANDLE_FILE_INFORMATION
類型定義
Type BY_HANDLE_FILE-INFORMATION ' 52 Bytes dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME dwVolumeSerialNumber As Long nFileSizeHigh As Long nFileSizeLow As Long nNumberOfLinks As Long nFileIndexHigh As Long nFileIndexLow As Long End Type
說明
Used by the GetFileInformationByHandle function to retrieve information about a file.
字段表
字段 | 類型及說明
dwFileAttributes | Long，Refer to the File Attribute Types table that follows.
ftCreationTime | FILETIME，Time of file creation. Zero if file system does not support file creation time.
ftLastAccessTime | FILETIME，Time of last access to this file. Zero if file system does not support file last access time.
ftLastWriteTime | FILETIME，Time of last write operation to this file.
dwVolumeSerialNumber | Long，Serial number of the volume that contains the file.
nFileSizeHigh | Long，High-order word of the file size.
nFileSizeLow | Long，Low-order word of the file size.
nNumberOfLinks | Long，Number of links to this file. Always 1 for the FAT file system and HPFS.
nFileIndexHigh | Long，High-order word of a unique identifier associated with the file.
nFileIndexLow | Long，Low-order word of a unique identifier associated with the file. Use this element and the dwVolumeSerialNumber to uniquely identify a file.
File Attribute Types table
FILE_ATTRIBUTE_ARCHIVE Archive file. FILE_ATTRIBUTE_COMPRESSED The file or directory is compressed. FILE_ATTRIBUTE_DIRECTORY File is a directory. FILE_ATTRIBUTE_HIDDEN File is hidden. FILE_ATTRIBUTE_NORMAL File is normal (no other file attributes are specified). FILE_ATTRIBUTE_READONLY File is read-only. FILE_ATTRIBUTE_SYSTEM File is a system file. FILE_ATTRIBUTE_NORMAL File is a temporary file.
註解
dwFileAttributes字段包含了帶有FILE_ATTRIBUTE_???前綴的一個或多個常數的組合，它們對文件屬性進行了描述。nNumberOfLinks則列出了NFS下對一個文件的鏈接數量。nFileIndexHigh和nFileIndexLow字段合併起來構成一個64位數字，它對磁盤捲中的一個文件進行了唯一標誌


 函數功能：該函數把缺省顯示設備的設置改變為由lpDevMode設定的圖形模式，要改變一個特定顯示設備的設置，請使用ChangeDisplaySettingEx函數。

函數原型：LONG ChangeDisplaySettings (LPDEVMODE lpDevMode, DWORD dwflags)；

參數：

lpDevMode：指向一個描述轉變圖表的DEVMODE的指針。DEVMODE的dmSize參數必須依DEVMODE結構的大小、字節進行初始化，dmDriveExtra參數必須初始化來顯示DEVMODE隨後的驅動數據的字節數，另外還可以選用以下參數：

dmBitsPerPel每個像素的位數，dmPelsWidth像素寬度，dmPelsHeight像度高度，dmDisplayFlage模式標誌。

dmDisplayFrequency模式頻率。

dmposition在多顯示配置中設備的位置（適用於Windows 98、Windows NT 5.0及以後版本）。

除了設置好DEVMOD結構中諸多元素的值之外，還必須要正確地設置dmFields元素中的標誌。這些標誌表明了DEVMODE結構中哪個元素在改變顯示設置時使用了。如果在dmFields中沒有設置正確的位，那麼顯示設置將不會發生變化。請設置好以下的標誌：

DM_BITSPERPEL使用dmBitsPerPel的值，DM_PELSWIDTH使用dmPelsWidth的值，

DM_PELSHEIGHT使用dmPelsHeight的值，DM_DISPLAYFLAGS使用dmDisplayFlags的值，

DM_DISPLAYFREQUENCY使用dmDisplayFrequency的值。

DM_POSITION使用fdmPosition的值（適用於Windows98、WindowsNT5.0）。

如果lpDevMode為空。那麼顯示設置就使用註冊表中的所有當前值。在顯示模式動態地調整之後要想再回到缺省的模式，最簡單的辦法就是把lpDevMode參數置為空，使dwFlags參數置為0。

dwflags：表明了圖形模式如何改變，它可能是如下的幾種形式中的一種：

0：表明當前屏幕的圖形模式要動態地改變。

CDS_UPDATEREGISTRY：表明當前屏幕的圖形模式會動態地變化，並且該圖形模式會更新註冊表。該模式信息存貯在用戶檔案中。

CDS_TEST：系統檢測是否要設置被請求的圖形模式。

CDS_FULLSCREEN：從本質上講該模式是暫時的。

CDS_GLOBAL：該設置保存在全局設置區域內， 因此它們會影響所有的用戶。該標誌僅在與標誌一起使用時才有效。CDS_SET_PRIMARY：該設備成為首要設備。

CDS_RESET：設置要改變，即使請求的設置與當前設置一樣。CDS_NORESET：設置保存在註冊表中，但是它不起作用，該標誌只有與CDS_UPDATEREGISTRY標誌一起使用時才有效。

指定CDS_TEST允許一個應用確定哪個圖形模式真正的有效。但並不會使系統變為那個有效的圖形模式。

如果CDS_UPDATEREGISTRY被指定並且它可能會動態地改變圖形模式。則註冊表中保存該信息並且返回DISP_CHANGE_SUCCESSFUL如果不可能使用圖形模式動態地改變，則註冊表中保存該信息並且返回DISP_CHANGE_RESTART。

Windows NT：如果指定了CDS_UPDATEREGISTRY並且在註冊表中不能保存該信息，則圖形模式不會改變，並且返回DISP_CHANGE_NOTUPDATERD。

返回值：ChangeDisplaySettings函數的返回值如下：

DISP_CHANGE_SUCCESSFUL：設備改變成功。

DISP_CHANGE_RESTART：為使圖形模式生效計算機必須重新啟動。

DISP_CHANGE_BADFLAGS：標誌的無效設置被傳送。

DISP_CHANGE_NOTUPDATED：在WindowsNT中不能把設置寫入註冊表。

DISP_CHANGE_BADPARA：一個無效的參數被傳遞。它可以包括一個無效的標誌或標誌的組合。

DISP_CHANGE_FAILED：指定圖形模式的顯示驅動失效。

DISP_CHANGE_ADMODE：不支持圖形模式。

註釋：為了保證傳遞給ChangeDisplaySetting的DEVMODE結構是有效的，並且僅包含顯示驅動支持的值，可以使用由EnumDisplaySettings函數返回的DEVMODE。

當顯示模式被動態地改變時，WM_DISPLAYCHANGE消息帶著如下的消息參數傳遞給所有正在運行的應用：

wParam每像素點的新位數，LOWORD（lParam）新像素寬度，HIWORD（lParam）新像素高度。

速查：Windows NT：3.51及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；庫文件：user32.lib；Unicode：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數把顯示設備在lpszDeviceName參數中定義的設置，改變為在lpDevMode參數中定義的圖形模式。

函數原型：LONG ChangeDisplaySettingsEx(LPCSTR lpszDeviceName, LPDEVMODE lpDevMode, HWND hwnd, DWORD dwflags LPVOID lParam)；

參數：

lpszDeviceName：指向一個以null結尾的字符串的指針，該字符串指定了一個顯示設備，該函數從該顯示設備中得到它的圖形模式的信息。

查看EnumDisplayDevice函數，可得與這些顯示設備有關的名字的更詳細的信息，lpszDeviceName參數可以為NULL（空），NULL值定義了缺省的顯示設備。

lpDevMode：指向DEVMOD結構的指針，該結構描述了要經向的圖形模式dmSize元素，必須以字節為單位，初始化為DEVMODE結構的尺寸，可以使用DEVMODE結構的如下元素：

dmBitsPerpel每像素字節數，dmPelsWidth像素寬度，dmPelsHeight像素高度，

dmDisplayFlags模式標誌，dmDisplayFrequency模式頻率，

dmPosition：Windows98和WindowsNT5.0以後版本，在多顯示配置下的設備位置。

為了設置前面的DEVMODE元素，必須在dmFields元素中設置適當的標誌，這些標誌表明DEVMODE結構的哪些元素是用來改變顯示設置，如果在dmFields中沒有設置適當的位，則顯示設備不會被改變。

設備如下的一個或多個標誌：

DM_BITSPERPEL：使用dmBitsPerPel值，DM_PELSWIDTH：使用dmPelsWidth值。

DM_PELSHEIGHT：使用dmPelsHeight值，DM_DISPLAYFLAGS：使用dmDisplayFlags值。

DM_DISPLAYFREQUENCY：使用dmDisplayFrequency值。

DM_POSITION：Windows98, Windows NT 5.0和以後版本，使用dmPosition值。

如果lpDevMode為NULL，使用註冊表中的所有當前值來進行顯示設置，在一個動態模式改變之後恢復缺省模式的最簡單的辦法是把lpDevMode設為NULL和把dwFlags參數置為0。

hwnd：必須為NULL。

dwflags：表明圖形模式如何改變，dwflags可取如下值之一：

0：當前屏幕的圖形模式將動態地改變。

CDS_UPDATEREGISTRY：當前屏幕的圖形模式將動態地改變並且在註冊表中圖形模式將會更新，模式信息存儲在USER描述文件中。

CDS_TEST：如果請求的圖形模要被設置，則系統進行測試，CDS_FULLSCREEN從本質上講這種模式是暫時的。（對於Windows NT：如果改變到另一個桌面，或從另一個桌面改變，那麼該模式將不被重置）。

CDS_GLOBAL：這些設置將保存在全局設置區內，因此它們對所有用戶都有作用，該標誌只有與CDS_UPDATEREGISTRY標誌一起設置時才有效。

CDS_SET_PRIMARY：該設備將成為原始設備。

CDS_RESET：即使請求設置與當前設置相同，也會改變設置。

CDS_SETRECT：在WM_DISPLAYCHANGE消息中指定的發送到所有應用程序的lParam消息參數，被當作RECT結構的指針，該結構在一個多屏幕環境中定義了顯示設備的位置。如果iParam參數為NULL，意味著顯示設備將從多屏幕環境中分離。

CDS_NOREST：設置保存在註冊表中，但不起作用，該標誌只有和CDS_UPDATEREGISTRY標誌一起指定時才有效。

指定CDS_TEST能讓一個應用程序確定哪一種圖形模式真正有效而不導致系統改變到那種圖形模式如果指定了CDS_UPDATEREGISTRY並且可能動態改變圖形模式，則這些信息存儲在註冊表中並返回DISP_CHANGE_SUCCESSFUL，如果不能動態改變圖形模式，則信息存儲在註冊表中並返回DISP_CHANGE_RESTART。

Windows：如果指定CDS_UPDATEREGISTRY，並且信息不能保存在註冊表中，那麼圖形模式不會改變，並返回DISP_CHANGE_NOTUPDATED。

lParam：必須為空。

返回值：ChabngeDisplaySettingEx函數返回如下一值：

DISP_CHANGE_SUCCESSRJL：設置改變成功。

DISP_CHANGE_RESTART：為了圖形模式正確地運行，計算機必須重新啟動。

DISP_CHANGE_BADFLAGS：傳送了一個無效的標誌集。

DISP_CHANGE_NOTUPDATED：Windows NT不能把設置寫入註冊表。

DISP_CHANGE_BADPARAM：傳送了一個無效參數，包括一個無效標誌或幾個無效標誌的組合。

DISP_CHANGE_FAILED：指定圖形模式顯示驅動失效。

DISP_CHANGE_BADMODE：不支持該圖形模式。

註釋：為了保證傳送給ChangeDisplaySettingEx函數的DEVMODE結構是有效的，並且僅包含顯示驅動支持的值，請使用EnumDisplaySetting函數返回的DEVMODE結構。

當顯示模式動態改變時，WM_DISPLAYCHAGE消息帶著如下的消息參數傳送給所有正在運行的應用程序：

wParam像素的新位數，LOWORD(lParam)新像素寬度；HIWORD(iParam)新像素高度。

速查：Windows NT：5.0及以上版本；Windows：98及以上版本；Windows CE：不支持；頭文件：winuser.h；庫文件：user32.lib；Unicode：在Windows NT上實現為Unicode和ANSI兩種版本。


CPINFO
類型定義
Type CPINFO MaxCharSize As Long ' max length (Byte) of a char DefaultChar(MAX_DEFAULTCHAR) As Byte ' default character LeadByte(MAX_LEADBYTES) As Byte ' lead byte ranges End Type
說明
用於容納代碼頁信息的一個結構，參考GetCPInfo函數
字段表
字段 | 類型與說明
MaxCharSize | Long，隨同這個字符集中一個字符的最大尺寸載入；可能為1或2
DefaultChar | Byte，指出將這個代碼頁轉換到另一個的時候，如使用了另一個代碼頁沒有的字符，應在一個字串中放置什麼字符代替
LeadByte | Byte，代表一個字節對數組。在這個數組中，每對字節都為某雙字節字符集（DBCS）指定了一系列前導字節。例如，假定數組的頭兩個字節是89和93。這意味著在當前代碼頁中，值89到93是前導字節（放在最前面的字節），而後面跟隨的字節是相同字符的一部分。如某個字符集採用了五個前導字節，那麼總共可以包含的字符數是：(256-5)+5*256


 函數功能：該函數可以創建一個具有特定寬度、高度和顏色格式的位圖。

函數原型：HBITMAP CreateBitmaplndirect(CONST BITMAP *lpbm)；

參數：

ipbm：指向BITMAP結構的指針。該結構包含有關位圖的信息。如果應用程序將其成員bmWidth或bmHeight設為0，那麼CreateBitmaplndirect將返加一個只有1個像素點的單色位圖的句柄。

返回值：如果函數執行成功，那麼返回值是指向位圖的句柄；如果函數執行失敗，則返回值為NULL。若想獲取更多錯誤信息，請調用GetLastError函數。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：wingdi.h；庫文件：gdi32.lib。


 函數功能：該函數可以創建具有指定風格、顏色和模式的邏輯刷子。

函數原型：HBRUSH CreateBrushlndirect(CONST LOGBRUSH *lplb)；

參數：

lplb：指向LOGBRUSH結構的指針，該結構包含與刷子有關的信息。

返回值：如果函數執行成功，那麼返回值標識一個邏輯刷子；如果函數執行失敗，則返回值為NULL。

Windows NT：若想獲得更多錯誤信息，請調用GetLastError函數。

備註：刷子就是系統用來對要填充圖形的內部進行繪製的位圖。

速查：Windows NT 3.1、Windows 95以上。


 函數功能：該函數可以創建一個具有DIB（與設備無在的位圖）指定模式的邏輯刷子。

函數原型：HBRUSH CreateDIBPattemBrushPt(CONST VOID *lpPackedDIB, UINT iUsage)；

參數：

lpPackedDIB：指向包裝的DIB的指針。這種DIB由BITMAPINFO結構後緊跟用於定義位圖像素的字節型數組組成。對於Windows 95和Windows 98，不支持從大於8＊8像素的位圖或DIB中創建刷子。如果指定了一個較大的位圖，那麼只使用該位圖的一部分。

iUsage：指定BITMAPINFO結構中的成員bmiColors是否包含了一個有效的顏色表，如果是這樣，那麼該顏色表中的項是否包含明確的RGB或調色板索引，並且該顏色表由16位索引值數組組成，利用這些索引值可對刷子要選入的設備環境的邏輯調色板進行索引。

DIB_PAL_COLORS：表示提供顏色表，該顏色表包含原義的RGB值。

返回值：如果該函數成功，那麼返回值標識了一個邏輯刷子；如果該函數執行失敗，那麼返回值為NULL。

Windows NT：若想獲得更多錯誤信息，可調用GetLastError函數。

備註：刷子是指系統用來繪製要填充圖形的內部區域的位圖。

在應用程序調用CreateDIBPatternBrushPt創建完刷子之後，可以通過調用SelectObject函數來將該刷子選入任何設備環境中，當不需要該刷子時，可調用DeleteObject函數刪除它。

ICM：在創建刷子時沒有顏色。然而，當把刷子選入到一個ICM允許的設備環境中時將完成顏色管理。

Windows CE：Windows CE NO版不支持iUsage參數的DIB_PAL_COLORS標誌。

在Windows CE 2.0版中，參數iUsage設為DIB_RGB_COLORS。當使用的是8bpp位圖時，可將iUsage設為DIB_PAL_COLORS，然而，在這種情況下，Windows CE將忽略BITMAPINFO結構中成員bmiColors數組中的值。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：wingdi.h：庫文件：gdi32.lib。


 函數功能：該函數創建與指定設備兼容的位圖，這種位圖是已淘汰的，它具有與設備一樣的位／像素格式和顏色調色板。應用程序可以選擇這種位圖作為與指定設備兼容的內存設備的當前位圖。

函數原型：HBITMAP CreateDiscardableBitmap(HDC hdc, int nWidth, int nHeight)；

參數：

hdc：設備環境句柄。

nWidth：按位來指定位圖的寬度。

nHeight：按位來指定位圖的高度。

返回值：如果函數執行成功，返回值是指向位圖的句柄；如果函數執行失敗，那麼返回值為NULL。Windows NT：若想獲取更多錯誤信息，請調用GetLastError函數。


 函數功能：該函數創建一個邏輯彩色調色板。

函數原型：HPALETTE CreatePalette(CONST LOGPALETTE *lplgpl)；

參數：

lplgpl：指向LOGPALETTE結構的指針，該結構包含了邏輯調色板中的色彩信息。

返回值：如果函數成功，則返回值是一個邏輯調色板的句柄；如果失敗，返回值為NULL（空）。

Windows NT：若想獲得更多錯誤信息，請調用GetLastError函數。

註釋：通過調用GetDevice Caps函數和定義RASTERCAPS常量一個應用可以確定一個設備是否支持調色板操作。一旦應用創建了一個邏輯調色板，它可以通過調用Select Palette函數把該調色板選入設備環境中。通過調用RealizePalette函數選入設備環境中的調色板可被映射。

當不再需要該調色板時，可調用DeleteObject函數刪除它，由於Windows CE並不仲裁前景和背景應用的調色板，調色板並不隨著Windows系統顏色而自動退色，因此由該函數創建的調色板的顏色入口點數目和LOGPALETTE結構中的PalNumEntries相同。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：2.0及以上版本；頭文件：wingdi.h；庫文件：gdi32.lib。


 函數功能：該函數創建一個指定設備環境的半色調調色板。

函數原型：HPALETTE CreateHalftonePalette(HDC hdc)；

參數：

hdc：設備環境句柄。

返回值：如果函數執行成功，返回值定義了一個邏輯半色調調色板；如果函數執行失敗，返回值為零。

Windows NT：若想獲得更多錯誤信息，請調用GetLastError函數。

註釋：當一個設備環境的展開模式設為HALFTONE時應用就會創建一個半色調調色板，在stretchBit或strechDIBits函數調用之前由createHalftonePalette函數返回的邏輯半色調調色板會映射在設備環境中。當不再需要該調色板時，可以調用DeleteObject函數刪除它。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：wingdi.h；庫文件：gdi32.lib。


設備控制選項的部分列表

設備控制選項的部分列表——參考DeviceIoControl函數
操作 | 參數 | 設置成……
撤消同一個卷的連接 | dwIoControlCode | FSCTL_DISMOUNT_VOLUME
 | lpInBuffer | ByVal 0
 | nInBufferSize | 0
 | lpOutBuffer | ByVal 0
 | nOutBufferSize | 0
獲得卷壓縮屬性 | dwIoControlCode | FSCTL_GET_COMPRESSION
 | lpInBuffer | ByVal 0
 | nInBufferSize | 0
 | lpOutBuffer | 用於裝載帶有COMPRESSION_VALUE_???前綴的一個常數的整數型變量
 | nOutBufferSize | 2
鎖定一個卷 | dwIoControlCode | FSCTL_LOCK_VOLUME
 | lpInBuffer | ByVal 0
 | nInBufferSize | 0
 | lpOutBuffer | ByVal 0
 | nOutBufferSize | 0
設置卷壓縮屬性 | dwIoControlCode | FSCTL_SET_COMPRESSION
 | lpInBuffer | 用於裝載帶有COMPRESSION_VALUE_???前綴的一個常數的整數型變量
 | nInBufferSize | 2
 | lpOutBuffer | ByVal 0
 | nOutBufferSize | 0
 | lpBytesReturned | 用於裝載操作結果的一個Long型變量
解除對一個卷的鎖定 | dwIoControlCode | FSCTL_UNLOCK_VOLUME
 | lpInBuffer | ByVal 0
 | nInBufferSize | 0
 | lpOutBuffer | ByVal 0
 | nOutBufferSize | 0
核實一個便攜式媒體設備的媒體是否存在及可讀 | dwIoControlCode | IOCTL_DISK_CHECK_VERIFY
 | lpInBuffer | ByVal 0
 | nInBufferSize | 0
 | lpOutBuffer | ByVal 0
 | nOutBufferSize | 0
 | 函數返回值 | 如設備可以訪問，而且媒體存在，就返回TURE
彈出SCSI設備中的媒體 | dwIoControlCode | IOCTL_DISK_EJECT_MEDIA
 | lpInBuffer | ByVal 0
 | nInBufferSize | 0
 | lpOutBuffer | ByVal 0
 | nOutBufferSize | 0
格式化設備中的軌道（磁道） | dwIoControlCode | IOCTL_DISK_FORMAT_TRACKS
 | lpInBuffer | 一個FORMAT_PARAMETERS數據結構，包含了磁道中要格式化的信息
 | nInBufferSize | FORMAT_PARAMETERS結構的長度
 | lpOutBuffer | ByVal 0
 | nOutBufferSize | 0
判斷一個設備的屬性 | dwIoControlCode | IOCTL_DISK_GET_DRIVE_GEOMETRY
 | lpInBuffer | ByVal 0
 | nInBufferSize | 0
 | lpOutBuffer | 一個DISK_GEOMETRY數據結構，用於裝載與磁盤驅動器有關的信息
 | nOutBufferSize | DISK_GEOMETRY結構的長度
判斷驅動器的分區佈局情況 | dwIoControlCode | IOCTL_DISK_GET_DRIVE_LAYOUT
 | lpInBuffer | ByVal 0
 | nInBufferSize | 0
 | lpOutBuffer | 一個DRIVE_LAYOUT_INFORMATION結構，後面跟隨一個或多個PARTITION_INFORMATION結構，用於裝載與磁盤驅動器佈局有關的信息
 | nOutBufferSize | 分配的緩衝區大小
判斷驅動器支持的媒體類型 | dwIoControlCode | IOCTL_DISK_GET_MEDIA_TYPES
 | lpInBuffer | ByVal 0
 | nInBufferSize | 0
 | lpOutBuffer | 一個DISK_GEOMETRY數據結構數組，用於裝載與磁盤驅動器支持的媒體有關的信息
 | nOutBufferSize | 輸出緩衝區的長度
取得與一個分區有關的信息 | dwIoControlCode | IOCTL_DISK_GET_PARTITION_INFO
 | lpInBuffer | ByVal 0
 | nInBufferSize | 0
 | lpOutBuffer | 一個PARTITION_INFORMATION結構，用於裝載與分區有關的信息
 | nOutBufferSize | 分配的緩衝區大小
在設備中裝載媒體 | dwIoControlCode | IOCTL_DISK_LOAD_MEDIA
 | lpInBuffer | ByVal 0
 | nInBufferSize | 0
 | lpOutBuffer | ByVal 0
 | nOutBufferSize | 0
允許或禁止媒體拆卸 | dwIoControlCode | IOCTL_DISK_MEDIA_REMOVAL
 | lpInBuffer | 一個PREVENT_MEDIA_REMOVAL數據結構，其中包含的信息用於決定允許或禁止媒體拆卸
 | nInBufferSize | PREVENT_MEDIA_REMOVAL結構的長度
 | lpOutBuffer | ByVal 0
 | nOutBufferSize | 0
判斷一個驅動器的性能 | dwIoControlCode | IOCTL_DISK_PERFORMANCE
 | lpInBuffer | ByVal 0
 | nInBufferSize | 0
 | lpOutBuffer | 一個DISK_PERFORMANCE數據結構，用於裝載與驅動器性能有關的信息
 | nOutBufferSize | 已分配的緩衝區的大小
控制數據流中一個調製解調器狀態數據的外觀 | dwIoControlCode | IOCTL_SERIAL_LSRMST_INSERT
 | lpInBuffer | 一個字節變量。如果不為零，則使用換碼字符。如果為零，則禁止顯示內部狀態
 | nInBufferSize | 1
 | lpOutBuffer | ByVal 0
 | nOutBufferSize | 0


DEVMODE
類型定義
Type DEVMODE ' 126 Bytes, 15?Bytes in Windows 95
dmDeviceName As String * CCHDEVICENAME
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer

dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * CCHFORMNAME
dmLogPixels As Integer
dmBitsPerPel As Long
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
' - The following appear under Windows 95 only.
dmICMMethod As Long

dmICMIntentAs Long
dmMediaType As Long
dmDitherType As Long
dmICCManufacturer As Long
dmICCModel As Long
End Type
說明
This structure is used to describe the configuration of an output device such as a printer.The size of this structure is dynamic and should be calculated before it is passed to a function.


下載幫助

幫助
隨著函數的不斷增加，把所有的函數打包到一個文件實在是一種笨拙的做法。所以現在我使用了新的方法。即每次只把新增加的內容打包。如果你曾經下載過本站以前的壓縮包，那麼只需下載標有NEW!字樣的壓縮包即可，否則請把下表列出的壓縮文件全部下載，然後解壓到同一個目錄下。請按順序解壓，因為新的壓縮包裡的文件可能和以前的壓縮包裡的文件同名，這表明這個文件在上次打包後又作過修改。下載後，首頁文件名為vbapi.htm
當然，建議你先在本站逛逛，看本站內容是否值得你下載
vbapi.zip （508K）：從本站建立之日起到1999年3月29日的全部文件
vbapi1.zip（163K）：從1999年3月30日到1999年4月5日新增加的文件
vbapi2.zip（171K）：從1999年4月6日到1999年4月13日新增加的文件
vbapi3.zip（638K）：從1999年4月13日到1999年4月20日的文件，主要是對以前的許多文件進行了修改 NEW!


進程和線程的理解

進程和線程的理解（1）----多任務

多任務定義了一個操作系統同時運行多個程序的能力，但事實是，理想的多任務系統可以在幾個應用程序之間如此快的切換，以至於用戶可以認為所有的程序就像同時運行一樣（多處理器系統除外）。考慮下面的簡單程序。創建一個新的VB項目並在窗體上放一個按鈕和一個標籤控件，然後在窗體的click事件中加入代碼：

Private Sub Command1_Click()
Dim cnt&
For cnt& = 1 To 2500
lable1.Caption = cnt&
lable.Refresh
Next cnt&
End Sub
單擊按鈕時，標籤計數器會顯示從1到2500的漸增數。將此程序編譯成可執行程序，然後運行該程序的兩個實例，並把它們並排。現單擊一個程序讓它運行，在它計數時，試著單擊另一個程序的按鈕。此試驗的結果和正在運行的操作系統以及用的是16位還是32位的VB有關。這說明了操作系統間在多任務方面的關鍵性差異。 windows3.x支持一種被稱為「非搶先式」也叫「協作式」多任務。在這種多任務中，應用程序盡力與另一個程序進行協作。操作系統分配給CPU一個程序，這個程序完全佔用CPU直到它想讓給其它的程序為止。在我們示例中的固定循環牢牢佔用CPU，阻止了其它程序的運行。如果windows3.x或win95（或windows NT）上使用16位的VB（只要這兩個計數器沒有被設為成獨立的內存空間運行），當一個計數器計數時另一個計數器就會被凍結。它不會計數並且也不能單擊它的命令按鈕。如果在使用16位VB的windows95或windows NT上運行這個計數器程序的示例，同時點擊某個32位的應用程序，如開始選單，會發現那些32位的程序並沒有被凍結。如果使用32位的VB來進行這個示例，會出現完全不同的結果。當一個計數器計數的同時點擊第二個計數器，第二個計數器會開始全速工作，而第一個計數器會慢下來（但它不會停止，它速度的降低程度與系統給前台應用程序優先權大小有關）。

在示例中的程序保持狀態不變，沒有退出click事件或執行了DoEvents命令而釋放CPU，那顯然地，應有某些另外的機制使應用程序能釋放CPU資源。其實，釋放CPU資源並不是一件麻煩的事，操作系統會完成這項工作。這是一種稱為「搶先式多任務」的多任務形式。在該形式中，CPU的時間是由操作系統專門分配的。當操作系統認為一個應用程序已用完它的時間額度時，它會掛起該程序並保存所有的處理器內部寄存器狀態，然後轉下一個程序。應用程序也有能力在任何它不需要CPU的時間時掛起它自身。


 函數功能：該函數可以激活一個或兩個滾動條箭頭或是使其失效。

函數原型：BOOL EnableScrollBar（HWND hWnd，UINT WSBflags，UINT wArrows）；

參數：

hWnd：根據參數wSBflags的值，處理對雷體或滾動條的處理。

wSBflags：指定滾動條的類型。這個參數可以是下面的值，含義如下：

SB_BOTH：可以將指定窗體的水平及垂直滾動條上的箭頭激活或使其失效。此時參數hWnd一定指向窗體。

SB_CTL：標識滾動條控制器。此時參數必須指向滾動條控制器。

SB_HORZ：可以將指定窗體的水平滾動條上的箭頭激活或使其失效。此時參數hWnd一定指向窗體。

SB_VERT：可以將指定窗體的垂直滾動條上的箭頭激活或使其失效。此時參數hWnd一定指向窗體。

wArrows：指定滾動條上的箭頭是否被激活或是無效，並指出哪一個箭頭位有效或是無效。這個參數可以是下面的值，其含義如下：

ESB_DISABLE_BOTH：使滾動條上兩面的箭頭功能無效。

ESB_DISABLE_DOWN：使垂直滾動條上下面的箭頭功能無效。

ESB_DISABLE_LEFT：使水平滾動條上左邊箭頭功能無效。

ESB_DISABLE_LTUP：使水平滾動條上左邊箭頭或垂直滾動條上面的箭頭功能無效。

ESB_DISABLE_RLGHT：使水平滾動條上右邊箭頭功能無效。

ESB_DISABLE_RTDN：使水平滾動條上右邊箭頭或垂直滾動條下邊的箭頭功能無效。

ESB_DISABLE_UP：使垂直滾動條上向下箭頭功能無效。

ESB_ENABLE_BOTH：激活滾動條兩面的箭頭。

返回值：如果被指定的箭頭被激活或未被激活，其返回值為非零；如果箭頭已經是被請求的狀態或是出現錯誤，那麼返回值為零。若想獲得更多的錯誤信息，請調用GetLastError函數。

速查：Windows NT 3.1、Windows 95以上，頭文件：winuser.h；庫文件：user32.lib。


ENHMETAHEADER
類型定義
Type ENHMETAHEADER ' 88 Bytes iType As Long nSize As Long rclBounds As RECTL rclFrame As RECTL dSignature As Long nVersion As Long nBytes As Long nRecords As Long nHandles As Integer sReserved As Integer nDescription As Long offDescription As Long nPalEntries As Long szlDevice As SIZEL szlMillimeters As SIZEL End Type
說明
This structure is always the first record in an enhanced metafile, it contains information on the enhanced metafile data.
字段表
字段 | 類型與說明
iType | Long，Record type. Must be set to EMR_HEADER
nSize | Long，Size of this structure
rclBounds | RECTL，Dimensions, in device units, of the smallest rectangle that can be drawn around the picture stored in the metafile. Supplied by the GDI.
rclFrame | RECTL，Dimensions, in 0.01 millimeter units, of a rectangle that surrounds the picture stored in the metafile. Must be supplied by the application that creates the metafile.
dSignature | Long，Signature of the metafile. Must be set to ENHMETA_SIGNATURE.
nVersion | Long，Metafile version. The current version value is &H10000&.
nBytes | Long，Size of the enhanced metafile
nRecords | Long，Number of records in the enhanced metafile
nHandles | Integer，Number of handles in the enhanced-metafile handle table.
sReserved | Integer，Reserved. Set to zero.
nDescription | Long，Number of characters in the array containing the description of the enhanced metafile. Zero if a description is not available
offDescription | Long，Offset from the beginning of the ENHMETAHEADER structure to an array containing a description for the enhanced metafile.
nPalEntries | Long，Number of entries in the enhanced metafile's palette.
szlDevice | SIZEL，Resolution of the reference device, in pixels
szlMillimeters | SIZEL，Resolution of the reference device, in millimeters.


 函數功能：該函數可得到系統中顯示設備的信息。

函數原型：BOOL Enumdisplaydevices(PVOID Unused, DWORD iDevNum, PDISPLAY_DEVICE lpDisplayDevice, DWORD dwFlags)；

參數：

Unused：該參數當前不用，應設為Null。

iDevNum：指定感興趣的顯示設備的索引值，操作系統通過索引值確定每一個顯示設備。索引值是連續的整數。從0開始，例如：如果一個系統有三個顯示設備，那麼它們的索引值為0、1、2。

lpdisplayDevice：DISPLAY_DEVICE結構的指針，該結構檢索由iDevNum指定的顯示設備的信息，在調用EnumDisplayDevices之前，必須以字節為單位把DISPLAY_DEVICE結構中cb元素初始化為DISPLAY_DEVICE結構的大小。

dwFlags：約束函數行為的一組標誌，當前沒有定義標誌。

返回值：如果成功，則返回值非零；如果失敗，則返回值為零；如果iDevNum大於最大的設備索引，則函數失敗。

註釋：為了查詢系統的所有顯示設備，在一個循環中調用該函數開始時iDevNum設為0，並增加iDevNum，直到函數失敗。

速查：Windows NT：5.0及以上版本；Windows：不支持；Windows CE：不支持；頭文件：winuser.h；庫文件：user32.lib；Unicode：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數得到顯示設備的一個圖形模式設備，通過對該函數一系列的調用可以得到顯示設備所有的圖形模式信息。

函數原型：BOOL EnumDisplaySettings(LPCTSTR lpszDeviceName, DWORD iModeNum, LPDEVMODE lpDevMode)；

參數：

lpszDeviceName：指向一個以null的結尾的字符串，該字符串指定了顯示設備。此函數將獲得該顯示設備的圖形模式信息。該參數可以為NULL。NULL值表明調用線程正運行在計算機的當前顯示設備上。如果lpszDeviceName為NULL，該字符串的形式為\\.\displayx，其中x的值可以為1、2或3。對於Windows 95和Windows 98，lpszDeviceName必須為NULL。

iModeNum：表明要檢索的信息類型，該值可以是一個圖形模式索引，也可以是下列一值：

ENUM_CURRENT_SETTINGS：檢索顯示設備的當前設置。

ENUM_REGISTRY_SETTINGS：檢索當前存儲在註冊表中的顯示設備的設置。

圖形模式索引值從零開始，要得到一個顯示設備的所有圖形模式信息，可以一系列地調用EnumDisplaySettings函數，並且iModeNum顯為一個非零值時，則函數返回的信息是最近一次使用iModeNum置為零調用該函數時存儲的信息。

lpDevMode：DEVMODE結構的指針，該結構存儲指定圖形模式的信息，在調用EnumDisplaySettings之前，設置dmSize為sizeof(DEVMODE)，並且以字節為單位，設置dmDriveExtra元素為接收專用驅動數據可用的附加空間。

EnumDisplaySettings函數設置如下五個DEVMODE元素的值：dmBitsPerpel、dmPelsWidth、dmPelsHeight、dmDisplayFlags、dmDisplayFrequency。

返回值：如果成功，返回非零值；如果失敗，返回零。

Windows NT：若想獲得更多錯誤信息，請調用GetLastError函數。

註釋：如果iModeNum大於顯示設備最後的圖形模式索引，那麼函數就會失敗，如同在iModeNum參數中描述的那樣，使用這種方法可以枚舉顯示設備所有的圖形模式。

速查：Windows NT：3.51及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：winuser.h；庫文件：user32.lib；Unicode：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數是和函數EnumFontFamiliesEx一起使用的應用程序定義的回調函數，它用來處理字體。為每一種列舉的字體調用一次，類型FONTENUMPROC定義了一個指向此回調函數的指針，EnumFontExProc是這個應用程序定義的函數的名字的佔位符。

函數原型：int CALLBACK EnumFontFamExProc(ENUMLOGFONTEX *lpelfe, NEWTEXTMETRICEX *lpntme, int FontType, LPARAM lParam)；

參數：

lpelfe：指向含有字體的邏輯屬性的ENUMLOGFONTEX結構的指針。

lpntme：指向含有字體物理屬性的結構的指針。此函數對TrueType字體使用結構，對其他字體使用結構NEWTEXTMETRICEX。

FontType：指定字體類型，此參數可為下列值的組合。

DEVICE_FONTTYPE, RASTER_FONTTYPE, TRUETYPE_FONTTYPE

lParam：指定由函數EnumFontFamiliesEx傳來的應用程序定義的數據。

返回值：要繼續列舉，返回值必須非零，要停止列舉，返回值必須是為0。

備註：一個應用程序必須通過將此回調函數的地址傳給函數EnumFontFamiliesEx來註冊回調函數。

與回調函數EnumFontFamProc不同的是，EnumFontFamProc接收關於一種字體的擴充信息，結構NEWTEXTMETRICEX包括了文字（字符集）的定位名字，結構NEWTEXTMETRICEX包含了字體覆蓋特性。

速查：Windows NT：4.0及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：wingdi.h；庫文件：用戶自定義。


 函數功能：該函數是由應用程序定義的與函數EnumFontFamilies一起使用的回調函數，它接收用於描述與可用字體的數據。類型FONTENUMPROC定義了一個指向此回調函數的指針，EnumFontFamProc是應用程序定義的函數的名字的佔位符。

函數原型：int CALLBACK EnumFontFamProc(ENUMLOGFONT FAR *lpelf, NEWTEXTMETRIC FAR *lpntm, int FontType, LPARAM lParam)；

參數：

lpelf：指向結構ENUMLOGFONT的指針，該結構包含字體的邏輯屬性。該結構是局部定義的。

lpntm：指向結構NEWTEXTMETRIC的指針，該結構包含TrueType字體的物理屬性。如果該字體不是TrueType字體，此參數為指向結構TEXTMETRIC的指針。

FontType：指定字體的類型，此參數可以是下列值的組合：

DEVICE_FONTTYPE, RASTER_FONTTYPE, TRUETYPE_FONTTYPE。

lParam：指向由函數EnumFontFamilies傳來的應用程序定義的數據的指針。

返回值：要繼續列舉，返回值必須是非零值；要停止列舉，返回值必須為0。

備註：應用程序必須將此回調函數的地址傳給EnumFontFamilies以將函數註冊。

RASTER_FONTTYPE, DEVICE_FONTTYPE和TRUETYPE_FONTTYPE等常數可用AND操作符連接起來決定字體的類型。如果RASTER_FONTTYPE位被設置，則該字體是一種光柵字體。如果TRUETYPE_FONTTYPE位被設置，該字體是一種TrueType字體。如果上述兩位都未被設置，則該字體是一種向量字體。當一種設備（如激光打印機）支持下載TrueType字體或該字體是一種駐留設備的字體，則DEVICE_FONTTYPE位被設置，當設備是一種顯示設備、點陣打印機或其他光柵設備，則該位為0。應用程序也可用DEVICE_FONTTYPE來區別圖形設備接口（GDI）提供的光柵字體和設備提供的字體。GDI可以為GDI提供的光柵字體模擬粗體、斜體、下劃線和刪除線（strikeout）屬性，但卻不支持設備提供的字體。

Windows CE：字體的物理屬性總是保存在TEXTMETRIC結構中。

Windows CE版本1.0不支持TrueType字體。在該版本中，參數FontType的值始終是RASTER_FONTTYPE。

在Windows CE版本2.0，FontType可依賴於Windows CE平台取值為RASTER_FONTTYPE或TRUETYPE_FONTTYPE，任何給定的Windows CE平台只支持光柵字體和TrueType字體其中之一，字體類型（光柵或TrueType）是在系統設計時選擇的，應用程序不能修改。


 函數功能：該函數是一個應用程序定義的回調函數，處理由EnumFonts獲得的字體數據。EnumFontsProc是應用程序定義的函數的名字的佔位符。

函數原型：int CALLBACK EnumFontsProc(lplf lplf, lptm lptm, DWORD dwType, LPARAM lpData)；

參數：

lplf：指向結構LOGFONT的指針，該結構含有字體的邏輯屬性。 lptm：指向結構TEXTMETRIC的指針，該結構含有字體的物理屬性。 dwType：指定字體類型，此參數可取下列值的組合： DEVICE_FONTTYPE, RASTER_FONTTYPE, TRUETYPE_FONTTYPE。 lpData：指向由EnumFonts傳來的應用程序定義的數據的指針。 返回值：如果要繼續列舉，返回值必須是非零值；要停止列舉，返回值必須是0。 備註：RASTER_FONTTYPE和DEVICE_FONTTYPE可由AND操作符組合起來決定字體類型。參數FontType的RASTER_FONTTYPE用來指定該字體是光柵字體還是向量字體。如果該位是1，字體是光柵字體；該位是0，則是向量字體。FontType的DEVICE_FONTTYPE位用於確定字體是基於設備的還是基於圖形設備接口(GDI)的。如果該位是1，表明該字體是基於設備的，如果該位是0，則是基於GDI的字體。 如果只要基字體被列舉，設備就能進行正文轉換（比例變換、傾斜等），則用戶應該查詢設備的正文轉換能力，以確定設備還能直接提供哪些字體。 應用程序應該將EnumFontsProc的地址傳給EnumFonts，將EnumFontsProc註冊。 Windows CE：版本1.0不支持TrueType字體。參數TrueType的值必須是RASTER_FONTTYPE。 Windows CE版本2.0支持TrueType和光柵兩種字體。在版2.0裡，FontType依賴於Windows CE平台可取RASTER_FONTTYPE或TRUETYPE_FONTTYPE。任何Windows CE平台只能支持光柵字體和FontType字體兩者之一。


 函數功能：該函數是應用程序定義的回調函數，為EnumObjects函數一起使用。此函數用來處理對像數據，GOBJECTENUMPROC類型定義了指向該回調函數的指針，EnumObjectsProc是應用程序定義函數名字的一個佔位符。

函數原型：VOID CALLBACK EnumObjectsProc(PVOID lpLogObject, LPARAM lpData)；

參數：

lpLogObject：指向描述對像特性的LOGPEN或LOGBRUSH結構的指針。

lpData：指向應用程序定義的數據的指針，該數據由EnumObjects函數傳送。

返回值：無。

註釋：應用程序必須通過傳送函數的地址給EnumObjects函數來註冊該函數。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：wingdi.h；庫文件：用戶自定義。


FILETIME
類型定義
Type FILETIME ' 8 Bytes dwLowDateTime As Long dwHighDateTime As Long End Type
說明
windows提供了一種特殊的機制，可以記錄文件的訪問及創建時間。在win32環境中，這些信息以64位值的形式保存，量度的是自1601年1月1日以來經歷的100ns時間單位數量（64-bit number specifying the elapsed time since January 1, 1601, in 100-nanosecond increments.）
字段表
字段 | 類型及說明
dwLowDateTime | Long，Low and high-order 32 bits of the file time
dwHighDateTime
註解
文件時間在系統中通常用「協同世界時間」（UTC）的格式保存，但同時提供了在UTC及本地時間之間轉換的函數。FILETIME結構裡可包含UTC或本地時間——由我們自行決定在結構中包含什麼時間


 函數功能：在Win32API中沒有實現FixBrushOrgEx函數，在這裡提供出來是考慮與Win32的兼容性，如果調用它，那麼該函數什麼也不做，並且返回FALSE。


FORM_INFO_1

FORM_INFO_1——請參考AddForm函數
類型定義
Type FORM_INFO_1 Flags As Long pName As Long Size As SIZEL ImageableArea As RECT End Type
說明
Contains information about a print form.
字段表
字段 | 類型及說明
Flags | Long，如表單內建到印表機，則為常數FORM_BUILTIN
pName | Long，表單的名字
Size | SIZEL，以千分之一毫米為單位的列印媒介尺寸
ImageableArea | RECT，可以繪圖的實際區域，以千分之一毫米為單位


 函數功能：該函數用於取得當前字體在一個指定範圍內的連續字符的邏輯坐標寬度。

函數原型：BOOL GetCharWidth32(HDC hdc, UINT iFirstChar, UINT iLastChar, LPINT lpBuffer)；

參數：

hdc：設備環境句柄。

iFirstChar：指定連續字符組裡的第一個字符。

iLastChar：指定連續字符組裡的最後一個字符，它不能在指定的第一個字符之前。

lpBuffer：指向用於接收寬度的緩衝區的指針。

返回值：如果函數調用成功，返回值非零，如果函數調用失敗，返回值是零。

Windows NT：若想獲得更多錯誤信息，請調用GetLastError函數。

備註：邊界是包含在內的，即返回的寬度包括由參數iFirstChar和iLastChar指定的字符的寬度。如果一個字符在當前字體中不存在，則它被賦予缺省字體符的寬度。

速查：Windows NT：3.5及以上版本；Windows：不支持；Windows CE：不支持；頭文件：wingdi.h；庫文件：gdi32.lib；Unicode：在Windows NT環境下實現為Unicode和ANSI兩種版本。


 函數功能：該函數用於得到當前字體在一個指定範圍內的連續字符的邏輯坐標寬度。

函數原型：BOOL GetCharWidth32(HDC hdc, UINT iFirstChar, UINT iLastChar, LPINT lpBuffer)；

參數：

hdc：設備環境句柄。

iFirstChar：指定連續字符組裡的第一個字符。

iLastChar：指定連續字符組裡的最後一個字符，這只能在指定的第一個字符之前。

lpBuffer：指向接收寬度的緩衝區的指針。

返回值：如果函數調用成功，返回值非零；如果函數調用失敗，返回值是零。

Windows NT：若想獲得更多錯誤信息，請調用GetLastError函數。

備註：邊界是包含在內的，即返回的寬度裡包含了由參數iFirsstChar和iLastChar指定的字符的寬度，如果一個字符在當前字體裡不存在，則給它賦予缺省字符的寬度值。

速查：Windows NT：3.5及以上版本；Windows：不支持；Windows CE：不支持；頭文件：wingdi.h；庫文件：gdi32.lib；Unicode：在Windows NT環境下實現為Unicode和ANSI兩種版本。


 函數功能：該函數檢取指定設備環境的顏色調整值。

函數原型：BOOL GetColorAdjustment(HDC hdc, LPCOLORADJUSTMENT lpca)；

參數：

hdc：設備環境句柄。

ipca：指向ColorADJustMENT結構的指針，它接受顏色調整值。

返回值：函數成功，返回非零值，失敗返回值為零。

Windows NT：若想獲得更多錯誤信息，請調用GetLastError函數。

速查：Windows NT：3.1及以上版本；Windows：不支持；Windows CE：不支持；頭文件：wingdi.h；庫文件：gdi32.lib。


 函數功能：該函數確認將要返回畫筆顏色的設備上下文環境（DC）。

函數原型：GetDCBrushColor(HDC hdc)；

參數：

hdc：設備上下文環境的句柄，該設備上下文環境的畫筆顏色將被返回。

返回值：如果成功，返回值是當前Dc的畫筆顏色的顏色引用；如果失敗，返回值為CLR_INVALID。

註釋：GetDCBrushColor函數返回先前的DC_BRUSH顏色，即使系統備用對像DC_BRUSH沒有選入設備上下文環境。有關設置設備上下文環境畫筆顏色的更多信息，參見SetDCBrushColor。

ICM：如果ICM可用就執行顏色管理。

速查：Windows NT：5.0及以上版本；Windows：98及以上版本；Windows CE：1.0及以上版本；頭文件：wingdi.h；庫文件：msimg32.dll。


 函數功能：該函數設置當前DC筆顏色為指定顏色，如果設備不能提供指定顏色值，將返回最近的物理顏色。

函數原型：GetDCPenColor(HDC hdc)；

參數：

hdc：設備上下文環境的句柄，該設備上下文環境的筆顏色將被返回。

返回值：如果成功，則返回先前DC筆顏色的顏色引用；如果失敗，則返回CLR_INVALID。

註釋：即使存儲對像DC_PEN設備被選入DC，GetDCPenColor函數也將返回先前DC_PEN顏色，更多信息參見Setting the pen或Brush Color和SetDCPenColor。

ICM：如果ICM可用則執行顏色管理。

速查：Windows NT：5.0及以上版本；Windows：98及以上版本；Windows CE：不支持；頭文件：wingdi.h；庫文件：msimg32.lib。


GetDeviceCaps索引表
常數 | 返回信息
DRIVERVERSION | 設備驅動程序版本
TECHNOLOGY | 下列常數之一： DT_PLOTTER：繪圖儀。DT_RASDISPLAY：光柵顯示器。DT_RASPRINTER：光柵印表機。DT_RASCAMERA：光柵照相機。DT_CHARSTREAM：字符流。DT_METAFILE：圖元文件。DT_DISPFILE：顯示文件
HORZSIZE | 以毫米為單位的顯示寬度
VERTSIZE | 以毫米為單位的顯示高度
HORZRES | 以像素為單位的顯示寬度
VERTRES | 以像素為單位的顯示高度
LOGPIXELSX | 像素/邏輯英寸（水平）
LOGPIXELSY | 像素/邏輯英寸（垂直）
BITSPIXEL | 位/像素（每個調色板）
PLANES | 調色板個數
NUMBRUSHES | 設備內建刷子個數
NUMPENS | 設備內建畫筆個數
NUMMARKERS | 設備內建標記數
NUMFONTS | 設備內建字體數
NUMCOLORS | 設備顏色表入口
ASPECTX | 設備像素寬度（見ASPECTXY）
ASPECTY | 設備像素高度（見ASPECTXY）
ASPECTXY | 設備像素對角尺寸。這些值是互相對應的，比如((ASPECTX^2)+(ASPECTY^2))^.5 = ASPECTXY
PDEVICESIZE | PDEVICE內部結構的大小
CLIPCAPS | 下列常數之一： CP_NONE：設備沒有內建剪切 CP_RECTANGLE：設備可剪切矩形 CP_REGION：設備可剪切區域
SIZEPALETTE | 系統調色板入口（見RASTERCAPS RC_PALETTE標誌）
NUMRESERVED | 系統調色板保留入口
BLTALIGNMENT | 有的顯示設備在圖像對齊本常數值指定的地址範圍時可更快的完成圖像運算。若沒有區別則為0
COLORRES | 顏色分辨率（以位/像素位單位，見RASTERCAPS RC_PALETTE標誌）
DESKTOPHORIZRES | 桌面水平和垂直分辨率（僅適用於NT）。某些設備支持虛擬桌面可比物理顯示尺寸大
DESKTOPVERTRES
PHYSICALOFFSETX | 印表機的可列印區的水平/垂直偏移
PHYSICALOFFSETY
PHYSICALHEIGHT | 以設備單元表示的列印頁面物理高/寬度
PHYSICALWIDTH
SCALINGFACTORX | 印表機水平和垂直縮放係數
SCALINGFACTORY
VREFRESH | 顯示垂直刷新（只適用於NT）
RASTERCAPS | 由下列值組成的標誌： R_BANDING：設備支持頻帶。RC_BIGFONT：字體可大於64K。RC_BITBLT：支持BitBlt。RC_BITMAP64K：位圖可大於64K。RC_DI_BITMAP：支持SetDIBits和GetDIBits函數。RC_DIBTODEV：支持SetDIBitsToDevice函數。RC_FLOODFILL：支持FloodFill API。RC_NONE：不支持光柵操作。RC_PALETTE：設備基於調色板。 RC_SAVEBITMAP：可存儲位圖。RC_SCALING：內建縮放。RC_STRETCHBLT：支持 StretchBlt 。RC_STRETCHDIB：支持StretchDIBits
CURVECAPS | 描述內部曲線生成功能的標誌。見api32。txt文件中關於CC_xxx的完整列表
LINECAPS | 描述內部直線生成功能的標誌。見api32。txt文件中關於LC_xxx的完整列表
POLYGONCAPS | 描述內部多邊形生成功能的標誌。見api32。txt文件中關於PC_xxx的完整列表
TEXTCAPS | 由下列值組成的標誌： TC_OP_CHARACTER：字體可被放在任意位置。TC_OP_STROKE：設備可刪除內部字體任意筆畫。 TC_CP_STROKE：內部字體可據任意像素剪切。TC_CR_90：字體可被旋轉90度 。TC_CR_ANY：支持字符旋轉 。TC_SF_X_YINDEP：支持字符X和Y方向獨立縮放。TC_SA_DOUBLE：內部字體尺寸可被放大一倍。TC_SA_INTEGER：內部字體可以整數倍縮放。TC_SA_CONTIN：內部字體可被連續縮放。TC_EA_DOUBLE： 設備可創建粗體字。TC_IA_ABLE：設備可創建斜體字。TC_UA_ABLE： 設備可建帶下劃線字。TC_SO_ABLE： 設備可創建加框字。TC_RA_ABLE：支持光柵字體。TC_SCROLLBLT：支持光柵字體。TC_VA_ABLE： 支持矢量字體


 函數功能：該函數返回關於一種字體支持哪些字符的信息，這些信息以GLYPHSET結構返回。

函數原型：WINGDIAPI DWORD WINAPI GetFontUnicodeRanges(HDC hdc, LPGLYPHSET lpgs)；

參數：

hdc：設備環境句柄。

lpgs：指向含有GLYPHSET結構的緩衝區的指針，如果此參數為NULL，此函數返回指向當前字體的GLYPHSET結構的指針。

返回值：如果函數調用成功，返回一個指向當前設備環境中字體的結構的指針；如果函數調用失敗，返回值是0。

速查：Windows NT：5.0及以上版本；Windows：不支持；Windows CE：不支持；頭文件：wingdi.h；庫文件：gdi32.lib。


 函數功能：該函數將一個字符串轉為字形下標的數組。此函數可用來確定一種字體裡是否存在某個字形。

函數原型：WINGDIAPI DWORD WINAPI GetGlyphIndices(HDC hdc, LPCTSTR lpstr, int c, LPWORD pgi, DWORD fl)；

參數：

hdc：設備環境句柄。

lpstr：指向將被轉換的字符串的指針。

c：在參數中的字符數。

pgi：與字符串的字符對應的字形下標數組。

fl：用來表示當一個字形不被支持時如何處理，此參數可取下列值：

GGI_MARK_NONEXISTING_GLYPHS：將不被支持的字形與十六進制的0XFFFF進行掩碼操作。

返回值：如果函數調用成功，返回轉換的字符數；如果函數調用失敗，返回值是GDI_ERROR。

Windows NT：若想獲得更多錯誤信息，請調用GetLastError函數。

速查：Windows NT：5.0及以上版本；Windows：不支持；Windows CE：不支持；頭文件：wingdi.h；庫文件：gdi32.lib。


 函數功能：該函數得到特定設備環境的當前元區域。

函數原型：int GetMetaRgn(HDC hdc, HRGN hrgn)；

參數：

hdc：設備環境句柄。

hrgn：在該函數調用之前的一個現存區域的句柄，當該函數調用完成之後，hrgn變為當前區域的拷貝的句柄。

返回值：如果成功，返回一個非零值；如果失敗，返回零。

Windows NT：若想獲得更多的錯誤信息，請調用GetLastError函數。

註釋：如果該函數調用成功，hrgn是當前元區域的拷貝的句柄，該拷貝的變化並不影響當前的元區域。一個設備上下文環境的當前剪切區域是它的剪切區域和元區域的一個交集。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：wingdi.h；庫文件：gdi32.lib。


 函數功能：該函數檢取指定邏輯調色板入口的索引，以與一個特定的顏色值相匹配。

函數原型：UINT GetNearestPaletteIndex(HPALETTE hpal, COLORREF crColor)；

參數：

hpal：標識一個邏輯顏色調色板。

crColor：指定一個匹配的顏色。

返回值：如果函數執行成功，返回值是一個邏輯調色板入口的索引；如果函數執行失敗，返回值是CLR_INVALID。

Windows NT：若想獲得更多錯誤信息，請調用GetLastError函數。

註釋：通過調用GetDevicecaps函數和指定PASTERCAPS常量，一個應用可以確定一個設備是否支持調色板操作。如果給定的邏輯調色板包含設置PC_EXPLICT標誌的入口點，那麼返回值是不確定的。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：2.0及以上版本；頭文件：wingdi.h；庫文件：gdi32.lib。


 函數功能：該函數得到指定圖形對象的信息，根據圖形對像，函數把填滿的或結構，或表項（用於邏輯調色板）數目放入一個指定的緩衝區。

函數原型：int GetObject(HGDIOBJ hgdiobj, int cbBuffer, LPVOID lpvObject)；

參數：

hgdiobj：指向感興趣的圖形對象的句柄，它可以是這樣的一個句柄：一個邏輯位圖、一個刷子、一種字體、一個調色板、筆或通過調用CreateDIBsection函數創建的與設備無關位圖。

cbBuffer：指定將要寫到緩衝區的信息的字節數目。

lpvObject：指向一個緩衝區的指針，該緩衝區將要檢索指定圖形對象的信息。

下面列出的是緩衝區為每種圖形對像類型可接收的信息和類型，可用hgdiobj來指定，寫入*lpvObject: HBITMAP BITMAP。

HBITMAP：如果cbBjffer被設置為sizeof(DIBSECTION)或sizeof(BITMAP)，則從對GreatDIBSection函數的DIBSECTION調用中返回。

HPALETTE：邏輯調色板入口數的WORD數目。

HPEN：從對ExtCreatePen函數的LXTLOGPEN調用中返回。

HPENLOGPEN; HBRUSH LOGBRUSH; HFONT LOGFONT

如果lpvObject參數為Null，則函數返回值為指定圖形對像需要把信息貯存到緩衝區的字節數目。

返回值：如果函數調用成功，且lpvObject為一個有效指針，則返回值為貯存到緩衝區的字節數目；如果函數調用成功，且lprObject為Null，則返回值為需要容納的貯存到緩衝區的信息字節數目；如果函數調用失敗，則返回值為0。

Windows NT：若想獲得更多錯誤信息，可調用GetLastError函數。

註釋：lpvObject參數指向的緩衝區一定要足夠大以接收圖形對象的信息。

如果hgdiobj標識一個由調用GreateDIBSection創建的位圖，且指定的緩衝區足夠大，則GetObject函數返回一個DIBSECTION結構。另外，DIBSECTION中的BITMAP結構中的bmBits元素含有一個指向位圖位值的指針。

如果hgdiobj標識了一個通過其他途徑創建的位圖，則GetObject只返回位圖的寬、高和顏色格式信息，通過調用GetDIBits或GetBitmapBits函數可以得到位置的位值。

如果hgdiobj標識了一個邏輯調色板，則GetObject檢索一個2字節的整數，該整數指定調色板中的項數，函數不檢索定義調色板的LOGPALETTE結構，為檢索有關調色板項的信息，應用程序可以調用GetPaletteEntries函數。

Windows CE：在Windows CE 1.0中，當用在DIB上中，GetObject總返回一個BITMAP。Windows CE 1.0不支持lpvObject參數的HPALETTE值。此函數在Windows CE 2.0與在Windows桌面上一樣。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；頭文件：wingdi.h；庫文件：gdi32.lib；Unicode：在Windows NT上實現為Unicode和ANSI兩種版本。


 函數功能：該函數從給定的邏輯調色板中提出指定範圍的調色板項目。

函數原型：UINT GetPaletteEntries(HPALETTE hpal, UINT iStartIndex, UINT nEntries, LPPALETTEENTRY lppe)；

參數：

hpal：邏輯調色板句柄。

iStartIndex：指定要提取的邏輯調色板中的第一項。

nEntries：指定要提取的邏輯調色板中的項數。

lppe：指向接受調色項目的PALETTEENTRY結構數組的指針，該數組所含結構的數目至少為nEntries參數指定的數目。

返回值：如果函數成功，且邏輯調色板的句柄是一個可靠的指針（非零），返回值是從邏輯調色板提取的項目數。如函數成功，且邏輯調色板的指針為零，返回值是給定調色板的項數。如函數失敗，返回值為零。

Windows NT：若想獲得更多錯誤信息，請調用GetLastError函數。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：2.0及以上版本；頭文件：wingdi.h；庫文件：gdi32.lib。


 函數功能：該函數從與指定設備環境有關係的系統調色板中檢取調色板入口點的範圍。

函數原型：UINT GetSystemPaletteEntries(HDC hdc, UINT iStartIndex, UINT nEntries, LPPALETTEENTRY lppe)；

參數：

hdc：設備環境句柄。

iStartIndex：指定從系統調色板中檢取的第一個入口點。

nEntries：指定從系統調色板中檢取入口點的數目。

lppe：指向PALETTEENTRY結構數組的指針，它檢取調色板入口點，該數組至少要包含由nEntries參數所指定的結構數，如果該參數為NULL（空），則該函數返回調色板中入口點的總數。

返回值：如果函數執行成功，返回值是從調色板中檢取的入口點數；如果失敗，返回值為零。

Windows NT：若想獲得更多錯誤信息，請調用GetLastError函數。

註釋：通過調用GetDeviceCaps函數和定義RASTERCAPS常用量，一個應用可以確定一個設備是否支持調色板操作。

Windows CE：如果和hdc相關的設備沒有一個可設置的調色板，那麼GetSystemPaletteEntries函數就會失敗，在使用GetsystempaletteEntries之前，可使用GetDeviceCaps函數來確定考查該設備是否有一個可設置的調色板。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：2.0及以上版本；頭文件：wingdi.h；庫文件：gdi32.lib。


 函數功能：該函數檢取特定設備環境的系統調色板的當前狀態。

函數原型：UINT GetSystemPaletteUse（HDc hdc）；

參數：

hdc：設備環境句柄。

返回值：如果成功，返回值是系統調色板的當前狀態，它可是以下幾種：

SYSPAL_NOSTATIC：系統調色板除了黑色和白色之外不包含其他靜態顏色。

SYSPAL_STATIC：當一個應用映射它的邏輯調色板時，系統調色板包含的靜態顏色不會變化。

SYSPAL-ERROR：給定的設備環境無效或者不支持彩色調色板。

Windows NT：若想獲得更多錯誤信息，請調用GetLastError函數。

註釋：在缺省模式下當一個應用映射它的邏輯調色板時，系統調色板有20個靜態色彩，不發生變化。通過調用SetSystemPalette函數一個應用可以訪問這些色彩中的大部分。由hdc設備環境句柄必須支持彩色調色板。通過調用GetDeviceCaps函數和定義RASTERCAPS常量，一個應用就能確定一個設備是否支持彩色調色板。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：wingdi.h；庫文件：gdi32.lib。


 函數功能：該函數計算指定的正文字符串的寬度和高度。

函數原型：BOOL GetTextExtentPoint(HDC hdc, LPCTSTR lpString, LPSIZE lpSize)；

參數：

hdc：設備環境句柄。

lpString：指向正文字符串的指針，此字符串不必是以\0結束的，因為cbString指定了字符串的長度。

cbString：指定字符串裡的字符個數

lpSize：指向SIZE結構的指針，字符串的範圍返回在其中。

返回值：如果函數調用成功，返回值是非零值，如果函數調用失敗，返回值是0。

Windows NT：若想獲得更多錯誤信息，請調用GetLastError函數。

備註：GetTextExtentPoint用當前選擇字體來計算字符串的範圍、邏輯單位的高和寬，是不考慮任何裁剪的情況下計算的。

由於有的設備緊縮字符，一個字符串裡字符的範圍寬度之和或許並不等於字符串的範圍寬度。

計算的字符串寬度考慮了由SetTextCharacterExtra設置的字符間隔。

Windows CE：GetTextExtentPoint與GetTextExtentPoint32相同。


 函數功能：該函數計算指定的正文字符串的高度和寬度。

函數原型：BOOL GetTextExtentPoint32(HDC hdc, LPCTSTR lpString, int cbString, LPSIZE lpSize)；

參數：

hdc：設備環境句柄。

lpString：指向正文字符串的指針。此字符串不必以\0結束，因為cbString指定了字符串的長度。

cbString：指向字符串中的字符數。

lpSize：指向SIZE結構的指針，該結構中字符串的尺寸將被返回。

返回值：如果函數調用成功，返回值是非零值，如果函數調用失敗，返回值是0。

Windows NT：若想獲得更多的錯誤信息，請調用GetLastError函數。

備註：GetTextExtentPoint32用當前所選字體來計算字符串尺寸，按邏輯單位計算的高和寬都沒有考慮裁剪取的情況。

由於有的設備緊縮字符，因此一個字符串裡字符的範圍之和或許不等於字符串的範圍。

計算的字符寬度考慮了由SetTextCharacterextra設備的字符間隔。

Windows CE環境下GetTextExtentPoint32與GetTextExtentPoint相同。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：2.0及以上版本；頭文件：wingdi.h；庫文件：gdi32.lib；Unicode：在Windows NT環境下實現為Unicode和ANSI兩種版本。


 函數功能：該函數為指定的設備環境獲取窗口的X和Y的範圍。

函數原型：BOOL GetWindowsExtEx(HDC hdc, LPSIZE lpSize)；

參數：

hdc：指向設備環境的句柄。

lpSize：指向結構的指針，X、Y的範圍以頁面空間單位存放在此結構中。

返回值：如果函數調用成功，返回值為非零值，否則為零。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：wingdi.h；庫文件：gdi32.lib。


 函數功能：該函數填充矩形和三角形結構。

函數原型：BOOL GradientFill(HDC hdc, CONST PTRIVERTEX pVertex, DWORD dwNumVertex, CONST PVOID pMesh, DWORD dwNumMesh, DWORD dwMode)；

參數：

hdc：指向目標設備環境的句柄。

pVertex：指向TRIVERTEX結構數組的指針，該數組中的每項定義了三角形頂點。

dwNumVertex：頂點數目。

pMesh：三角形模式下的GRADIENT_TRIANGLE結構數組，或矩形模式下的GRADIENT_RECT結構數組。

dwNumMesh：參數pMesh中的成員數目（這些成員是三角形或矩形）。

dwMode：指定傾斜填充模式。該參數可以包含下列值，這些值的含義為：

GRADIENT_FILL_RECT_H：在該模式下，兩個端點表示一個矩形。該矩形被定義成左右邊界具有固定顏色（由TRIVERTEX結構指定）。GDI從上至下插入顏色，並填充內部區域。

GRADIENT_FILL_RECT_V：在該模式下，兩個端點表示一個矩形。該矩形定義其頂部和底部邊界的顏色為固定值（通過TRIVERTEX結構指定），GDI從頂至底部邊界插入顏色，並填充內部區域。

GRADIENTˍFILLˍTRIANGLE：在該模式下，TRIVERTEX結構數組以及描述單個三角形的數組索引序列被傳給GDI。GDI在三角形頂點之間進行線性插值，並填充內部區域。在24和32位／像素模式下，繪圖是直接進行。在16、8、4和1位／像素模式中進行抖動處理。

返回值：如果函數執行成功，那麼返回值為TRUE；如果函數執行失敗，則返回值為FALSE。

Windows NT：若想獲得更多錯誤信息，請調用GetLastError函數。

備註：若想在矩形區域中加入一些平滑的陰影（底紋），請用三角形的三個頂點調用GradientFill函數。CDI將進行線性插值，並填充矩形區域。在繪製矩形時可能使用兩種陰影模式在水平模式中，矩形從左至右開始變暗，在垂直模式中則是從上至下進行。

GradientFill函數使用網眼法（mesh method）來表示要繪製對象的端點。所有傳給GradientFill的頂點都存儲在pVertex數組中。參數pMesh指定了這些頂點如何連接形成一個對象。當填充矩形時，pMesh指向一個GRADIENTˍRECT結構數組。每一個GRADIENTˍRECT結構指定了pVertex數組中兩個頂點的索引值，這兩個頂點形成一個矩形的左上角和右下角坐標。

在填充三角形情況下，pMesh指向的是GRADIENTˍTRIANGLE結構數組。每一個GRADIENTˍTRIANGLE結構指定了pVertex數組中的3個頂點，這三個頂點形成一個三角形。

為了簡化硬件加速，無需要求該例程在三角形內部具有像素完善特性。

若想瞭解更多信息，參考平滑成影、繪製帶陰影的三解和矩形等方面的內容。

速查：Windows NT：5.0及以上版本；Windows：98及以上版本；Windows CE：不支持；頭文件：wingdi.h；庫文件：作為一個資源包含在msimg32.dll中。


 函數功能：該函數顯示中間色調色彩調整的缺省用戶接口。

函數原型：LOGN APIENTRY HTUI_ColorAdjustment(LPWSTR pCallertitle, HANDLE hDefDIB, LPWSTR pDefDIBTitle, PCOLORADJUSTMENT pColorAdjustment, BOOL ShowMonochromeOnly, BOOL UpdatePermission)；

參數：

pCallerTitle：指向調用的應用或設備標識的指針。PcallerTitle的值將在對話框的調整中顯示。如果該參數的值為空（NULL），則沒有標認顯示。

hDefDIB：設備獨立位圖的句柄，如果hDefDIB為空（NULL），則該函數使用DIB作為它的缺省圖片進行色彩調整測試。如果hDefDIB為空，則在用戶調整性能時，會顯示三個標準圖片之一：

RGB色圖表：基準色圖表；NTSC色圖表。

PDefDIBTitle：一個字符串指針，它指向DIB圖片的名字或已傳遞的hDefDIB的描述。

pColorAdjustment：指向ColoRADJUDSTMENT數據結構的指針。

ShowMonochromeOnly：限制位圖的顯示為單色，當輸出設備是單色時可設置該參數。

UpdatePemission：允許ColoRADJUSTMENT結構更新，其值如下：

TRUE：顏色調整不僅限於當前用戶界面，當退出半色調顏色調整用戶界面時，ColoRADJustMENT結構的改變將被保存。

FALSE：顏色調僅限於用戶當前的會話。CoLORADJusTMENT結構不變。

返回值：HTUL_ColorAdjustment函數返回如下類型為LONG型的數值。

>0用戶選擇更新ColoRADJUSTMENT結構；=0用戶選擇取消更新ColoRADJUSTMENT結構；<0發生了錯誤。

註釋：一個應用可以通過關聯htui.dll或使用loadlibrary和GetProcAddres函數來得到htui.dll的位置。

速查：Windows NT：5.0及以上版本；Windows：不支持；Windows CE：不支持；頭文件：wingdi.h。


 函數功能：該函數顯示一個指定設備的調整顏色的用戶界面，例如打印機。

函數原型：LONG APIENTRY HTUI_DeviceColorAdjustment(LPSTR pDeviceName, PDEVHTADJDATA pDevHTAdjData)；

參數：

pDeviceName：指向設備名的指針，在用戶顏色調整界面的修改框中顯示。

pDevHTAdjDate：指向一DEVHTADJDATA結構的指針。

返回值：HTUI_DeviceColorAdjustment函數返回一個LONG型值。

>0用戶更新DEVHTADJDATA結構；=0用戶取消顏色調整；<0發生錯誤。

速查：Windows NT：5.0及以上版本；Windows：不支持；Windows CE：不支持；頭文件：wingdi.h。


apihelpa

This page uses frames, but your browser doesn't support them.


KERNINGPAIR

KERNINGPAIR——參考GetKerningPairs函數
類型定義
Type KERNINGPAIR
wFirst As Integer
wSecond As Integer
iKernAmount As Long
End Type
說明
This structure describes a kerning pair


LARGE_INTEGER
類型定義
Type LARGE_INTEGER ' 8 Bytes
lowpart As Long
highpart As Long
End Type
說明
This structure represents a 64-bit integer. The lowpart field is the lower 32 bits of the integer and the highpart field is the upper 32 bits of the integer.
註解
參考GetDiskFreeSpaceEx函數的註解


LOGBRUSH
類型定義
Type LOGBRUSH ' 12 Bytes lbStyle As Long lbColor As Long lbHatch As Long End Type
說明
Data structure used to define a logical brush. The actual physical brush will depend on the capabilities of the device.
字段表
字段 | 類型與說明
lbStyle | Long，One of the following constants:BS_DIBPATTERN, BS_DIBPATTERN8X8, BS_DIBPATTERNPT: A pattern brush based on a device-independent bitmap (DIB). In Windows 95, brushes from bitmaps or DIBs must be 8x8 or smaller.BS_HATCHED: A hatched brush according to field lbHatch.BS_HOLLOW, BS_NULL: A hollow brush.BS_PATTERN, BS_PATTERN8X8: A pattern brush based on a bitmap.BS_SOLID: A solid brush.
lbColor | Long，Depends on the value of lbStyle:For BS_SOLID refer to the description of the crColor parameter of the CreateSolidBrush API function (see Chapter 8).For BS_HATCHED refer to the description of the crColor parameter of the CreateHatchBrush API function (see Chapter 8).For BS_DIBPATTERN* refer to the description of the wUsage parameter of the CreateDIBPatternBrush API function
lbHatch | Long，If lbStyle is BS_DIBPATTERN or BS_DIBPATTERN8X8, this field contains the handle to a packed DIB (refer to description of the hPackedDIB parameter to the CreateDIBPatternBrush API function in Chapter 8 for details). If lbStyle is BS_DIBPATTERNPT, this field contains the pointer to a packed DIB.If lbStyle is BS_HATCHED, this field is the same as the nIndex parameter to the CreateHatchBrush API function


LOGPEN
類型定義
Type LOGPEN lopnStyle As Long lopnWidth As POINTAPI lopnColor As Long End Type
說明
Data structure used to define a logical pen. The actual physical pen will depend on the capabilities of the device.
字段表
字段 | 類型與說明
lopnStyle | Long，Refer to the nPenStyle parameter of the CreatePen function
lopnWidth | POINTAPI，X field contains the width of the pen in logical units. The Y field is not used.
lopnColor | Long，RGB color of the pen.


MENUITEMINFO
類型定義
Type MENUITEMINFO cbSize As Long fMask As Long fType As Long fState As Long wID As Long hSubMenu As Long hbmpChecked As Long hbmpUnchecked As Long dwItemData As Long dwTypeData As Long cch As Long End Type
說明
這個結構包含了選單條目的信息，不支持win nt 3.51（原文：This structure contains information about a menu entry. Not supported on NT 3.51）
字段表
字段 | 類型及說明
cbSize | Long，結構大小，通常為44bytes（Size of this structure, currently at 44 bytes.）
fMask | Long，Specifies the information to set or get. Any combination of the following
 | MIIM_CHECKMARKS | Sets or gets the hbmpChecked and hbmpUnchecked fields
 | MIIM_DATA | Sets or gets the dwItemData field
 | MIIM_ID | ets or gets the wID field
 | MIIM_STATE | Sets or gets the fState field
 | MIIM_SUBMENU | Sets or gets the hSubMenu field
 | MIIM_TYPE | Sets or gets the fType and dwTypeData fields
fType | Long，Menu item type, any combination of the following with the exception that MFT_BITMAP, MFT_SEPARATOR, and MFT_STRING cannot be combined with one another:MFT_BITMAP: Displays the menu item using a bitmap. dwTypeData contains the bitmap handle.MFT_MENUBARBREAK: The menu item is placed on a new line for top level menus, a new column for popup menus. Places a line between the columns.MFT_MENUBREAK: Same as MFT_MENUBREAK without the vertical line.MFT_OWNERDRAW: The menu item is an owner-draw menu.MFT_RADIOCHECK: Uses a radio button (option button) bullet to indicate the checked state instead of a check mark. Applies if no custom bitmap is specified.MFT_RIGHTJUSTIFY: Right-justifies a top level menu item.MFT_SEPARATOR: The entry is a separator line in a pop-up menu.MFT_STRING: The entry contains a string. dwTypeData contains the address of the string, and the cch field contains the length of the string.
fState | Long，Current menu entry state or action to take. May be any combination of the following:MFS_CHECKED: Entry is checked.MFS_DEFAULT: The entry is a default item (appears in bold).MFS_DISABLED: Entry is disabled.MFS_ENABLED: Entry is enabled.MFS_GRAYED: Entry is grayed and disabled.MFS_HILITE: Entry is highlighted.MFS_UNCHECKED: Entry is unchecked.MFS_UNHILITE: Entry is unhighlighted.
wID | Long，Menu entry identifier. The high 16 bits are not used.
hSubMenu | Long，Handle to a pop-up menu if one is associated with the menu entry
hbmpChecked | Long，Handle to a bitmap to display for a menu entry when checked. Zero to use the default
hbmpUnchecked | Long，Handle to a bitmap to display for a menu entry when unchecked. Zero to use the default
dwItemData | Long，User-defined value associated with this entry.
dwTypeData | Long，Depends on the menu type
cch | Long，Length of the menu string when MFT_STRING is specified. Zero for other menu types.


 函數功能：該函數用指定的方式修改與設備環境有關的全局轉換。

函數原型：BOOL ModifyWorldTransform(HDc hdc, CONST XFORM *lpXform, DWORD iMode)；

參數：

hdc：指定環境設備。

lpXform：指向XFORM結構的指針，該結構用於修改給定0設備環境的全局轉換。

iMode：指定轉換數據如何改變當前域轉換，此參數為下列值之一：

MWT_IDENTTTY：用等同矩陣重新設置當前全局轉換，如規定此方式，由lpXform指向的XFORM結構被忽略。

MWT_LEFTMULTIPLY：用XFORM結構中的數據乘以當前轉換，XFORM結構中的數據為左乘矩陣，且與當前轉換數據為右乘矩陣。

返回值：如果函數調用成功，返回值為非零值，否則為零。

速查：Windows NT：3.1及以上版本；Windows：不支持；Windows CE：不支持；頭文件：wingdi.h；庫文件：gdi32.lib。


MONINTOR_INFO_2

MONINTOR_INFO_2——請參考AddMonitor函數
類型定義
Type MONINTOR_INFO_2 pName As String pEnvironment As String pDLLName As String End Type
說明
This structure is used by the AddMonitor function to identify an installed monitor
字段表
字段 | 類型及說明
pName | String，監視器的名字
pEnvironment | String，指定監視器的設計環境（比如「Windows NT x86」）。對於本地系統，設為vbNullString
pDLLName | String，監視器使用的DLL的名字


NETRESOURCE
類型定義
Type NETRESOURCE dwScope As Long dwType As Long dwDisplayType As Long dwUsage As Long lpLocalName As String lpRemoteName As String lpComment As String lpProvider As String End Type
說明
與網絡有關的重要任務之一就是枚舉，或者說獲取可用網絡資源的一個列表。這個結構用以定義系統的的每個網絡資源
字段表
字段 | 類型及說明
dwScope | Long，下述常數之一：
 | RESOURCE_CONNECTED | 枚舉連接的資源
 | RESOURCE_GLOBALNET | 枚舉所有資源
 | RESOURCE_REMEMBERED | 枚舉永久性連接
dwType | Long，下述常數之一：
 | RESOURCETYPE_ANY | 枚舉所有資源
 | RESOURCETYPE_DISK | 枚舉磁盤
 | RESOURCETYPE_PRINT | 枚舉印表機
dwDisplayType | Long，帶有前綴RESOURCEDISPLAYTYPE的一個常數，對資源的類型進行了定義（在網絡瀏覽器中如何顯示）
dwUsage | Long，下述標誌的一個或多個
 | RESOURCEUSAGE_CONNECTABLE | 可同這個資源連接
 | RESOURCEUSAGE_CONTAINER | 這個資源包含了可以枚舉的額外資源
lpLocalName | String，由本地系統引用的資源名稱。只能用於已連接的資源
lpRemoteName | String，資源的網絡名
lpComment | String，由網絡供應商設置
lpProvider | String，網絡供應商的名字


OFSTRUCT

OFSTRUCT——請參考OpenFile函數
類型定義
Type OFSTRUCT cBytes As Byte fFixedDisk As Byte nErrCode As Integer Reserved1 As Integer Reserved2 As Integer szPathName As String * 128 End Type
說明
請參考OpenFile函數
字段表
字段 | 類型及說明
cBytes | Byte，設置成結構的長度（目前是136）
fFixedDisk | Byte，如文件位於硬盤（而不是可拆卸的軟盤），則這個字節的值不為零
nErrCode | Integer，錯誤代碼，參考OpenFile函數的表OpenFile-2（OFSTRUCT出錯代碼）
Reserved1 | Integer，？（資料裡沒有這兩個字段的說明）
Reserved2
szPathName | String，文件的完整路徑名。這個字串使用的是OEM字符集
註解
如指定的文件名未提供完整路徑，或指定了OF_SEARCH標誌，就會在下述地方查找文件： 1——當前目錄 2——windows系統目錄。在Windows NT中，會先搜索32位系統目錄（System32），再搜索16位系統目錄（System） 3——windows目錄 4——在PATH環境變量中指定的目錄
其他
Type OFSTRUCT cBytes As Byte fFixedDisk As Byte nErrCode As Integer Reserved1 As Integer Reserved2 As Integer szPathName(OFS_MAXPATHNAME) As Byte End Type 從vb的api文本查看器中複製的類型定義與以上的不同，請注意


OSVERSIONINFO
類型定義
Type OSVERSIONINFO ' 148 Bytes dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion As String * 128 End Type
說明
This structure contains operating system version information. This structure is used with the GetVersionEx function.
字段表
字段 | 類型與說明
dwOSVersionInfoSize | Long，Size of this data structure, currently at 148 bytes. This field must be set before calling the GetVersionEx function.
dwMajorVersion | Long，Specifies the major and minor version number of the operating system.
dwMinorVersion
dwBuildNumber | Long，Specifies the build number of the operating system. On Windows 95, build 1000 respresents OEM service release #2.
dwPlatformId | Long，Specifies the platform supported by the operating system. May be one of the following:VER_PLATFORM_WIN32s: Win32s on Windows 3.1.VER_PLATFORM_WIN32_WINDOWS: Win32 on Windows 95.VER_PLATFORM_WIN32_NT: Windows NT.
szCSDVersion | String，Contains additional information about the operating system.


PALETTEENTRY
類型定義
Type PALETTEENTRY ' 4 Bytes peRed As Byte peGreen As Byte peBlue As Byte peFlags As Byte End Type
說明
Describes an entry in a logical palette
字段表
字段 | 類型與說明
peRed | Byte，An 8-bit value describing the red component of an RGB color.
peGreen | Byte，An 8-bit value describing the green component of an RGB color.
peBlue | Byte，An 8-bit value describing the blue component of an RGB color.
peFlags | Byte，An 8-bit value containing one of the following values: 0: Map this entry normally. PC_EXPLICIT: The low order word (combination of the peRed and peGreen fields) contains an index into the system palette. This allows you to display the system palette colors. PC_NOCOLLAPSE: This color is mapped into an unused system palette entry and will not be mapped to an existing color. Subsequent palettes may map colors to this entry. PC_RESERVED: This color is mapped to an unused system palette entry and no other logical palettes will be mapped to that entry. By restricting the system palette entry to this logical entry, color cycling involving direct changes to the system palette becomes possible.


POINTAPI
類型定義
Type POINTAPI
x As Long
y As Long
End Type
說明

POINTAPI結構對應於windows的POINT結構，在vb中定義為POINTAPI，從而避免與vb的Point關鍵字衝突，用於描敘一個位置（即屏幕點），與RECT結構相同，x和y字段的單位取決於準備使用的對象與api函數


POLYTEXT

POLYTEXT——參考PolyTextOut函數
類型定義
Type POLYTEXT x As Long y As Long n As Long lpStr As String uiFlags As Long rcl As RECT pdx As Long End Type
說明
This structure describes the location and contents of strings to draw for the PolyTextOut function
字段表
字段 | 類型及說明
x,y | Long，定義了字串的參考位置。根據設備場景當前的文本對齊設置，字串會對齊這個參考點
n | Long，字串的字符數量
lpStr | String，欲描繪的字串
uiFlags | Long，可設為下述一個或多個常數：
 | ETO_CLIPPED | 將輸出剪切成由rcl字段指定的一個矩形
 | ETO_OPAQUE | 用當前背景色填充rcl矩形
rcl | RECT，用於指定約束矩形（如已經設置了ETO_CLIPPED）
pdx | Long，指定一個內存塊的地址。該地址包含了一個Long型數組，用於裝載每個字符的寬度


PRINTER_DEFAULTS

PRINTER_DEFAULTS——請參考OpenPrinter函數
類型定義
Type PRINTER_DEFAULTS pDatatype As String pDevMode As Long DesiredAccess As Long End Type
說明
This structure specifies default information for a printer.
字段表
字段 | 類型及說明
pDatatype | String，印表機使用的默認數據類型的名字。可設為vbNullString，表示使用當前的默認配置
pDevMode | Long，印表機默認配置信息的一個地址。可設為零，表示使用當前默認設置
DesiredAccess | Long，PRINTER_ACCESS_ADMINISTER 或 PRINTER_ACCESS_USE，或者是一個常規的安全值（取決於您是需要配置印表機，還是僅僅訪問它）


 函數功能：該函數是一個應用程序定義的回調函數，它與EnumPropsEx函數一同使用。該函數從窗口屬性表中檢索屬性項。PROPENUMPROCEX類型定義了一個指向該回調函數的指針。PropEnumProcEx是用於應用程序定義的函數名的佔位符。

函數原型 BOOL CALLBACK PropEnumProcEx（HWND hwnd，LPTSTR lpszStrng，HANDLE hData，DWORD dwData）；

參數：

hwnd：指向要列舉屬性表內容的窗口。

lpszString：指向以null結尾的字符串的指針。該字符串是屬性表項的字符串部分。該字符串是在通過調用SetProp函數將屬性增加到窗口屬性表中時與數據句柄一起指定的。

hData：指向數據的句柄。該句柄是屬性表項中的數據部分。

dwData：應用程序定義的數據、該值被指定為在調用EnumPropsEX進行列舉初始化時的IParam參數。

返回值：返回TRUE以繼續列舉屬性表。返回FALSE停止列舉屬性表。

備註：下列限制適用該回調函數：

請回調函數不應該產生對其他任務的控制或做一些有可能產生對其他任務的控制的事情。該回調函數可以調用RemoveProp函數。然而，RemoveProp函數通過該回調函數的參數只能清除傳給該回調函數的屬性。該回調函數不應該試圖增加屬性。

速查：Windows NT：3.1以上版本；Windows：95的以上版本；Windows CE：不支持；頭文件：winuser.h；庫文件：用戶自定義；Unicode：定義為Unicode和ANSI原型。


PROVIDOR_INFO_1

PROVIDOR_INFO_1——請參考AddPrintProvidor函數
類型定義
Type PROVIDOR_INFO_1 ' 12 Bytes pName As Long pEnvironment As Long pDLLName As Long End Type
說明
This structure is used to describe a print providor
字段表
字段 | 類型及說明
pName | String，供應商的名字
pEnvironment | String，指定供應商的設計環境（比如「Windows NT x86」）。對於本地系統，設為vbNullString
pDLLName | String，供應商使用的DLL的名字


 函數功能：該函數從當前邏輯調色板中映射調色板入口點到系統調色板中。

函數原型：UINT RealizePalette(HDC hdc)；

參數：

hdc：設備環境句柄。一個邏輯調色板被選擇在該設備環境中。

返回值：如果函數成功，函數返回值定義口點的數目，這些邏輯調色板中的入口點映射到系統調色板中；如果失敗，返回值是GDIˍERROR。

Windows NT：若想獲得更多錯誤信息，請調用GetLastError函數。

註釋：通過調用GetDeviceCaps函數和定義RASTERCAPS常量。一個應用可以確定一個設備是否支持調色板操作。

RealizePalette函數修改與指定設備環境有關的設備的調色板，如果該設備環境是一個內存設備環境，那麼選進該設備環境的位圖顏色表將被修改，如果該設備環境是珍上顯示設備環境，那麼該設備的物理調色板將被修改。

邏輯顏色調色板是顏色密集型應用和系統之間的一個緩存，允許這些應用在不干擾其他窗口顏色的情況下使用任意多的顏色。

當焦點在一個應用窗口，並且它調用RealizePalette函數時，則系統試圖映射盡可能多的顏色，這對於活動窗口的應用也同樣正確。

Windows CE：Windows CE在前景和背景調色板應用之間並不做出仲裁，前景應用完全控制了系統調色板，因此，對於前景應用Windows CE並不執行任何顏色匹配操作。它僅僅用hdc參數的調色板入口點來覆蓋系統調色板的入口點。

Windows CE背景應用中不支持RealizePalette函數。

如果與hdc相關的設備設置一個可設置的調色板，那麼RealizePalette函數將執行失敗，在使用RealizePaletle函數之前，先調用GetDevicecaps函數來斷定一個設備是否有一個可設置的調色板。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：2.0及以上版本；頭文件：wingdi.h；庫文件：gdi32.lib。


RECT
類型定義
Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
說明

這是windows廣泛採用的一種數據結構，通常作為參數傳遞給許多api函數。RECT結構表示一個矩形區域，left和top字段描敘了矩形第一個角（通常是左上角），right和bottom字段描敘了矩形的第二個角（通常是右下角）。這兩個位置決定了矩形的大小與位置。這些字段採用的單位及坐標系統取決於當前的有效縮放比例、準備表示的對象以及準備調用的api函數。並不要求bottom字段的絕對值大於top字段，而且也可以為負數。

注意
由right及bottom字段指定的點通常不是矩形的一部分；矩形對像描敘的是個空矩形（其中不包含像素）；RECT結構要求按引用傳遞給windows函數，不要試圖使用ByVal


 函數功能：該函數增大或減小基於指定值的邏輯調色板的大小。

函數原型：BOOL ResizePalette(HPALETTE hpal, UINT nEntries)；

參數：

hpal：標識一個將發生變化的調色板。

nEntries：指定一個調整過大小的調色板的入口點數。

返回值：如果成功返回非零值；如果失敗返回值是零。

Windows NT：若想獲得更多錯誤信息，請調用函數GetLastError。

註釋：通過調用GetDeviceCaps和指定RASTERCAPS常量，一個應用可以確定一個設備是否指調色板操作。如果一個應用調用ReSizeCaps來減小一個調色板的大小。那麼該調色板中剩餘的入口點不發生變化，如果一個應用調用ReSizePalette函數來增大一個調色板的大小，那麼增加的調色板入口點置為黑色（紅色、綠色和藍色值為0）並且它們的標誌置為0。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：wingdi.h；庫文件：gdi32.lib。


RGNDATA
類型定義
Type RGNDATA rdh As RGNDATAHEADER Buffer(1) As RECT End Type
說明
Used by the GetRegionData function to describe a region.
字段表
字段 | 類型及說明
rdh | RGNDATAHEADER，Describes the region. Refer to the RGNDATAHEADER structure for detailed information on this field.
Buffer | RECT Array，An array of RECT structures. The size of the array is specified in the nRgnSize field of the rdh field. The rectangles are sorted top to bottom, left to right, and do not overlap.


 函數功能：該函數選擇指定的邏輯調色板到一個設備環境中。

函數原型：HPALETTE SelectPalette(HDC hdc, HPALETTE hpal, BOOL bForceBackground)；

參數：

hdc：設備環境句柄。

hpal：標識被選擇的邏輯調色板。

bForceBackground：確定邏輯調色板是否被強行作為一個背景調色板，如果該值為TRUE RealizePalette函數就使邏輯調色板以最好的可能方式映射成物理調色板中已有的顏色，這種情況常發生；如果該值為FALSE，RealizePalette使邏輯調色板拷貝到設備調色板中，這時該應用在前景（如果hdc參數是一個內存設備環境，該參數被忽略）。

返回值：如果成功，返回值和設備環境以前的邏輯調色板相一致；如果失敗返回值為NULL。

Windows NT：若想獲得更多錯誤信息，請調用GetLastError函數。

註釋：通過調用GetDevicecaps函數和定義RASTERCaps常數，一個應用可以確定一個設備是否支持調色板操作。

一個應用可以把一個邏輯調色板選入多個設備環境中，邏輯調色板的變化會影響所有的設備環境。

如果一個頂層窗口的每一個子窗口都映射自己的調色板，那麼一個應用就可以在bForceBackground參數設為TRUE的情況下調用SelectPalette。但是只有需要映射它的調色板的子窗口必須把bForceBackground置為TRUE，其他的子窗口必須把該值設為FALSE。

Windows CE：Windows CE在前景應用和背景應用的調色板之間不做仲裁，因此WindowsCE忽略bForceBackground參數，把它當作始終是FALSE。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：2.0及以上版本；頭文件：wingdi.h；庫文件：gdi32.lib。


 函數功能：該函數把當前設備上下文環境（DC）畫筆顏色設置為指定顏色值。如果設備不能提供指定的顏色值，那麼就把顏色設為最近的物理顏色。

函數原型：COLORREF SetDCBrushColor(HDC hdc, COLORREF crColor)；

參數：

hdc：設備上下文環境句柄。

crColor：指定新的畫筆顏色。

返回值：如果成功，返回值指定先前設備上下文環境畫筆顏色為COLORREF值；如果失敗，返回CLR_INVALID。

註釋：當在 一個設備上下文環境中選擇系統備用DC_BRUSH時，所有的以後繪製操作將使用設備上下文環境畫筆顏色，直到系統備用畫筆被取消選擇為止，缺省DC_BRUSH顏色是WHITE。

該函數將返回先前的DC_BRUSH顏色，即使在DC中沒有選擇系統備用畫筆DC_BRUSH，但是，除非系統備用DC-BRUSH被選擇，否則繪製操作將不使用它，設置顏色可參照設置筆和畫筆顏色的例子。

使用DC_BRUSH或DC_PEN參數的GetStockObject函數可以與SetDCPenColor和SetDCBrushColor函數互換。

ICM：如果ICM可用就執行顏色管理。

速查：Windows NT：5.0及以上版本；Windows：不支持；Windows CE：不支持；頭文件：wingdi.h；庫文件：gdi32.lib。


 函數功能：該函數為一個使用指定值的設備環境設置顏色調整值。

函數原型：BOOL SetColorAdjustment(HDC hdc, CONST COLORADJUSTMENT *lpca)；

參數：

hdc：設備環境句柄。

lpca：指向COLORADJUSTMENT結構的指針，該結構包含顏色調整值。

返回值：如果成功，返回值非零；如果失敗，返回值是零。

Windows NT：若想獲得更多錯誤信息，請調用GetLastError函數。

註釋：當調用StretchBit和函數StretchDIBits，設為HALFTONE模式時顏色調整值用來調整源位圖的輸入顏色。

速查：Windows NT：3.1及以上版本；Windows：不支持；Windows CE：不支持；頭文件：wingdi.h；庫文件：gdi32.lib。


 函數功能；該函數把當前設備上下文環境（DC）的筆顏色設置為指定顏色值。如果設備不能提供指定的顏色值，顏色就設為最近的物理顏色。

函數原型：COLORREF SetDCPenColor(HDC hdc, COLORREF crColor)；

參數：

hdc：設備上下文環境的句柄。

crColor：指定新筆顏色。

返回值：如果成功，則返回值指定先前DC筆顏色為某個COLORREF值；如果失敗，返回CLR_INVALID。

註釋：即使系統備用筆DC_PEN沒有被選入DC，該函數仍將返回先前DC_PEN的顏色，但是在繪製操作中這將不被使用，直到系統備用DC_PEN被選入DC為止。

設置顏色可以參見設置筆或畫筆顏色的例子，使用DC_BRUSH或DC_PEN參數的GetStockObject函數可與SetDCPenColor和SetDCBrushColor函數交換使用。

ICM：如果ICM可用就執行顏色管理。詳情參見ForegroundldleProc鉤子處理過程。

速查：Windows NT：5.0及以上版本；Windows：不支持；Windows CE：不支持；頭文件：wingdi.h；庫文件：gdi32.lib。


 函數功能：該函數使指定設備環境的當前剪切區域與當前的元區域產生一個交集，並把該交集區域保存為指定設備環境的新的元區域。剪切區域被重置為空區域。

函數原型：

參數：

hdc：設備環境句柄。

返回值：返回值表明了新剪切區域的複雜度，取如下值之一。

NULLREGION：空區域；

SIMPLEREGION：區域為單個矩形；

COMPLEXREGION：區域為多個矩形；

ERROR：發生錯誤（以前的剪切區域不受影響）。

註釋：設備環境的當前剪切區域由它的剪切區域與元區域的交集來確定。只有在當通過調用SaveDC函數把一個應用的初始設備環境保存了之後SetMetaRgn函數才可被調用。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：wingdi.h；庫文件：gdi32.lib。


 函數功能：該函數為一個邏輯調色板的入口點數組設置RGB顏色值和標誌。

函數原型：UINT SetPaletteEntries(HPALETTE hpal, UINT iStart, UINT cEntries, CONST PALETTEENTRY *lppe)；

參數：

hpal：標識邏輯調色板。

iStart：指定第一個被設置的邏輯調色板入口點。

cEntries：指定被設置的邏輯調色板的入口點數目。

lppe：指向包含RGB值和標誌的PALETTEENTRY結構數組的第一個元素。

返回值：如果成功，返回值是邏輯調色板中設置的入口點數目；如果失敗，返回值為零。

Windows NT：若想獲得更多錯誤的信息，請調用GetLastError函數。

註釋：通過調用GetDeviceCaps函數和定義RASTERCAPS常數，一個應用可以確定一個設備是否支持調色板操作。

如果一個邏輯調色板已被選擇並且被映射，那麼該調色板的變化並不影響外部的物理調色板，RealizePalette必須重新被調用以設置一個新的邏輯調色板到外部。

Windows CE：如果startindex調色板入口點數目大。那麼setpalettEntries函數將執行失敗。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：2.0及以上版本；頭文件：wingdi.h；庫文件：gdi32.lib。


 函數功能：該函數將指定坐標處的像素設置為與指定顏色最接近的顏色，該像素點必須在剪輯區和設備表面的可視部分內。 函數原型：BOOL SetPixeIV(HDC hdc, int X, int Y, COLORREF crColor)； 參數： hdc：設備環境句柄。 X：指定要設置點的X軸坐標，按邏輯單位表示坐標。 Y：指定要設置點的Y軸坐標，按邏輯單位表示坐標。 crColor：指定要用來繪製像素點的顏色。 返回值：如果函數成功，那麼返回值非零；如果函數失敗，那麼返回值為零。 Windows NT：若想獲得更多的錯誤信息，請調用GetLastError。 備註：不是所有設備都支持SetPixeIV函數0。有關這方面的更多信息，請參考GetDeviceCaps函數中有關RC_BITBLT特性的描述。SetPixeIV比SetPixel快，因為前者不需要返回實際繪製點的顏色值。 速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：wingdi.h：庫文件：gdi32.lib。


 函數功能：該函數允許一個應用指定系統調色板包含2個或20個靜態顏色。缺省的系統調色板包含20個靜態顏色（為一個應用映射一個邏輯調色板時，靜態顏色不發生變化）。

函數原型：UINT SetSystemPaletteUse(HDC hdc, UINT uUsage)；

參數：

hdc：設備環境句柄，該設備環境必須引用一個支持彩色調色板的設備。

uUsage：指定系統調色板的一個新的使用，該值可以是如下幾種：

SYSPAL_NOSTATIC：系統調色板包含個靜態顏色（黑色和白色）。

SYSPAL_NOSTATIC 256：Windows NT 5.0或以後版本，系統調色板不包含靜態顏色。

SYSPAL_STATIC：系統調色板包含靜態顏色，當一個應用映射它的邏輯調色板時這些靜態顏色不發生變化。

返回值：如果成功，返回值是前一個系統調色板，它可以是SYSPAL_NOSTATIC。SYSPAL_NOSTATIC 256或SYSPAL_STATIC；如果失敗，返回值是SYSPAL_ERROR。

Windows NT：若想獲得更多錯誤信息，請調用GetLastError函數。

註釋：通過調用GetDeviceCaps函數和指定RASTERCAPS常量，一個應用可以確定一個設備是否支持調色板操作。

當一個應用程序窗口移到前台，並且SYSPAL_NOSTATIC值已設置時，該應用必須調用GetSysColor函數來儲存當前的系統顏色設值，它必須同時調用setsysColor函數僅使用黑色和白色來設置合理的值。當該應用回到後台或被中斷，則以前的系統顏色必須被恢復。

如果該函數返回SYSPAL_ERROR，則指定的設備環境無效，或者不支持彩色調色板。當一個應用的窗口最大化並且有輸入焦點時，必須調用該函數。當一個應用調用該函數並且uUsage設置為SYSPAL_NOSTATIC之後，它必須遵循如下的步驟：映射邏輯調色板。調用GetSysColor函數保存當前系統顏色設置。調用SetsysColor函數使用白色和黑色設置系統顏色為合理值。例如，相鄰或重迭的項目（如窗口框和邊界）應分別設置為黑色和白色。

發送WM_SYSCOLORCHANGE消息到其他的頂層窗口，讓它們使用新的系統顏色刷新屏幕。

當該應用窗口關閉或失去焦點時，它必須做如下事情：

調用SetsystemrPalette函數並把uUsage參數設置為SYSPAL_STATIC，映射邏輯調色板。

把系統顏色恢復為以前的值，發送WM_SYSColoRCHANGE消息。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：wingdi.h；庫文件：gdi32.lib。


SYSTEM_INFO
類型定義
Type SYSTEM_INFO ' 36 Bytes dwOemID As Long dwPageSize As Long lpMinimumApplicationAddress As Long lpMaximumApplicationAddress As Long dwActiveProcessorMask As Long dwNumberOrfProcessors As Long dwProcessorType As Long dwAllocationGranularity As Long wProcessorLevel As Integer wProcessorRevision As Integer End Type
說明
This structure contains information regarding the current computer system.
字段表
字段 | 類型與說明
dwOemID | Long，System processor used. In Windows 95, this value is always set to zero (PROCESSOR_ARCHITECTURE_INTEL). In Windows NT, this value may be one of the following : PROCESSOR_ARCHITECTURE_INTEL, PROCESSOR_ARCHITECTURE_MIPS, PROCESSOR_ARCHITECTURE_ALPHA, PROCESSOR_ARCHITECTURE_PPC
dwPageSize | Long，Page size used. Also specifies the granularity of page protection and commitment.
lpMinimumApplicationAddress | Long，Contains the lowest memory address that applications and dynamic link libraries (DLLs) can access.
lpMaximumApplicationAddress | Long，Contains the highest memory address that applications and DLLs can access.
dwActiveProcessorMask | Long，Contains a mask representing the set of processors available on the system. Processor zero is indicated by bit zero being set.
dwNumberOrfProcessors | Long，The number of processors in this system.
dwProcessorType | Long，Obsolete, but maintained for backward compatibility. Can be one of the following values: PROCESSOR_INTEL_386, PROCESSOR_INTEL_486, PROCESSOR_INTEL_PENTIUM. The following are valid on Windows NT systems only: PROCESSOR_MIPS_R4000, PROCESSOR_ALPHA_21046
dwAllocationGranularity | Long，Contains the allocation granularity used to allocate memory. This value is usually set to 64K.
wProcessorLevel | Integer，Specifies the processor level. This value depends on the PROCESSOR_ARCHITECTURE_* value in the dwOemID field. For PROCESSOR_ARCHITECTURE_INTEL, the valid values are currently: 3 for a 386 CPU, 4 for a 486 CPU, and 5 for a Pentium.
wProcessorRevision | Integer，Specifies the processor revision. This value depends on the PROCESSOR_ARCHITECTURE_* value in the dwOemID field.


SYSTEMTIME
類型定義
Type SYSTEMTIME ' 16 Bytes wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMilliseconds As Integer End Type
說明
This structure contains date and time information.
字段表
字段 | 類型與說明
wYear | Integer，The current year.
wMonth | Integer，The current month. January is 1.
wDayOfWeek | Integer，The current day of the week. Sunday is 0.
wDay | Integer，The current day of the month.
wHour | Integer，The current hour.
wMinute | Integer，The current minute.
wSecond | Integer，The current second.
wMilliseconds | Integer，The current millisecond.


TIME_ZONE_INFORMATION
類型定義
Type TIME_ZONE_INFORMATION ' 172 Bytes Bias As Long StandardName(32) As Integer StandardDate As SYSTEMTIME StandardBias As Long DaylightName(32) As Integer DaylightDate As SYSTEMTIME DaylightBias As Long End Type
說明
This structure contains information about the time zone for this system.
字段表
字段 | 類型與說明
Bias | Long，Used to translate local time into coordinated universal time (UTC) time. The bias is the difference, in minutes, between UTC and local time. The following formula is used: UTC = local time + bias.
StandardName | Integer Array，A double-byte null-terminated Unicode string that describes the standard time zone for the system. This field is not used internally and may be set to zero.
StandardDate | SYSTEMTIME，Contains a date and UTC time describing when the transition from daylight time to standard time occurs on this system. Set the wMonth field to zero to ignore this field.
StandardBias | Long，Value to add to the Bias field when standard time is in effect. Ignored if StandardDate is not used.
DaylightName | Integer Array，A double-byte null-terminated Unicode string used to describe the daylight time zone for this system. This field is not used internally and may be set to zero.
DaylightDate | SYSTEMTIME，Contains a date and UTC time describing when the transition from standard time to daylight time occurs on this system. Set the wMonth field to zero to ignore this field.
DaylightBias | Long，Value to add to the Bias field when daylight saving time is in effect. Ignored if DaylightDate is not used.


TPMPARAMS
類型定義
Type TPMPARAMS cbSize As Long rcExclude As RECT End Type
說明
這個結構用於TrackPopupMenuEx函數以支持額外的功能（This structure is used by the TrackPopupMenuEx function to support additional capabilities）
字段表
cbSize | Long，這個結構的大小，必須為20（The size of this structure. Must be 20）
rcExclude | RECT，屏幕上不能由彈出式選單覆蓋的一個矩形區域（Specifies a rectangle in screen coordinates that should not be covered by this pop-up menu）


 函數功能：該函數對指定的源設備環境中的矩形區域像素的顏色數據進行位塊（bit_block）轉換，並將結果置於目標設備環境。 函數原型：BOOL TransparentBltm(HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int hHeightDest, HDC hdcSrc, int nXOriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc, UINT crTransparent)； 參數： hdcDest：指向目標設備環境的句柄。 nXOriginDest：指定目標矩形左上角的X軸坐標，坐標以邏輯單位表示。 nYOriginDest：指定目標矩形左上角的Y軸坐標，坐標以邏輯單位表示。 nWidthDest：指定目標矩形的寬度。 nHeightDest：指定目標矩形高度的句柄。 hdcsrc：指向源設備環境的句柄。 nXOriginSrc：指定源矩形（左上角）的X軸坐標，坐標以邏輯單位表示。 nYOriginsrc：指定源矩形（左上角）的Y軸坐標，坐標以邏輯單位表示。 nWidthSrc：指定源矩形的寬度。 nHeightSrc：指定源矩形的高度。 ：源位圖中的RGB值當作透明顏色。 返回值：如果函數執行成功，那麼返回值為TRUE；如果函數執行失敗，那麼返回值為FALSE。 Windows NT：若想獲取更多錯誤信息，請調用GetLastError函數。 備註：函數TransparentBlt支持4位／像素和8位／像素格式的源位圖，使用AlphaBlend可以指定帶有透明度的32位／像素格式的位圖。 如果源和目標矩形的大小不一致，那麼將對源位圖進行拉伸以與目標矩形匹配，當使用SetStretchBltMode函數時，BLACKONWHITE和WHITEONBLACK兩種iStretchMode模式將被轉換成TransparentBlt函數的COLORONCOLOR模式。 目標設備環境指定了用於目標坐標的變換類型，而源設備環境指定了源坐標使用的變換類型。 如果源位圖或目標位圖的寬度或高度是負數，那麼TransparentBlt函數也不對位圖進行鏡像。 速查：Windows NT：5.0及以上版本；Windows：98及以上版本；Windows CE：不支持；頭文件：wingdi.h：庫文件：作為一個資源包含在msimg32.dll中。


類別
控件與消息函數 | 共91個函數
硬體與系統函數 | 共98個函數
設備場景函數 | 共73個函數
繪圖函數 | 共105個函數
位圖、圖標和光柵運算函數 | 共39個函數
選單函數 | 共37個函數
文本和字體函數 | 共41個函數
列印函數 | 共56個函數
文件處理函數 | 共118個函數
Windows消息函數 | 共11個函數
網絡函數 | 共14個函數
進程和線程函數 | 共30個函數
同步函數（包括互斥體，信號機和事件函數） | 共31個函數


uAction

uAction常數表——請參考SystemParametersInfo函數
請參考windows用戶手冊，瞭解關於這些參數以及註冊表或win.ini文件的詳細情況。如參數不是為一個行動指定的，則沒有使用。在許多許多情況下系統參數都有自己對應的 GET 和 SET 行動；例如 SPI_GETACCESSTIMEOUT 和 SPI_SETACCESSTIMEOUT。在這些情況下，除非特別指明，否則它們之間唯一的區別就是一個用於取得信息，另一個設置信息。針對 SET 條目，只列出參數間的差異
常數 | 含義
SPI_GETACCESSTIMEOUT | lpvParam是一個ACCESSTIMEOUT結構，其中要載入輔助訪問特性計時信息。在調用函數之前，uParam必須設為ACCESSTIMEOUT結構的大小
SPI_GETANIMATION | lpvParam是一個ANIMATIONINFO結構，將在其中載入窗口最小化和恢復時的動畫信息。不能在NT 3.51中使用
SPI_GETBEEP | lpvParam是一個Long型數據，若打開了響鈴聲，則設為TRUE
SPI_GETBORDER | lpvParam是一個Long型數據，用於接收一個乘數（倍數），對大小可變的窗口的邊框尺寸進行控制
SPI_GETDEFAULTINPUTLANG | lpvParam是一個Long型數據，用於接收默認鍵盤佈局的一個32位句柄。不能用於NT 3.51
SPI_GETDRAGFULLWINDOWS | lpvParam是一個Long型數據，如在整個窗口上拖動，就會設為TRUE。如果只拖出了一個矩形輪廓，則為FALSE。要求NT 4.0 或 Windows 95支持。其中，Windows 95必須有Plus！支持，或直接安裝Windows 95 OSR2
SPI_GETFASTTASKSWITCH | lpvParam是一個Long型數據，如允許快速任務切換，則為TRUE。在Windows 95 和 NT 4.0中肯定是TRUE
SPI_GETFILTERKEYS | lpvParam是一個FILTERKEYS結構，用於裝載與鍵盤有關的輔助訪問特性信息
SPI_GETFONTSMOOTHING | lpvParam是一個Long型數據，如打開了邊緣修飾特性（讓字體更圓潤），則為TRUE。只適用於 NT 4.0 和帶 Plus！ 支持的 Windows 95
SPI_GETGRIDGRANULARITY | lpvParam是一個Long型數據，會設為網格間隔尺寸值
SPI_GETHIGHCONTRAST | lpvParam是一個HIGHCONTRAST結構，用於裝載與用戶顯示器有關的輔助訪問特性信息。僅適用於Win95
SPI_GETICONMETRICS | lpvParam是一個ICONMETRICS結構，用於裝載與圖標比例及排列有關的信息。僅適用於Windows 95 及 NT 4.0
SPI_GETICONTITLELOGFONT | lpvParam指向一個LOGFONT結構，設置內容取決於圖標標題採用的字體
SPI_GETICONTITLEWRAP | lpvParam是一個Long型數據，如允許對圖標標題進行自動換行，則設為TRUE
SPI_GETKEYBOARDDELAY | lpvParam是一個Long型數據，設為鍵盤重複延時
SPI_GETKEYBOARDPREF | lpvParam是一個Long型數據，如用戶更喜歡用鍵盤而不是滑鼠，則設為TRUE。如這個參數為真，windows會顯示出附加的鍵盤接口信息，只適用於win95
SPI_GETKEYBOARDSPEED | lpvParam是一個Long型數據，設為鍵盤的重複速率
SPI_GETMENUDROPALIGNMENT | lpvParam是一個Long型數據，若彈出式選單左對齊（默認），則設為FALSE。否則為TRUE
SPI_GETMINIMIZEDMETRICS | lpvParam是一個MINIMIZEDMETRICS結構，用於裝載與最小化窗口的比例及排列有關的信息。僅適用於win95
SPI_GETMOUSE | lpvParam是三元素Long數組的頭一個條目，條目0設為用戶配置MouseThreshold1字段，條目1設為MouseThreshold2字段，條目2設為MouseSpeed
SPI_GETMOUSEKEYS | lpvParam是一個MOUSEKEYS結構，要在其中裝載與滑鼠有關的輔助訪問信息。不能在 NT 3.51中使用
SPI_GETNONCLIENTMETRICS | lpvParam是一個NONCLIENTMETRICS結構，要在其中裝載有關字體和環境有關的信息；這些信息會在描繪窗口非客戶區域時涉及到，如邊框、標題等。只適用於win95
SPI_GETSCREENSAVEACTIVE | lpvParam指向一個整數；倘若屏幕保護程序處於活動狀態，則設為TRUE；否則設為FALSE
SPI_GETSCREENSAVETIMEOUT | lpvParam指向一個整數；它設為屏幕保護延時（以秒為單位）
SPI_GETSERIALKEYS | lpvParam是一個SERIALKEYS結構，用於裝載與輸入設備（用於模擬鍵盤輸入）有關的輔助訪問特性信息。只適用於win95
SPI_GETSHOWSOUNDS | lpvParam是一個Long型數據，倘若應用程序應該用可視線索來代替聲音，則設為TRUE。它的作用與GetSystemMetrics函數的SM_GETSHOWSOUNDS選項是相同的
SPI_GETSNAPTODEFBUTTON | lpvParam是一個Long型數據，倘若滑鼠會自動移到新對話框的默認按鈕，則設為TRUE。只適用於NT 4.0
SPI_GETSOUNDSENTRY | lpvParam是一個SOUNDSENTRY結構，用於裝載讓windows提供可視標誌（而不是系統聲音）時涉及的輔助訪問特徵信息。調用之前，必須將uParam設為SOUNDSENTRY結構的長度
SPI_GETSTICKYKEYS | lpvParam是一個STICKYKEYS結構，用於裝載允許一名用戶順序按鍵（而不是同時按下）時涉及的輔助訪問特徵信息。同時按鍵的例子包括Shift+， Ctrl+， Alt+ 等。調用之前，必須將uParam設為STICKYKEYS結構的長度
SPI_GETTOGGLEKEYS | lpvParam是一個TOGGLEKEYS結構，要在其中裝載按下一個開關鍵（NumLock，CapsLock，ScrollLock）後播放聲音提示時涉及的輔助訪問特徵信息。windows會用一個不同的聲音指出開或關狀態。調用之前，必須將uParam設為TOGGLEKEYS結構的長度
SPI_GETWORKAREA | lpvParam是一個RECT結構，用於裝載屏幕的工作區
SPI_ICONHORIZONTALSPACING | 如lpvParam為NULL，則uParam代表桌面圖標新的水平間隔距離，以像素為單位
SPI_ICONVERTICALSPACING | 與SPI_ICONHORIZONTALSPACING相似，只不過指定圖標的垂直間距
SPI_LANGDRIVER | lpvParam是一個字串，用於容納新的語言驅動程序文件的名稱
SPI_SETACCESSTIMEOUT | 與SPI_GETACCESSTIMEOUT的參數相同
SPI_SETANIMATION | 與SPI_GETANIMATION的參數相同
SPI_SETBEEP | uParam為TRUE時打開響鈴，FALSE關閉
SPI_SETBORDER | uParam代表一個乘數，用於控制尺寸可變的的窗口邊框的大小
SPI_SETDEFAULTINPUTLANG | 與SPI_GETDEFAULTINPUTLANG的參數相同
SPI_SETDESKPATTERN | 從註冊表或win.ini中強制窗口恢復當前的桌面方案
SPI_SETDESKWALLPAPER | lpvParam代表一個字串，用於容納作為桌面牆紙使用的一個位圖文件的名稱
SPI_SETDOUBLECLICKTIME | uParam代表連續兩次單擊被當作一次雙擊處理時需要間隔的時間（以毫秒為單位）
SPI_SETDOUBLECLKHEIGHT | uParam代表新的雙擊高度，可參考GetSystemMetrics函數的註解
SPI_SETDOUBLECLKWIDTH | uParam代表新的雙擊寬度，可參考GetSystemMetrics函數的註解
SPI_DRAGFULLWINDOWS | uParam為TRUE時打開全窗口拖動，否則為FALSE。僅適用於win95
SPI_SETDRAGHEIGHT | uParam代表一個矩形的高度（以像素為單位），用於決定拖動操作何時開始。只適用於win95
SPI_SETDRAGWIDTH | uParam代表一個矩形的寬度（以像素為單位），用於決定拖動操作何時開始。只適用於win95
SPI_SETFASTTASKSWITCH | uParam為TRUE時打開快速任務切換，FALSE則關閉
SPI_FILTERKEYS | 參數與 SPI_GETFILTERKEYS 相同
SPI_SETFONTSMOOTHING | uParam為TRUE時打開字體修飾（圓潤）。只能在NT 4.0 和得到 Plus！ 支持的 Win95（或 Windows 95 OSR2）中使用
SPI_SETGRIDGRANULARITY | uParam代表新的網格間距
SPI_SETHIGHCONTRAST | 參數與 SPI_GETHIGHCONTRAST 相同
SPI_SETICONMETRICS | 參數與 SPI_GETICONMETRICS 相同
SPI_SETICONTITLELOGFONT | lpvParam是一個LOGFONT結構，用於定義圖標標題採用的字體。uParam指定LOGFONT結構的大小。如兩者均為NULL，則採用系統啟動時定義的字體
SPI_SETICONTITLEWRAP | uParam為TRUE時打開圖標標題自動換行
SPI_SETKEYBOARDDELAY | uParam代表新的鍵盤重複延時
SPI_SETKEYBOARDPREF | 若uParam為TRUE，表明用戶相比鍵盤和滑鼠更喜歡用前者。參考SPI_GETKEYBOARDPREF
SPI_SETKEYBOARDSPEED | uParam代表新的鍵盤重複速率
SPI_SETLANGTOGGLE | 令窗口從系統註冊表中重新裝載熱鍵信息，以便在鍵盤佈局之間交換
SPI_SETLOWPOWERACTIVE | uParam為TRUE時允許節能屏幕保護程序模式。只適用於win95
SPI_SETLOWPOWERTIMEOUT | uParam代表新的節能屏幕保護程序延時。只適用於win95
SPI_SETMENUDROPALIGNMENT | uParam為FALSE時設置彈出選單左對齊，TRUE則右對齊
SPI_SETMINIMIZEDMETRICS | 參數與SPI_GETMINIMIZEDMETRICS一樣
SPI_SETMOUSE | lpvParam是一個三元素整數數組的頭一個條目，其中包含了滑鼠設置。參考SPI_GETMOUSE
SPI_SETMOUSEBUTTONSWAP | uParam為TRUE時交換左右滑鼠按鈕的功能；如果為FALSE，則使用原來的值
SPI_SETMOUSEKEYS | 參數與SPI_GETMOUSEKEYS一樣
SPI_SETNONCLIENTMETRICS | 參數與SPI_GETNONCLIENTMETRICS一樣
SPI_SETPENWINDOWS | uParam為TRUE時載入筆窗口，FALSE則卸載
SPI_SETPOWEROFFACTIVE | uParam為TRUE時允許停電屏幕保護模式。只適用於win95
SPI_SETPOWEROFFTIMEOUT | uParam代表新的停電屏幕保護程序延時。只適用於win95
SPI_SETSCREENREADER | uParam為TRUE時表示正在運行一個屏幕閱讀程序。參考SPI_GETSCREENREADER
SPI_SETSCREENSAVEACTIVE | uParam為TRUE時激活屏幕保護程序；FALSE表示禁止
SPI_SETSCREENSAVETIMEOUT | uParam代表新的屏幕保護延遲時間，以秒為單位
SPI_SETSERIALKEYS | 參數與 SPI_GETSERIALKEYS 相同
SPI_SETSHOWSOUNDS | uParam為TRUE時允許窗口開啟聲音提示輔助訪問特性。參考SPI_GETSHOWSOUNDS
SPI_SETSNAPTODEFBUTTON | 如滑鼠應自動移到新對話框的默認按鈕，則uParam為TRUE。只適用於NT 4.0
SPI_SETSOUNDSENTRY | 與 SPI_GETSOUNDSENTRY 相同
SPI_SETSTICKYKEYS | 與 SPI_GETSTICKYKEYS 相同
SPI_SETTOGGLEKEYS | 與 SPI_GETTOGGLEKEYS 相同
SPI_SETWORKAREA | 與 SPI_GETWORKAREA 相同
請參考最新的Win32手冊，瞭解SystemParametersInfo函數是否又新支持了一些常數。上述表格已隨同NT 4.0進行了更新，但仍未提供涉及新型滑鼠輪支持的常數。


 函數功能：該函數通過把客戶區域的當前顏色重新映射到發前被映射過的邏輯調色板，來更新指定設備環境的客戶區域。

函數原型：BOOL UpdateColors(HDC hdc)；

參數：

hdc：設備環境句柄。

返回值：如果成功返回值非零，如果失敗，返回值為零。

Windows NT：若想獲得更多錯誤信息，請調用GetLastError函數。

註釋：通過調用GetDeviceCaps函數和設置RASTERCAPS常量，一個應用可以確定一個設備是否支持調色板操作，當系統調色板發生變化時，一個映射邏輯調色板非活動窗口可以通過調用Updatecolors，作為一種選擇方法刷新它的客戶區域。

UpdateColors函數更新一個客戶區域比刷新該區域要快，但是，由於在系統調色板改變之前UpdateColors函數要進行基於每個像素顏色的色彩轉換，因此，每一次調用該函數會導致一些顏色失真。

一旦收到WM_PALETTECHANGED消息，該函數必須馬上被調用。

速查：Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；頭文件：wingdi.h；庫文件：gdi32.lib。


VerInstallFile函數結果常數表

常數 | 說明
VIF_TEMPFILE | 目標目錄保存了作為新文件一個副本的臨時文件，需將其刪除
VIF_MISMATCH | 現有文件的一項或多項版本屬性與新文件不同。可在uFlage參數中指定VIFF_FORCEINSTALL，從而強制忽略這些區別
VIF_SRCOLD | 根據文件的版本標記信息，文件的新版本早於現有文件。可在uFlage參數中指定VIFF_FORCEINSTALL，從而忽略這項差異
VIF_DIFFLANG | 文件的新版本採用了與現有文件不同的語言或代碼頁。可在uFlage參數中指定VIFF_FORCEINSTALL，從而忽略這項差異
VIF_DIFFCODEPG | 新版文件要求與windows目前正在運行的那個文件不同的一個代碼頁。可在uFlage參數中指定VIFF_FORCEINSTALL，從而忽略這項差異
VIF_DIFFTYPE | 文件的新版本在類型、子類型或者目標操作系統上與現有版本不同。可在uFlage參數中指定VIFF_FORCEINSTALL，從而忽略這項差異
VIF_WRITEPROT | 以前存在的文件是寫保護的
VIF_FILEINUSE | 現有文件正在使用
VIF_OUTOFSPACE | 目標驅動器磁盤空間不夠
VIF_ACCESSVIOLATION | 由於訪問違例，所以操作失敗
VIF_SHARINGVIOLATION | 由於共享違例，所以操作失敗
VIF_CANNOTCREATE | 不能創建臨時文件
VIF_CANNOTDELETE | 不能刪除文件的現有版本
VIF_CANNOTDELETECUR | 不能刪除文件的現有版本，而且在uFlage參數中未指定VIFF_DONTDELETEOLD
VIF_CANNOTRENAME | 不可將臨時文件更名為現有文件的名字。現有文件已被刪除
VIF_OUTOFMEMORY | 內存不足，導致操作失敗
VIF_CANNOTREADSRC | 源文件不可讀
VIF_CANNOTREADDEST | 現有的目標文件不可讀（所以版本信息不能檢查）
VIF_BUFFTOOSMALL | lpuTmpFileLen參數太小，不能容下臨時文件的名字


WindowFromPoint
VB聲明
Declare Function WindowFromPoint Lib "user32" Alias "WindowFromPoint" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
說明
返回包含了指定點的窗口的句柄。忽略屏蔽、隱藏以及透明窗口
返回值
Long，包含了指定點的窗口的句柄。如指定的點處沒有窗口存在，則返回零
參數表
參數 | 類型及說明
xPoint | Long，x點值
yPoint | Long，y點值


WINDOWPLACEMENT
類型定義
Type WINDOWPLACEMENT Length As Long flags As Long showCmd As Long ptMinPosition As POINTAPI ptMaxPosition As POINTAPI rcNormalPosition As RECT End Type
說明
這個結構用於GetWindowPlacement和SetWindowPlacement函數以獲取或設置窗口的狀態及位置信息
字段表
字段 | 類型及說明
Length | Long，這個結構的長度（size），必須是44
flags | Long，以下的兩個常數之一
 | WPF_SETMINPOSITION | The ptMinPosition specifies the x,y location of the window when minimized.
 | WPF_RESTORETOMAXIMIZED | The SW_SHOWMINIMIZED constant must be specified in the showCmd parameter. Indicates that the window should be maximized the next time it is restored.
showCmd | Long，Visibility flags
ptMinPosition | POINTAPI，The x,y location of the window when minimized.
ptMaxPosition | POINTAPI，The x,y location of the window location when maximized.
rcNormalPosition | RECT，The position and size of the window when it is restored (normal condition).


XFORM
類型定義
Type XFORM ' 48 Bytes
eM11 As Single
eM12 As Single
eM21 As Single
eM22 As Single
eDx As Single
eDy As Single
End Type
說明
Use to describe a world-space to page-space transformation. Refer to Chapter 7 for a detailed description of this structure.