10十天學(xué)會(huì)易語(yǔ)言圖解教程(王軍)文字校正-第十章_第1頁(yè)
10十天學(xué)會(huì)易語(yǔ)言圖解教程(王軍)文字校正-第十章_第2頁(yè)
10十天學(xué)會(huì)易語(yǔ)言圖解教程(王軍)文字校正-第十章_第3頁(yè)
10十天學(xué)會(huì)易語(yǔ)言圖解教程(王軍)文字校正-第十章_第4頁(yè)
10十天學(xué)會(huì)易語(yǔ)言圖解教程(王軍)文字校正-第十章_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第10章 API函數(shù)的應(yīng)用API函數(shù),也稱(chēng)DLL命令,是Windows系統(tǒng)外部動(dòng)態(tài)鏈接庫(kù)(即DLL庫(kù))中的命令。和VB,VC一樣,易語(yǔ)言對(duì)API也有很好的支持。API是Windows的基礎(chǔ),學(xué)會(huì)使用API就可以實(shí)現(xiàn)Windows絕大部分的功能。 本章學(xué)習(xí)內(nèi)容:10.1 如何定義API函數(shù) 10.3 外部DLL庫(kù)的應(yīng)用10.2 API 函數(shù)的綜合應(yīng)用 10.4 課后練習(xí) 10.1 如何定義API函數(shù) 在窗體上拉出一個(gè)按鈕組件。形成“按鈕1”。并且雙擊它。在窗體上拉出一個(gè)按鈕組件。形成“按鈕1”。并且雙擊它。在窗體上拉出一個(gè)按鈕組件。形成“按鈕1”。并且雙擊它。在窗體上拉出一個(gè)按鈕組件。形成“按鈕

2、1”。并且雙擊它。在窗體上拉出一個(gè)按鈕組件。形成“按鈕1”。并且雙擊它。易語(yǔ)言中,使用一個(gè)API函數(shù)前(也稱(chēng)DLL命令),首先要對(duì)該函數(shù)進(jìn)行定義,定義DLL命令涉及到以下主要屬性: Dll命令名、返回值類(lèi)型、Dll庫(kù)文件名、Dll命令在Dll庫(kù)中對(duì)應(yīng)的函數(shù)名、Dll命令參數(shù)。    下面用一個(gè)可以取出當(dāng)前所有窗口句柄的例程,來(lái)進(jìn)一步了解DLL命令的定義方法和使用。添加一個(gè)按鈕組件,并將標(biāo)題改成“列出桌面所有子窗口的窗口句柄”。添加一個(gè)列表框組件。注意:API資料如何查找?Windos中的DLL命令有很多,網(wǎng)上也有許多API的資料包括幫助文檔,列出了常用的API函數(shù)。使用AP

3、I之前,可以先上網(wǎng)下載一個(gè)API幫助文檔。下面會(huì)用到1個(gè)DLL命令:FindWindowExA,這個(gè)命令可以在窗口列表中尋找與指定條件相符的第一個(gè)子窗口。DLL命令名:指定DLL命令在易語(yǔ)言中使用時(shí)的名稱(chēng),可以自定義,最好是選一個(gè)方便識(shí)別的名稱(chēng)。新建一個(gè)DLL命令。DLL庫(kù)文件名:DLL命令所在的DLL庫(kù)文件名。按照API資料來(lái)填寫(xiě),不可以自定義。在DLL庫(kù)中對(duì)應(yīng)文件名:與上邊“DLL命令名”所指定的DLL命令對(duì)應(yīng)的DLL庫(kù)文件中相應(yīng)的API函數(shù)名(即API函數(shù)的原名)。按照API資料來(lái)填寫(xiě),不可以自定義。API資料中描述的,有幾個(gè)參數(shù),就添加幾個(gè)參數(shù),并且各參數(shù)的類(lèi)型和位置要和資料中的相一臻

4、,但參數(shù)名可以自定義。從API的幫助文件里可以查出User32是DLL庫(kù)文件名,F(xiàn)indWindowExA是API函數(shù)原名。這里有四個(gè)參數(shù)的類(lèi)型與說(shuō)明。雙擊按鈕,在“_按鈕1_被單擊”事件子程序中輸入如下代碼:列表框1.清空 ()hWnd 取子窗口句柄 (0, 0, 0, 0)判斷循環(huán)首 (hWnd 0) 列表框1.加入項(xiàng)目 (到文本 (hWnd), ) hWnd 取子窗口句柄 (0, hWnd, 0, 0)判斷循環(huán)尾 ()新建一個(gè)整數(shù)型的變量。用判斷循環(huán)首命令,循環(huán)取出當(dāng)前所有子窗口的窗口句柄。按下F5鍵運(yùn)行程序,點(diǎn)擊按鈕后,列表框就列出了所有子窗口的窗口句柄了。10.2 API函數(shù)的綜合應(yīng)

5、用用API函數(shù),可以實(shí)現(xiàn)很多特殊的效果,下面練習(xí)用3個(gè)DLL命令實(shí)現(xiàn)窗體的透明效果。本例程中用到了3個(gè)DLL命令,分別是:GetWindowLong:從指定窗口的結(jié)構(gòu)中取得信息。SetWindowLong:在窗口結(jié)構(gòu)中為指定的窗口設(shè)置信息。SetLayeredWindowAttributes:設(shè)置窗體的透明色。添加一個(gè)滑塊條組件。將滑塊條的刻度類(lèi)型屬性設(shè)置成“下/右”。對(duì)這3個(gè)DLL命令進(jìn)行定義。如果庫(kù)文件名是:Kernel32.dll、Gdi32.dll、User32.dll、Mpr.dll、Advapi32.dll,填寫(xiě)時(shí)可以省略,系統(tǒng)會(huì)自動(dòng)搜索。注意:API函數(shù)中常量的使用使用DLL命令

6、時(shí),會(huì)有一些參數(shù)用到API中的常量,這些常量可以使用API常量查詢(xún)工具查找,并在易語(yǔ)言中使用自定義常量進(jìn)行定義,使用時(shí)可以用常量名(記得在常量名前加上“#”號(hào)),也可以直接將常量值添入?yún)?shù)中。雙擊“_啟動(dòng)窗口”,產(chǎn)生“_啟動(dòng)窗口_創(chuàng)建完畢”事件子程序,然后新建一個(gè)整數(shù)型變量Ret。在子程序下輸入代碼:Ret GetWindowLong (取窗口句柄 (), -20)Ret 位或 (Ret, 524288)SetWindowLong (取窗口句柄 (), -20, Ret)SetLayeredWindowAttributes (_啟動(dòng)窗口.取窗口句柄 (), 0, 255, #LWA_ALPHA

7、)在滑塊條的事件列表中選擇“位置被改變”事件,產(chǎn)生“_滑塊條1_位置被改變”事件子程序。在子程序下輸入代碼:SetLayeredWindowAttributes (_啟動(dòng)窗口.取窗口句柄 (), 0, 滑塊條1.位置, #LWA_ALPHA)運(yùn)行程序,然后拖動(dòng)滑塊條,可以看到,窗體漸漸變的透明,直到完全透明。10.3 外部DLL庫(kù)的應(yīng)用 前2節(jié)都是介紹基本 Windows API 庫(kù)文件,但API的使用方法多種多樣,不但可以使用Windows自帶的DLL命令,而且可以使用外部的DLL庫(kù)中的DLL 命令,本節(jié)就使用一個(gè)外部的DLL庫(kù),來(lái)做一個(gè)水紋特效。新建一個(gè)易程序,然后,添加一個(gè)時(shí)鐘組件。注意

8、:該例程要使用到一個(gè)外部的DLL庫(kù),所以,在編寫(xiě)程序前,先從隨書(shū)光盤(pán)中將WaterDll.dll文件拷貝到本地機(jī)器上,并一同將隨書(shū)光盤(pán)中的“例圖01.bmp”拷貝到程序所在的目錄下。 本例程要用到2個(gè)默認(rèn)DLL庫(kù)中的命令,和3個(gè)外部DLL庫(kù)中的命令。2個(gè)user32.dll中的命令:GetDC:獲取指定窗口的設(shè)備場(chǎng)景LoadImage:載入一個(gè)位圖、圖標(biāo)或指針3個(gè)WaterDll.dll中的命令(外部DLL 庫(kù)):外部DLL庫(kù)中的命令使用方法,參見(jiàn)外部DLL庫(kù)自帶的幫助文檔,沒(méi)有幫助文檔也可參見(jiàn)例程,或在實(shí)際使用的時(shí)候給命令參數(shù)不同的值看看出現(xiàn)的效果,自己理解DLL庫(kù)中命令的作用。定義默認(rèn)DL

9、L庫(kù)中的命令。由于是外部DLL庫(kù),所以,DLL庫(kù)文件名要填寫(xiě)清楚。定義外部DLL庫(kù)中的命令。命令中各參數(shù)可以照書(shū)中填寫(xiě),各參數(shù)的作用,可以編寫(xiě)完程序后,更改參數(shù)的值,進(jìn)行調(diào)試,就可以了解命令中的各個(gè)參數(shù)了。雙擊“_啟動(dòng)窗口”產(chǎn)生了“_啟動(dòng)窗口_創(chuàng)建完畢”事件子程序,并新建一個(gè)整數(shù)型變量“bitmap”。用來(lái)存放LoadImage命令的返回值。16是常量#LR_LOADFROMFILE的常量值,使用常量查詢(xún)工具查出。在“_啟動(dòng)窗口_創(chuàng)建完畢”事件子程序中輸入如下代碼:時(shí)鐘1.時(shí)鐘周期 10bitmap LoadImage (0, 取運(yùn)行目錄 () “例圖01.bmp”, 0, 0, 0, #LR

10、_LOADFROMFILE)WaterInit (bitmap)雙擊時(shí)鐘組件,在“_時(shí)鐘1_周期事件”事件子程序下輸入如下代碼:WaterTimer (GetDC (_啟動(dòng)窗口.取窗口句柄 (), 0, 0)將子程序的返回值設(shè)置成“邏輯型”。在啟動(dòng)窗口的事件選擇列表框中選擇“鼠標(biāo)位置被移動(dòng)”選項(xiàng),在“_啟動(dòng)窗口_鼠標(biāo)位置被移動(dòng)”事件子程序下輸入如下代碼:WaterMouseAction (GetDC (_啟動(dòng)窗口.取窗口句柄 (), 0, 0, 橫向位置, 縱向位置, 5, 100)運(yùn)行程序,然后在窗體上移動(dòng)鼠標(biāo),就可以看到逼真的水紋效果了。10.4 課后練習(xí)(1)學(xué)著使用API函數(shù)的幫助文檔: (2)使用簡(jiǎn)單的API,制作一個(gè)模擬鍵盤(pán)按下“W

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論