freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第10章其他編程-wenkub.com

2024-10-13 13:29 本頁面
   

【正文】 end。939。 var Key: Char)。 procedure (Sender: TObject)。 end。 //窗體創(chuàng)建事件 var i:integer。 第 10章 其他編程 調(diào)用 DLL //聲明要引出的函數(shù) function ShowCalendar(AHandle:THandle。 var Key: Char)。 procedure FormCreate(Sender: TObject)。 CMBMonth: TComboBox。 type TCalForm = class(TForm) // 窗體定義 Calendar1: TCalendar。 // 聲明 DLL函數(shù) begin end. 第 10章 其他編程 調(diào)用 DLL (3) 選擇主菜單下的 File?New?Form,新建一個窗體,在其中放 置一個 Tcalendar組件(該組件位于組件面板的 Samples選項(xiàng) 卡上,圖標(biāo)為 )和一個 Bevel組件,所設(shè)計(jì)的窗體如圖 所示,所使用的組件及其屬性列于下一頁表中。39。 1)創(chuàng)建 (1) 新建一個 DLL項(xiàng)目。 其中 Aptr、 Ihnd兩個變量必須定義, RetVal是 DLL函數(shù)的返回 值,視具體情況而定。 在運(yùn)行時用 Windows的 API函數(shù) LoadLibary和 GetProcAddress函數(shù)動態(tài)地獲得 DLL函數(shù)或過程的入口地址,再使用FreeLibary進(jìn)行釋放。; 裝載時調(diào)用 DLL程序執(zhí)行速度快,效率高。 end. 第 10章 其他編程 創(chuàng)建 DLL 程序的運(yùn)行結(jié)果如圖所示。 N2:=strtoint()。 // 對 DLL函數(shù)進(jìn)行外部聲明 procedure (Sender: TObject)。external 39。 end。 Label4: TLabel。 Label2: TLabel。該應(yīng)用程 序的界面如圖所示,所使用的組件及其屬性見下一頁表中。MaxNum39。stdcall。選擇主菜單的 File?New?Others… 菜 單項(xiàng),在“ New Items”對話框中雙擊“ DLL Wizard”圖標(biāo),單 擊 OK按鈕。 對項(xiàng)目進(jìn)行編譯即形成 DLL文件,可被其它項(xiàng)目調(diào)用。stdcall。形式為: exports // 引出函數(shù)名或過程名 函數(shù)名 name 39。 第 10章 其他編程 使用 DLL的優(yōu)點(diǎn) 4. 獨(dú)立于編程語言 在一種開發(fā)環(huán)境下設(shè)計(jì)的 DLL程序,可以在其他的環(huán)境中使用。 第 10章 其他編程 使用 DLL的優(yōu)點(diǎn) 1. 節(jié)省資源 動態(tài)鏈接不將所調(diào)用的函數(shù)代碼拷貝到應(yīng)用程序的可執(zhí)行文件 中,而是應(yīng)用程序運(yùn)行時,才動態(tài)地裝載 DLL,其代碼將被映 射到進(jìn)程的地址空間中,當(dāng)要執(zhí)行所調(diào)用 DLL中的函數(shù)時,根 據(jù)鏈接產(chǎn)生的重定位信息,轉(zhuǎn)去執(zhí)行 DLL中相應(yīng)的函數(shù)代碼。 end. 第 10章 其他編程 DLL應(yīng)用和開發(fā) DLL DLL( Dynamic Link Library),即動態(tài)鏈接庫,它就是程序模塊,包括 編譯過的可執(zhí)行代碼 、數(shù)據(jù)或資源,能夠被其他的 Windows應(yīng)用程序共享 。 end。 begin if WaitForSingleObject(hMutex,INFINITE) = WAIT_OBJECT_0 then {此時 , 若要擁有 hMutex互斥對象的線程將睡眠 , 用來禁止其他線程進(jìn)入此同步區(qū)域的代碼 } begin for i:=1 to SIZE do // 為數(shù)組各元素賦值 begin A[i]:=next。 // 關(guān)閉互斥對象 end。 var i:integer。 // 數(shù)組大小 var next:integer=0。 override。 end. 第 10章 其他編程 線程同步 //文件 unit Unit2。 begin hMutex:=CreateMutex(nil,False,nil)。 end。 type TForm1 = class(TForm) Button1: TButton。stdcall。 第 10章 其他編程 線程同步 (3)互斥對象不再使用時,應(yīng)調(diào)用 CloseHandle()過程來關(guān)閉它。stdcall。 第 10章 其他編程 線程同步 2. 互斥 (1)互斥( mutex)與臨界區(qū)非常相似,但有兩個主要區(qū)別: ●互斥可用于不同進(jìn)程的線程間同步,而臨界區(qū)不可; ●互斥可被賦予一個字符串名,通過該名字可創(chuàng)建該互斥對象的 附加句柄。 // 臨界區(qū)終止 Synchronize(ShowResult)。 Inc(next)。 第 10章 其他編程 線程同步 procedure 。 if tag=2 then begin // 兩個線程均執(zhí)行完畢 for i:=1 to SIZE do //在列表框中顯示數(shù)組各元素值 (intToStr(A[i]))。 A:array [1..SIZE] of integer。 第 10章 其他編程 線程同步 implementation uses Unit1。 // 在此要添加 Windows和 SysUtils Type {以下是 TinitThread類定義 } TInitThread = class(TThread) protected procedure ShowResult。 end。 // 聲明臨界區(qū)資源記錄變量 implementation {$R *.dfm} procedure (Sender: TObject)。 procedure Button1Click(Sender: TObject)。 interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,unit2。用臨界區(qū)方式進(jìn)行兩線程的同步,將對數(shù)組各元素賦值的代碼設(shè)為臨界區(qū)。 procedure LeaveCriticalSection(var lpCriticalSection: TRTLCriticalSection)。 ● TRTLCriticalSection是一個與臨界區(qū)資源相關(guān)的類型 , 。 第 10章 其他編程 線程同步 1. 臨界區(qū) ◆ 臨界區(qū)是指一次只能由一個線程執(zhí)行的一段代碼 。 第 10章 其他編程 線程同步 編寫多線程應(yīng)用程序時,需要控制好線程間的同步資源訪問,以保證線程的安全運(yùn)行。 Synchronize(GiveAnswer)。 {執(zhí)行一個較長的計(jì)算任務(wù) } Var i:integer。 procedure 。 procedure Execute。 end. 第 10章 其他編程 線程的終止 ● 創(chuàng)建線程單元 ,選擇主菜單的 File?New?Unit,輸入線程對象名為 TtestThread,再輸入以下源程序: unit ThrdU。 第 10章 其他編程 線程的終止 var MainForm: TMainForm。 Edit1: TEdit。 interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,ThrdU。 End。 Begin FreeOnTerminate := True。 第 10章 其他編程 線程的終止 當(dāng)線程對象的 Execute()方法執(zhí)行完畢后,就認(rèn)為該線程終止了,此時 Delphi會自動調(diào)用一個標(biāo)準(zhǔn)例程 EndThread(),該例程將再調(diào)用 API函數(shù) ExitThread(),由 ExitThread()來清除線程所占用的棧。 當(dāng) Create()需要參數(shù)為 False ,則不自動執(zhí)行 Execute()的代碼,而是要通過 TThread的 Resume()方法來喚醒線程。 implementation { } { TestThread } procedure 。 interface uses Classes。 第 10章 其他編程 TThread類 1. TThread類 TThread類是直接從 Tobject繼承下來的,它是抽象類,即不能創(chuàng) 建 TThread類的實(shí)例,而只能創(chuàng)建 TThread派生類的實(shí)例 — 即創(chuàng) 建線程對象。 ( 4) OnEnter事件 當(dāng)一個控件接收到鍵入焦點(diǎn)時,觸發(fā)該事件。 第 10章 其他編程 媒體播放器組件 4. MediaPlayer組件的事件 ( 1) OnClick事件 當(dāng)用戶移動光標(biāo)到媒體播放器控制按鈕組的任一按鈕上,單 擊鼠標(biāo)左鍵或者當(dāng)媒體播放器控制按鈕獲得焦點(diǎn)時,單擊空 格鍵都將會觸發(fā)該事件。 應(yīng)用程序不能直接調(diào)用該函數(shù),應(yīng)先調(diào)用 Free過程檢查媒體播 放器對象是否空閑,如果空閑就釋放其占用的內(nèi)存空間。 ( 4) Close過程 該過程關(guān)閉已打開的多媒體播放設(shè)備。 ( 2) Back過程 該過程使媒體播放器退回?cái)?shù)個幀。 第 10章 其他編程 媒體播放器組件 ( 4) Capabilities屬性 該屬性值是只讀 TMPDevCapsSet類型,返回當(dāng)前設(shè)備可以進(jìn)行 的操作,它的值及值的含義如表所示。 如果這個屬性設(shè)為 True, 媒體播放 器在運(yùn)行過程中能夠自動控制哪些按鈕當(dāng)前可用 , 哪些按鈕 當(dāng)前不可用 ( 不可用的按鈕以灰色顯示 ) 。 end. 第 10章 其他編程 簡易媒體播放器實(shí)例 為了 OpenDialog對話框只列出多媒體文件,需要在屬性查看器中設(shè)置 OpenDialog1的 Filter屬性,單擊打開 Filter屬性設(shè)置旁的按鈕,將打開 Filter Editor對話框,如圖所示,在該對話框中鍵入所要打開文件的類型,如 *.WAV、 *.AVI、 *.MID等,單擊 OK。下面的代碼是用于處理 Button8的 OnClick事件,它將打開媒體播放器。 第 10章 其他編程 多媒體編程 簡易媒體播放器實(shí)例 制作一個媒體播放器,需要在窗體上設(shè)置一個 TmediaPlayer(該組件位于組件面板的 System選項(xiàng)卡上,圖標(biāo)為)、十個 Tbutton、一個 TopenDialog(位于組件面板的 Dialogs選項(xiàng)卡上,圖標(biāo)為)等組件 )、一個 Edit、一個 ComboBox、一個 Timer如圖所示。 。 (rect(0,0,width,height), ,rect(x1,y1,x2,y2))。 :=height。 第 10章 其他編程 ( Picture)對象 (x1,y1,oldx,oldy)。 :=bsclear。 oldx:=x。 lio(,foldy)。 begin if(trace=false) then begin // 首次點(diǎn)擊鼠標(biāo)左鍵 , 開始追蹤鼠標(biāo) flag:=false。Shif
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1