講稿文字規(guī)范-課件_第1頁(yè)
講稿文字規(guī)范-課件_第2頁(yè)
講稿文字規(guī)范-課件_第3頁(yè)
講稿文字規(guī)范-課件_第4頁(yè)
講稿文字規(guī)范-課件_第5頁(yè)
已閱讀5頁(yè),還剩18頁(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)介

第8章ActiveX控件和自定義組件開(kāi)發(fā)

王德俊上海交通大學(xué)繼續(xù)教育學(xué)院第8章

ActiveX控件和自定義組件開(kāi)發(fā)8.1ActiveX控件8.2自定義組件 ActiveX控件概念什么是ActiveX控件ActiveX是Microsoft對(duì)一系列策略性面向?qū)ο蟪绦蚣夹g(shù)和工具的稱(chēng)呼,是“成品”的軟件模塊,可以簡(jiǎn)單理解為能夠?qū)崿F(xiàn)特定功能的“成品”控件。ActiveX控件是在OLE控件“對(duì)象鏈接與嵌入控件”和OCX控件的基礎(chǔ)發(fā)展起來(lái)的,其重要作用是可以插入到網(wǎng)頁(yè)或應(yīng)用程序中使用。自定義組件概念什么是自定義組件嚴(yán)格來(lái)說(shuō),ActiveX控件指的是提供用戶(hù)界面接口(UI)功能的組件,而一般所說(shuō)的組件是無(wú)用戶(hù)界面組件,此類(lèi)組件定義時(shí)只需定義為宿主程序所調(diào)用的屬性和方法,無(wú)需考慮如何顯示界面。ActiveX控件通常以dll或ocx文件的形式存在,自定義無(wú)界面組件通常以dll的形式存在,它們不能獨(dú)立運(yùn)行,相應(yīng)的依賴(lài)程序稱(chēng)為宿主程序。宿主程序在使用控件和組件時(shí),不需要編譯,只需要按照既定的格式說(shuō)明進(jìn)行調(diào)用即可。開(kāi)發(fā)語(yǔ)言:ActiveX控件可以用各種編程語(yǔ)言來(lái)開(kāi)發(fā),如C、C++,也包括.NET中的C#、VB.NET等。開(kāi)發(fā)和使用自定義組件的創(chuàng)建步驟(1)選擇“文件”|“新建”|“項(xiàng)目”命令,在打開(kāi)的“新建項(xiàng)目”對(duì)話(huà)框的模板框中選擇“類(lèi)庫(kù)”模版,并設(shè)置組件名稱(chēng),【確定】(2)在對(duì)應(yīng)的類(lèi)文件中,添加具有一定功能的public方法作為組件訪(fǎng)問(wèn)接口(3)選擇“生成”|“生成組件名稱(chēng)”菜單命令,即可在程序根目錄的“組件名稱(chēng)\bin\Release”或“組件名稱(chēng)\bin\Debug”子目錄下生成以文件“組件名稱(chēng).dll”存在的組件。自定義組件的使用(1)創(chuàng)建應(yīng)用程序,如:窗體應(yīng)用程序(2)選擇菜單“項(xiàng)目”|“添加引用”命令,在打開(kāi)的“添加引用”對(duì)話(huà)框中打開(kāi)“瀏覽”選項(xiàng)卡,定位到“組件名稱(chēng).dll”文件所在的目錄,選擇該文件,【確定】,引入已創(chuàng)建的組件(3)在應(yīng)用程序中創(chuàng)建組件類(lèi)的對(duì)象調(diào)用其接口方法?!纠?.1】

開(kāi)發(fā)具有對(duì)英文文本進(jìn)行加密和解密功能的組件。設(shè)計(jì)思想:這里假設(shè)英文文本是由大小寫(xiě)字母、逗號(hào)、點(diǎn)號(hào)和空格組成。加密的原理是,先將這些字符隨機(jī)地排成一圈,為敘述方便,不妨假設(shè)排成如下的圈(□表示空格):

令key表示密鑰(這里為整數(shù)),對(duì)于英文文本(明文)中的每個(gè)字符,用其在圈中所在位置后面的第key個(gè)字符表示。例如,如果key為4,則文本“Iamaboy.”加密后就變成密文“MdeqdedfsCc”。解密方法:只需將密文中的字符用其在圈中所在位置前面的第key字符來(lái)表示即可。解密用戶(hù)必須知道密鑰key?!纠?.1】(續(xù))【例8.1】(續(xù))步驟如下:(1)“新建項(xiàng)目”

,選擇“類(lèi)庫(kù)”,然后將項(xiàng)目名設(shè)置為EnDecrypting,單擊【確定】按鈕。(2)命名空間采用默認(rèn)設(shè)置EnDecrypting,而將類(lèi)名改為EnDecryptingClass;然后在該類(lèi)中添加一個(gè)私有成員:private

stringmatrix="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,.";【例8.1】(續(xù))(3)接著在EnDecryptingClass類(lèi)中添加兩個(gè)方法,分別用于實(shí)現(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,實(shí)現(xiàn)對(duì)給定英文文本的加密和解密功能。(1)創(chuàng)建名為testEnDecrypting的窗體應(yīng)用程序,然后選擇菜單“項(xiàng)目”|“添加引用”命令,在打開(kāi)的“添加引用”對(duì)話(huà)框中打開(kāi)“瀏覽”選項(xiàng)卡,定位到EnDecrypting.dll文件所在的目錄,并選擇該文件,【確定】按鈕即可引入已創(chuàng)建的組件,以后就可以直接調(diào)用它了?!纠?.2】(續(xù))(2)在窗體上分別添加三個(gè)TextBox控件和三個(gè)Label控件以及兩個(gè)Button控件,并對(duì)它們的有關(guān)屬性、位置和大小作適當(dāng)?shù)脑O(shè)置和調(diào)整,并將窗體的Text屬性值設(shè)置為“加密、解密程序”,結(jié)果如下圖所示?!纠?.2】(續(xù))(3)制作用于輸入密鑰的對(duì)話(huà)框。方法是:在程序中再添加一個(gè)窗體,形成窗體Form2,并在該窗體上添加一個(gè)TextBox控件和一個(gè)Label控件,并作適當(dāng)?shù)恼{(diào)整和設(shè)置,結(jié)果如下圖所示?!纠?.2】(續(xù))(4)為了使窗體Form2中輸入的數(shù)據(jù)能傳遞到Form1中,需要編寫(xiě)相關(guān)代碼:

publicpartialclassForm2:Form{publicForm2(){InitializeComponent();}

privateintkeycode=-1;publicintkeycodeValue//Form1利用該屬性可以訪(fǎng)問(wèn)Form2中輸入的數(shù)據(jù)

{get{returnkeycode;}}

privatevoidbutton1_Click(objectsender,EventArgse){keycode=Convert.ToInt16(textBox1.Text);this.Close();}}【例8.2】(續(xù))(5)編寫(xiě)相關(guān)事件的處理函數(shù),需要做以下幾項(xiàng)工作:編寫(xiě)顯示用于輸入密鑰的對(duì)話(huà)框的實(shí)現(xiàn)函數(shù)——ShowForm2Dia()為【加密】和【解密】按鈕編寫(xiě)事件處理函數(shù)//顯示用于輸入密鑰的對(duì)話(huà)框的實(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. 本站所有資源如無(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)論