?? xbwinapickdq.txt
字號:
和控件都是構(gòu)筑在Windows API的基礎(chǔ)上的,但它們使用方便,加速了Windows應用程序的
開發(fā),所以受到程序員的普遍采用。有了這些類庫和控件,程序員們便可以把主要精力放在
整體功能的設計上,而不必過于關(guān)注具體細節(jié)。不過,這也導致了非常多的程序員在類庫面
前“固步自封”,對下層API函數(shù)的強大功能一無所知。
實際上。程序員要想開發(fā)出更靈活、更實用、更具效率的應用程序,必然要涉及到直接
使用API函數(shù)。雖然類庫和控件使應用程序的開發(fā)容易得多,但它們只提供Microsoft
Windows的一般功能,對于一些比較復雜和特殊的功能來說,單使用類庫和控件是難以實現(xiàn)
的,必須直接使用API函數(shù)來編寫。API函數(shù)是構(gòu)筑整個Windows框架的基石,只有充分理
解和利用API函數(shù),才能深入到Windows的內(nèi)部,充分發(fā)揮各種32位平臺的強大功能和靈
活性,才能成功地擴展和突破類庫、控件和可視開發(fā)環(huán)境的限制。
1.2 Win32 API 簡介
Win32 API即為Microsoft 32位平臺的應用程序編程接口(Application Programming
Interface)。所有在Win32平臺上運行的應用程序都可以調(diào)用這些函數(shù)。
使用Win32 API,應用程序可以充分挖掘Windows的32位操作系統(tǒng)的潛力。 Mircrosoft
的所有32位平臺都支持統(tǒng)一的API,包括函數(shù)、結(jié)構(gòu)、消息、宏及接口。使用 Win32 API
不但可以開發(fā)出在各種平臺上都能成功運行的應用程序,而且也可以充分利用每個平臺特有
的功能和屬性。
在具體編程時,程序?qū)崿F(xiàn)方式的差異依賴于相應平臺的底層功能的不同。最顯著的差異
是某些函數(shù)只能在更強大的平臺上實現(xiàn)其功能。例如,安全函數(shù)只能在Windows NT操作系
統(tǒng)下使用。另外一些主要差別就是系統(tǒng)限制,比如值的范圍約束,或函數(shù)可管理的項目個數(shù)
等等。
標準Win32 API函數(shù)可以分為以下幾類:
窗口管理
窗口通用控制
Shell特性
圖形設備接口
系統(tǒng)服務
國際特性
網(wǎng)絡服務
在下面各節(jié)中,我們分別介紹這7種類型的API函數(shù)。
1.2.1 窗口管理函數(shù)
窗口管理函數(shù)向應用程序提供了一些創(chuàng)建和管理用戶界面的方法。你可以使用窗口管理
函數(shù)創(chuàng)建和使用窗口來顯示輸出、提示用戶進行輸入以及完成其他一些與用戶進行交互所需
的工作。大多數(shù)應用程序都至少要創(chuàng)建一個窗口。
應用程序通過創(chuàng)建窗口類及相應的窗口過程來定義它們所用窗日的外觀和行為。窗口類
可標識窗口的缺省屬性,比如窗口是否接受雙擊鼠標按鈕的操作。或是否帶有菜單。窗口過
程中包含的代碼用于定義窗口的行為,完成所需的任務,以及處理用戶的輸入。
應用程序可使用GDI函數(shù)來產(chǎn)生窗口的輸出。由于所有的窗口都共享顯示屏幕,所以應
用程序不接受對整個屏幕的訪問。系統(tǒng)管理所有的輸出內(nèi)容,并對它們進行排列和剪裁,使
其能夠適合相應的窗口。應用程序可以在處理輸入消息時,或為了響應系統(tǒng)的需求而在窗口
中繪圖。當窗口的大小或位置發(fā)生變化時,系統(tǒng)通常會向應用程序發(fā)送一個消息,要求它對
該窗口中原來未顯露的區(qū)域進行重畫。
應用程序以消息的形式接受鼠標和鍵盤輸入。系統(tǒng)將鼠標移動、鼠標按鈕操作轉(zhuǎn)換為輸
入消息,并將這些消息放入該應用程序的消息隊列中。系統(tǒng)為每個應用程序都自動提供一個
消息隊列。應用程序使用消息函數(shù)從消息隊列中獲取消息,并將它們分派給適當?shù)拇翱谶^程
進行處理。
應用程序可以直接處理鼠標和鍵盤輸人,也可以讓系統(tǒng)使用菜單和鍵盤加速健將這些低
級輸入轉(zhuǎn)換成命令消息。你可以使用菜單向用戶展現(xiàn)一個命令列表。系統(tǒng)對所有菜單操作所
需的動作進行管理,包括讓用戶選擇一個命令,然后再向窗日過程發(fā)送一個標識該選擇的消
息。鍵盤加速鍵是應用程序定義的按鍵操作組合,系統(tǒng)可將其轉(zhuǎn)換為消息。加速鍵通常對應
于菜單中的某個命令,并與該命令產(chǎn)生相同的消息。
應用程序通過在對話框中向用戶提示附加信息來響應命令消息。對話框?qū)嶋H是一個臨時
的窗口,用于顯示信息或提示輸入。一個對話框通常由一些表示按鈕和方框的控制組成,可
供用戶進行選擇或輸入信息。對話框中可包括用于輸入正文、滾動正文、從列表中選擇列表
項等操作的控制。對話框管理和處理來自這些控制的輸入,使應用程序可使用這些信息,來
完成所要求的命令操作。
通過使用“資源”可以共享很多有用的數(shù)據(jù),比如位圖、圖標、字體和字符串等,只需
將這些數(shù)據(jù)作為“資源”添加到應用程序或DLL文件中。應用程序通過使用資源函數(shù),找到
資源并將它們加載到內(nèi)存來獲取這些數(shù)據(jù)。
窗口管理函數(shù)還提供了其他一些與窗口有關(guān)的特性,比如插入標記(Caret)、剪貼板、
光標、掛鉤(Hook)、圖標以及菜單等函數(shù)。
窗口管理函數(shù)包括以下幾類:
易用特性函數(shù)(Accessibility Features)
Win32 API提供的一系列易用特性使得有殘疾的人也能很容易的使用計算機,Win32 API
提供了一些函數(shù)和結(jié)構(gòu)來控制這些特性。
按鈕函數(shù)(Button)
Microsoft提供了對話框和控制來支持應用程序與用戶之間的交互通訊。按鈕就是一種
控制,用戶可通過點擊按鈕來向應用程序提供輸入信息。
插入標記函數(shù)(Caret)
一個插入標記是位于窗口繪圖區(qū)中的一個閃動的直線、方塊或圖標。插入標記通常用于
指示文本或圖形將插入的位置。Win32應用程序可以使用插入標記函數(shù)來創(chuàng)建一個插入標
記,改變它的閃動頻率,顯示、隱藏插入標記,或重新設置插入標記的位置。
組合框函數(shù)(Combo Box)
組合框是由COMBOBOX類定義的一種控制,綜合了列表框和編輯控制的很多功能。使用
組合框函數(shù)可以在組合框中顯示或獲取不同類型的數(shù)據(jù)。
通用對話框函數(shù)(Common Dialog Box)
通用對話框是在通用對話框庫中定義的,其功能是用來完成一些通用的任務,比如打開
文件、打印文檔等。通用對話框為用戶提供了一個統(tǒng)一的用戶界面,使用戶在不同的應用程
序中完成通用任務時的操作都相同,不必每次都學習不同的操作過程。
光標函數(shù)(Cursor)
光標是顯示屏幕上的一個小圖形,其所在的位置由指點設備比如鼠標、光筆或軌跡球等
控制。當用戶移動鼠標時,系統(tǒng)就會隨之移動光標的位置。應用程序使用Win32光標函數(shù)可
以創(chuàng)建、加載、顯示、移動、限制和刪除光標。
對話框函數(shù)(Dialog Box)
對話框是應用程序創(chuàng)建的一個臨時窗口,用于獲取用戶的輸入。應用程序通常使用對話
框向用戶顯示一些命令提示信息。一個對話框一般由一個或多個控制(子窗口)組成,這些
控制可用來輸入文本、選擇選項或執(zhí)行命令動作。
編輯控制函數(shù)(Edit Control)
編輯控制是一個矩形窗口,通常用在對話框中,用戶可通過鍵盤向編輯控制中輸入和編
輯文本。系統(tǒng)對Unicode文本(字符采用雙字節(jié)編碼)和ANSI(字符采用單字節(jié)編碼)文
本都支持。
圖標函數(shù)(Icon)
圖標是一個圖片,由一個位圖圖像組成,并和一個掩碼組合構(gòu)成該圖片的透明區(qū)域。當
提到圖標時,可以是下列兩種情況:
1)單個圖標圖像。資源類型為RT_ICON。
2)一組圖標圖像,系統(tǒng)或應用程序可從中選擇。資源類型為RT_GROUP_JCON。
應用程序使用圖標函數(shù)可以創(chuàng)建、顯示、刪除和復制圖標。
鍵盤加速健函數(shù)(Keyboard Accelerator)
鍵盤加速鍵(或簡稱為加速鍵)是一個按鍵操作或多個按鍵操作的組合,可向應用程序
發(fā)送WM_COMMAND或WM_SYSCOMMAND消息。
使用鍵盤加速鍵函數(shù)可以拷貝、創(chuàng)建、加載或刪除加速鍵表,* 圖標是一個圖片,
由一個位圖圖像組成,并和一個掩碼組合構(gòu)成該圖片的透明區(qū)域。當提到圖標時,可以是下
列兩種情況:
1)單個圖標圖像。資源類型為RT_ICON。
2)一組圖標圖像,系統(tǒng)或應用程序可從中選擇。資源類型為RT_GROUP_JCON。
應用程序使用圖標函數(shù)可以創(chuàng)建、顯示、刪除和復制圖標。
鍵盤加速健函數(shù)(Keyboard Accelerator)
鍵盤加速鍵(或簡稱為加速鍵)是一個按鍵操作或多個按鍵操作的組合,可向應用程序
發(fā)送WM_COMMAND或WM_SYSCOMMAND消息。
使用鍵盤加速鍵函數(shù)可以拷貝、創(chuàng)建、加載或刪除加速鍵表,還可以將加速鍵消息轉(zhuǎn)換
為命令消息。
鍵盤輸入函數(shù)(Keyboard Input)
鍵盤輸入函數(shù)提供了接受和處理鍵盤輸入的方法。
列表框函數(shù)(List Box)
Microsoft的Win32 API提供了對話框和控制來支持應用程序與用戶之間的交互通訊。
列表框是一個控制窗口,其中包含一系列選項,可供用戶進行選擇。使用列表框函數(shù)可以在
列表框中顯示或獲取不同類型的數(shù)據(jù)。
菜單函數(shù)(Menu)
菜單函數(shù)向Win32應用程序提供了一系列創(chuàng)建、管理和使用菜單的方法,包括對菜單條、
菜單項。
于菜單等的處理。
消息和消息隊列函數(shù)(Message and Message Queue)
消息和消息隊列函數(shù)向Win32應用程序提供了一系列使用消息和消息隊列的方法,包括
對消息進行
傳播、發(fā)送、獲取、轉(zhuǎn)換等操作。
鼠標輸入函數(shù)(Mouse Input)
鼠標輸入函數(shù)提供了接受和處理鼠標輸入的方法。
多文檔接口函數(shù)(Multiple Document Interface)
多文檔接口(MDI)是應用程序定義用戶界面的一種規(guī)范,在這種界面下,用戶可以同
時使用多個文檔。
資源函數(shù)(Resource)
一個資源是一些二進制數(shù)據(jù),可以添加到Win32應用程序的可執(zhí)行文件中。資源既可以
是標準的,也可以是自己定義的。標準資源中的數(shù)據(jù)包括圖標、光標、菜單、對話框、位圖、
增強元文件、字體、加速鍵表、消息表入口、字符串表入口或版本。應用程序定義的資源(也
稱為定制的資源)可以包含特
殊應用程序所需的任何數(shù)據(jù)。
使用資源函數(shù)可以添加、刪除、拷貝、替換或加載各種資源數(shù)據(jù)。
滾動條函數(shù)(Scroll Bar)
在Win32應用程序的窗口中,可以顯示比該窗口的顯示區(qū)更大的數(shù)據(jù)對象,比如文檔或
位圖。當窗口提供了滾動條時,用戶就可以通過拖動滾動條來瀏覽該數(shù)據(jù)對象中位于顯示區(qū)
外面的部分。
滾動條包括水平滾動條和垂直滾動條。使用滾動條函數(shù)可以創(chuàng)建和管理這兩種滾動條。
窗口函數(shù)(Window)
在圖形化的Win32應用程序中,窗口是屏幕上的一個矩形區(qū)域,應用程序可在該區(qū)域中
顯示輸出結(jié)果,并接受用戶輸入。因此,一個圖形化的Win32應用程序的首要任務之一就是
創(chuàng)建一個窗口。
一個窗口與其他窗口共享顯示屏幕,也包括其他應用程序所創(chuàng)建的窗口。一次只能有一
個窗口接受用戶的輸入。用戶可以使用鼠標、鍵盤或其他輸人設備與該窗口及擁有該窗口的
應用程序進行交互。使用窗口函數(shù)可以創(chuàng)建和管理窗口。
窗口類函數(shù)(Window Class)
一個窗口類是一個屬性的集合,系統(tǒng)將該屬性集合用作創(chuàng)建窗口的模板。每個窗口都是
某個窗口類的一個成員。使閑置或刪除窗口屬性。
1.2.2 窗口通用控制
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -