版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、如何編寫控制面板程序控制面板程序是用戶用于配置Windows環(huán)境的一些特殊動態(tài)連接庫(DLL)。Windows已經(jīng)為我們提供了一些標(biāo)準(zhǔn)的控制面板程序,如字體、鍵盤、鼠標(biāo)設(shè)置等;如圖1所示。我們也可以根據(jù)實際的需要創(chuàng)建自己的控制面板程序,以便讓用戶來查看或者修改特定軟硬件的參數(shù)設(shè)置。控制面板的功能和操作方式控制面板程序的主要功能是顯示一個對話框讓用戶完成特定的任務(wù)。但是,與其它應(yīng)用程序不同的是,控制面板程序并不是一個獨立的應(yīng)用程序,它不提
2、供標(biāo)準(zhǔn)菜單或者其它方法讓用戶直接去操作這些對話框,而是在其他應(yīng)用程序(如控制面板)的控制下操作和顯示它們的對話框的??刂泼姘宄绦蛲ǔJ怯梢粋€Windows的系統(tǒng)工具(即控制面板)所控制,從而讓用戶來運行的。但是,其它應(yīng)用程序只要發(fā)送控制面板程序所需要的消息并且處理它們的返回值同樣可以加載并且管理這些控制面板程序,為了陳述簡單,下文中我們將這類程序統(tǒng)稱為控制面板。大多數(shù)的控制面板程序僅顯示并且維護一個對話框讓用戶來控制系統(tǒng)某一個部件的參數(shù)
3、設(shè)置以及操作方式,但事實上控制面板程序可以提供多個對話框來控制多個系統(tǒng)部件(這些單個的對話框通常被稱為Applet小程序)。為了區(qū)分這些對話框,控制面板程序通常為每個對話框提供一個圖標(biāo)??刂泼姘鍎t把這些圖標(biāo)顯示出來,供用戶選擇不同的對話框進行配置。程序入口函數(shù)前面提到,控制面板程序是特殊的動態(tài)連接庫(DLL),在每一個控制面板程序中必須提供一個標(biāo)準(zhǔn)的函數(shù)入口CPlApplet控制面板程序通過這個函數(shù)來接收控制面板發(fā)送的消息,從而執(zhí)行相應(yīng)
4、的功能,如初始化程序、顯示并且管理對話框以及關(guān)閉程序等。當(dāng)控制面板首次加載控制面板程序時取得CPlApplet函數(shù)的地址,通過該地址去調(diào)用控制面板程序的函數(shù)以及給它發(fā)送消息。控制面板可以向控制面板程序發(fā)送的消息名稱及其意義如下表所示:消息名稱含義CPL_DBLCLK該消息通知CPlApplet函數(shù)用戶雙擊了某對話框相關(guān)聯(lián)的圖標(biāo)。CPlApplet應(yīng)該顯示相應(yīng)的對話框并且完成用戶指定的任務(wù)。CPL_EXIT該消息在最后一條CPL_STOP
5、消息之后,并且控制面板調(diào)用FreeLibrary函數(shù)釋放包含控制面板程序的動態(tài)連接庫DLL之前調(diào)用。CPlApplet應(yīng)該釋放所用資源準(zhǔn)備關(guān)閉。CPL_GETCOUNT該消息在發(fā)送了CPL_INIT消息之后發(fā)送,CPlApplet應(yīng)該返回一個整數(shù)指明它支持多少個對話框。CPL_INIT該消息在控制面板動態(tài)連接庫DLL程序首次加載時調(diào)用,CPlApplet在此可以執(zhí)行一些初始化過程,包括內(nèi)存的分配。CPL_INQUIRE該消息在CPL_G
6、ETCOUNT消息之后發(fā)送,讓CPlApplet提供特定對話框的信息。CPlApplet的lParam2參數(shù)指向一個CPLINFO結(jié)構(gòu)。CPL_NEWINQUIRE該消息在CPL_GETCOUNT消息之后發(fā)送,讓CPlApplet提供指定對話框的信息。參數(shù)lParam2是指向NEWCPLINFO結(jié)構(gòu)的指針,在Windows95WindowsNTversion4.0,為了提高性能,控制面板程序應(yīng)該處理CPL_INQUIRE消息,而不是該程
7、序使用VisualC開發(fā),從File菜單選擇New,再選擇MFCAppWizard,工程名稱為CPL,如圖3所示。單擊OK之后再選擇MFCExtentionDLL,如圖4所示。這樣,VisualC將為我們創(chuàng)建一個包含資源文件,DEF文件的動態(tài)連接庫工程。在VisualCAppWizard為我們創(chuàng)建的工程中,加入一個圖標(biāo)資源和字符串資源,ID分別為ID_ICON1和ID_STRING1,然后再加入一個圖2所示對話框,其中有一個CheckB
8、ox,ID為ID_CHECK1。并且將工程的輸出文件名改為CDAUTO.CPL,方法是選擇Project菜單的Settings...項,如圖5所示。以下是程序的清單。程序清單:CPL.cpp:DefinestheinitializationroutinesftheDLL.#include“stdafx.h“#include#include#include#include“resource.h“#ifdef_DEBUG#definenew
9、DEBUG_NEW#undefTHIS_FILEstaticTHIS_FILE[]=__FILE__#endifstaticAFX_EXTENSION_MODULECPLDLL=NULLNULLHINSTANCEhinst=NULLBOOLFARPALCPLDlg(HWNDhDlgUINTmessageWPARAMwParamLPARAMlParam)控制面板接口函數(shù)CPlAppletextern“C“intAPIENTRYCPlApp
10、let(HWNDhwndCPLUINTuMsgLPARAMlParam1LPARAMlParam2)extern“C“intAPIENTRYDllMain(HINSTANCEhInstanceDWDdwReasonLPVOIDlpReserved)RemovethisifyouuselpReservedUNREFERENCED_PARAMETER(lpReserved)if(dwReason==DLL_PROCESS_ATTACH)TR
11、ACE0(“CPL.DLLInitializing!n“)ExtensionDLLonetimeinitializationif(!AfxInitExtensionModule(CPLDLLhInstance))return0thisDLLintotheresourcechainNOTE:IfthisExtensionDLLisbeingimplicitlylinkedtobyanMFCRegularDLL(suchasanActive
12、XControl)insteadofanMFCapplicationthenyouwillwanttoremovethislinefromDllMainputitinaseparatefunctionexptedfromthisExtensionDLL.TheRegularDLLthatusesthisExtensionDLLshouldthenexplicitlycallthatfunctiontoinitializethisExte
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論