版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第8章ActiveX控件和自定義組件開發(fā)
王德俊上海交通大學(xué)繼續(xù)教育學(xué)院第8章
ActiveX控件和自定義組件開發(fā)8.1ActiveX控件8.2自定義組件 ActiveX控件概念什么是ActiveX控件ActiveX是Microsoft對一系列策略性面向?qū)ο蟪绦蚣夹g(shù)和工具的稱呼,是“成品”的軟件模塊,可以簡單理解為能夠?qū)崿F(xiàn)特定功能的“成品”控件。ActiveX控件是在OLE控件“對象鏈接與嵌入控件”和OCX控件的基礎(chǔ)發(fā)展起來的,其重要作用是可以插入到網(wǎng)頁或應(yīng)用程序中使用。自定義組件概念什么是自定義組件嚴(yán)格來說,ActiveX控件指的是提供用戶界面接口(UI)功能的組件,而一般所說的組件是無用戶界面組件,此類組件定義時只需定義為宿主程序所調(diào)用的屬性和方法,無需考慮如何顯示界面。ActiveX控件通常以dll或ocx文件的形式存在,自定義無界面組件通常以dll的形式存在,它們不能獨立運行,相應(yīng)的依賴程序稱為宿主程序。宿主程序在使用控件和組件時,不需要編譯,只需要按照既定的格式說明進行調(diào)用即可。開發(fā)語言:ActiveX控件可以用各種編程語言來開發(fā),如C、C++,也包括.NET中的C#、VB.NET等。開發(fā)和使用自定義組件的創(chuàng)建步驟(1)選擇“文件”|“新建”|“項目”命令,在打開的“新建項目”對話框的模板框中選擇“類庫”模版,并設(shè)置組件名稱,【確定】(2)在對應(yīng)的類文件中,添加具有一定功能的public方法作為組件訪問接口(3)選擇“生成”|“生成組件名稱”菜單命令,即可在程序根目錄的“組件名稱\bin\Release”或“組件名稱\bin\Debug”子目錄下生成以文件“組件名稱.dll”存在的組件。自定義組件的使用(1)創(chuàng)建應(yīng)用程序,如:窗體應(yīng)用程序(2)選擇菜單“項目”|“添加引用”命令,在打開的“添加引用”對話框中打開“瀏覽”選項卡,定位到“組件名稱.dll”文件所在的目錄,選擇該文件,【確定】,引入已創(chuàng)建的組件(3)在應(yīng)用程序中創(chuàng)建組件類的對象調(diào)用其接口方法?!纠?.1】
開發(fā)具有對英文文本進行加密和解密功能的組件。設(shè)計思想:這里假設(shè)英文文本是由大小寫字母、逗號、點號和空格組成。加密的原理是,先將這些字符隨機地排成一圈,為敘述方便,不妨假設(shè)排成如下的圈(□表示空格):
令key表示密鑰(這里為整數(shù)),對于英文文本(明文)中的每個字符,用其在圈中所在位置后面的第key個字符表示。例如,如果key為4,則文本“Iamaboy.”加密后就變成密文“MdeqdedfsCc”。解密方法:只需將密文中的字符用其在圈中所在位置前面的第key字符來表示即可。解密用戶必須知道密鑰key?!纠?.1】(續(xù))【例8.1】(續(xù))步驟如下:(1)“新建項目”
,選擇“類庫”,然后將項目名設(shè)置為EnDecrypting,單擊【確定】按鈕。(2)命名空間采用默認(rèn)設(shè)置EnDecrypting,而將類名改為EnDecryptingClass;然后在該類中添加一個私有成員:private
stringmatrix="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,.";【例8.1】(續(xù))(3)接著在EnDecryptingClass類中添加兩個方法,分別用于實現(xiàn)加密和解密:publicstringEncrypting(stringplaintext,intkeycode)//加密publicstringDecrypting(stringciphertext,intkeycode)//解密【例8.1】(續(xù))
public
stringEncrypting(stringplaintext,intkeycode)//加密方法
{
char[]chars=matrix.ToCharArray();char[]ciphertext_arr=plaintext.ToCharArray();//將明文散列到字符數(shù)組中
inti=0,j=0;for(i=0;i<ciphertext_arr.Length;i++) {for(j=0;j<chars.Length;j++){
if(matrix[j]==ciphertext_arr[i])break;}
if(j==matrix.Length)thrownewException("明文中包含非法字符!");
intk=0;
while(k<keycode){k++;j++;if(j==matrix.Length)j=0; }ciphertext_arr[i]=matrix[j];//明文轉(zhuǎn)換為密文
}
returnnewString(ciphertext_arr);//返回密文
}待加密文本密鑰【例8.1】(續(xù))
publicstringDecrypting(stringciphertext,intkeycode)//解密方法
{
char[]chars=matrix.ToCharArray();char[]plaintext_arr=ciphertext.ToCharArray();//將密文散列到字符數(shù)組中
inti=0,j=0;for(i=0;i<plaintext_arr.Length;i++){for(j=0;j<chars.Length;j++){if(matrix[j]==plaintext_arr[i])break;}if(j==matrix.Length)thrownewException("密文中包含非法字符!");intk=keycode-1;while(k>=0){k--;j--;if(j==-1)j=matrix.Length-1;}plaintext_arr[i]=matrix[j];//密文轉(zhuǎn)換為明文
}
returnnewString(plaintext_arr);}//返回明文
密鑰待解密文本【例8.1】(續(xù))(4)生成加密、解密組件:選擇菜單“生成”|“生成EnDecrypting”命令,即可在程序根目錄的EnDecrypting\bin\Release子目錄下生成以文件EnDecrypting.dll存在的加密、解密組件?!纠?.2】(續(xù))【例8.2】
調(diào)用在例8.1中創(chuàng)建的加密、解密組件EnDecrypting,實現(xiàn)對給定英文文本的加密和解密功能。(1)創(chuàng)建名為testEnDecrypting的窗體應(yīng)用程序,然后選擇菜單“項目”|“添加引用”命令,在打開的“添加引用”對話框中打開“瀏覽”選項卡,定位到EnDecrypting.dll文件所在的目錄,并選擇該文件,【確定】按鈕即可引入已創(chuàng)建的組件,以后就可以直接調(diào)用它了?!纠?.2】(續(xù))(2)在窗體上分別添加三個TextBox控件和三個Label控件以及兩個Button控件,并對它們的有關(guān)屬性、位置和大小作適當(dāng)?shù)脑O(shè)置和調(diào)整,并將窗體的Text屬性值設(shè)置為“加密、解密程序”,結(jié)果如下圖所示。【例8.2】(續(xù))(3)制作用于輸入密鑰的對話框。方法是:在程序中再添加一個窗體,形成窗體Form2,并在該窗體上添加一個TextBox控件和一個Label控件,并作適當(dāng)?shù)恼{(diào)整和設(shè)置,結(jié)果如下圖所示。【例8.2】(續(xù))(4)為了使窗體Form2中輸入的數(shù)據(jù)能傳遞到Form1中,需要編寫相關(guān)代碼:
publicpartialclassForm2:Form{publicForm2(){InitializeComponent();}
privateintkeycode=-1;publicintkeycodeValue//Form1利用該屬性可以訪問Form2中輸入的數(shù)據(jù)
{get{returnkeycode;}}
privatevoidbutton1_Click(objectsender,EventArgse){keycode=Convert.ToInt16(textBox1.Text);this.Close();}}【例8.2】(續(xù))(5)編寫相關(guān)事件的處理函數(shù),需要做以下幾項工作:編寫顯示用于輸入密鑰的對話框的實現(xiàn)函數(shù)——ShowForm2Dia()為【加密】和【解密】按鈕編寫事件處理函數(shù)//顯示用于輸入密鑰的對話框的實現(xiàn)代碼
privateintShowForm2Dia(){Form2frm2=newForm2();frm2.MaximizeBox=false;frm2.MinimizeBox=false;frm2.FormBorderStyle=FormBorderStyle.FixedSingle;frm2.Text="密鑰";frm2.ShowDialog();
returnfrm2.keycodeValue;}【例8.2】(續(xù))//【加密】按鈕事件處理函數(shù)privatevoidbutton1_Click(objectsender,EventArgse){intkeycode=ShowForm2Dia();try{
EnDecrypting.EnDecryptingClassobj=
new
EnDecrypting.EnDecryptingClass();textBox2.Text=obj.Encrypting(textBox1.Text,keycode);}
catch(Exceptionex){
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 液壓閥塊課程設(shè)計
- 機織課程設(shè)計
- 溢流閥性能實驗課程設(shè)計
- 水環(huán)境容量課程設(shè)計
- 研究導(dǎo)向型課程設(shè)計
- 2024年證券發(fā)行與承銷獨家保薦協(xié)議
- 純文本識別課程設(shè)計
- 2024年超高層建筑外墻涂裝合同
- 果實采摘課程設(shè)計意圖
- 模擬電子課程設(shè)計結(jié)論
- 報價單(報價單模板)
- 統(tǒng)編版小學(xué)道德與法治一年上冊《快樂過新年》說課稿(附板書)課件PPT
- 刑事案件模擬法庭劇本完整版五篇
- 撤場通知書( 模板)
- 施工人員三級安全教育記錄表
- 2023-2024學(xué)年北京市海淀區(qū)八年級上學(xué)期數(shù)學(xué)期末質(zhì)量檢測模擬卷合集2套(含解析)
- 銅排設(shè)計技術(shù)規(guī)范
- 英國文學(xué)史及選讀復(fù)習(xí)要點總結(jié)
- 貴州省貴陽市花溪區(qū)2023-2024學(xué)年數(shù)學(xué)三年級第一學(xué)期期末聯(lián)考試題含答案
- 整改回復(fù)書樣板后邊附帶圖片
- 中小學(xué)校園人車分流方案模板
評論
0/150
提交評論