8 activex
Download
Skip this Video
Download Presentation
第 8 章 ActiveX 控件和自定义组件开发

Loading in 2 Seconds...

play fullscreen
1 / 23

第 8 章 ActiveX 控件和自定义组件开发 - PowerPoint PPT Presentation


  • 170 Views
  • Uploaded on

第 8 章 ActiveX 控件和自定义组件开发. 王德俊 上海交通大学继续教育学院. 第 8 章 ActiveX 控件和自定义组件开发. 8.1 ActiveX 控件 8.2 自定义组件 . ActiveX 控件概念. 什么是 ActiveX 控件 ActiveX 是 Microsoft 对一系列策略性面向对象程序技术和工具的称呼,是“成品”的软件模块, 可以简单理解为能够实现特定功能的“成品”控件。 ActiveX 控件 是在 OLE 控件“对象链接与嵌入控件”和 OCX 控件的基础发展起来的,其重要作用是可以插入到网页或应用程序中使用。.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' 第 8 章 ActiveX 控件和自定义组件开发' - xiang


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
8 activex

第8章 ActiveX控件和自定义组件开发

王德俊

上海交通大学继续教育学院

8 activex1
第8章ActiveX控件和自定义组件开发

8.1 ActiveX控件

8.2 自定义组件

activex
ActiveX控件概念
  • 什么是ActiveX控件
    • ActiveX是Microsoft对一系列策略性面向对象程序技术和工具的称呼,是“成品”的软件模块,可以简单理解为能够实现特定功能的“成品”控件。
    • ActiveX控件是在OLE控件“对象链接与嵌入控件”和OCX控件的基础发展起来的,其重要作用是可以插入到网页或应用程序中使用。
slide4
自定义组件概念

什么是自定义组件

严格来说,ActiveX控件指的是提供用户界面接口(UI)功能的组件,而一般所说的组件是无用户界面组件,此类组件定义时只需定义为宿主程序所调用的属性和方法,无需考虑如何显示界面。

slide5
开发和使用
  • ActiveX控件通常以dll或ocx文件的形式存在,自定义无界面组件通常以dll的形式存在,它们不能独立运行,相应的依赖程序称为宿主程序。
    • 宿主程序在使用控件和组件时,不需要编译,只需要按照既定的格式说明进行调用即可。
  • 开发语言:
    • ActiveX控件可以用各种编程语言来开发,如C、C++,也包括.NET中的C#、VB.NET等。
slide6
自定义组件的创建步骤

(1) 选择“文件”|“新建”|“项目”命令,在打开的“新建项目”对话框的模板框中选择“类库”模版, 并设置组件名称,【确定】

(2) 在对应的类文件中,添加具有一定功能的public方法作为组件访问接口

(3) 选择“生成”|“生成组件名称”菜单命令,即可在程序根目录的“组件名称\bin\Release”或“组件名称\bin\Debug”子目录下生成以文件“组件名称.dll”存在的组件。

slide7
自定义组件的使用

(1)创建应用程序,如:窗体应用程序

(2)选择菜单“项目”|“添加引用”命令,在打开的“添加引用”对话框中打开“浏览”选项卡,定位到“组件名称.dll”文件所在的目录,选择该文件,【确定】,引入已创建的组件

(3)在应用程序中创建组件类的对象调用其接口方法。

slide8

【例8.1】开发具有对英文文本进行加密和解密功能的组件。【例8.1】开发具有对英文文本进行加密和解密功能的组件。

  • 设计思想:这里假设英文文本是由大小写字母、逗号、点号和空格组成。加密的原理是,先将这些字符随机地排成一圈,为叙述方便,不妨假设排成如下的圈(□表示空格):
  • 令key表示密钥(这里为整数),对于英文文本(明文)中的每个字符,用其在圈中所在位置后面的第key个字符表示。
    • 例如,如果key为4,则文本“I am a boy. ”加密后就变成密文“MdeqdedfsCc”。
slide9
【例8.1】(续)
  • 解密方法:只需将密文中的字符用其在圈中所在位置前面的第key字符来表示即可。
    • 解密用户必须知道密钥key。
slide10
【例8.1】(续)

步骤如下:

(1) “新建项目”, 选择“类库”,然后将项目名设置为EnDecrypting,单击【确定】按钮。

(2)命名空间采用默认设置EnDecrypting,而将类名改为EnDecryptingClass;然后在该类中添加一个私有成员:

privatestring matrix =

"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,. ";

slide11
【例8.1】(续)

(3)接着在EnDecryptingClass类中添加两个方法,分别用于实现加密和解密:

public string Encrypting(string plaintext, int keycode)

//加密

public string Decrypting(string ciphertext, int keycode)

//解密

slide12
【例8.1】(续)

待加密文本

密钥

publicstring Encrypting(string plaintext, int keycode) //加密方法

{

char[] chars = matrix.ToCharArray();

char[] ciphertext_arr = plaintext.ToCharArray(); //将明文散列到字符数组中

int i = 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) throw new Exception("明文中包含非法字符!");

int k = 0;

while (k < keycode)

{

k++;

j++;

if (j == matrix.Length) j = 0;

}

ciphertext_arr[i] = matrix[j]; //明文转换为密文

}

return new String(ciphertext_arr); //返回密文

}

slide13
【例8.1】(续)

public string Decrypting(string ciphertext, int keycode) //解密方法

{

char[] chars = matrix.ToCharArray();

char[] plaintext_arr = ciphertext.ToCharArray(); //将密文散列到字符数组中

int i = 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) throw new Exception("密文中包含非法字符!");

int k = keycode - 1;

while (k >= 0)

{ k--;

j--;

if (j == -1) j = matrix.Length - 1;

}

plaintext_arr[i] = matrix[j]; //密文转换为明文

}

return new String(plaintext_arr); } //返回明文

待解密文本

密钥

slide14
【例8.1】(续)

(4)生成加密、解密组件:选择菜单“生成”|“生成EnDecrypting”命令,即可在程序根目录的EnDecrypting\bin\Release子目录下生成以文件EnDecrypting.dll存在的加密、解密组件。

slide15
【例8.2】(续)

【例8.2】调用在例8.1中创建的加密、解密组件EnDecrypting,实现对给定英文文本的加密和解密功能。

(1)创建名为testEnDecrypting的窗体应用程序,然后选择菜单“项目”|“添加引用”命令,在打开的“添加引用”对话框中打开“浏览”选项卡,定位到EnDecrypting.dll文件所在的目录,并选择该文件,【确定】按钮即可引入已创建的组件,以后就可以直接调用它了。

slide16
【例8.2】(续)

(2)在窗体上分别添加三个TextBox控件和三个Label控件以及两个Button控件,并对它们的有关属性、位置和大小作适当的设置和调整,并将窗体的Text属性值设置为“加密、解密程序”,结果如下图所示。

slide17
【例8.2】(续)

(3)制作用于输入密钥的对话框。方法是:在程序中再添加一个窗体,形成窗体Form2,并在该窗体上添加一个TextBox控件和一个Label控件,并作适当的调整和设置,结果如下图所示。

slide18
【例8.2】(续)

(4)为了使窗体Form2中输入的数据能传递到Form1中,需要编写相关代码 :

public partial class Form2 : Form

{

public Form2()

{

InitializeComponent();

}

private int keycode = -1;

public int keycodeValue //Form1利用该属性可以访问Form2中输入的数据

{

get { return keycode; }

}

private void button1_Click(object sender, EventArgs e)

{

keycode = Convert.ToInt16(textBox1.Text);

this.Close();

} }

slide19
【例8.2】(续)

(5)编写相关事件的处理函数,需要做以下几项工作:

编写显示用于输入密钥的对话框的实现函数——ShowForm2Dia()

为【加密】和【解密】按钮编写事件处理函数

//显示用于输入密钥的对话框的实现代码

private int ShowForm2Dia()

{

Form2 frm2 = new Form2();

frm2.MaximizeBox = false;

frm2.MinimizeBox = false;

frm2.FormBorderStyle = FormBorderStyle.FixedSingle;

frm2.Text = "密钥";

frm2.ShowDialog();

return frm2.keycodeValue;

}

slide20
【例8.2】(续)

//【加密】按钮事件处理函数

private void button1_Click(object sender, EventArgs e)

{

int keycode = ShowForm2Dia();

try

{

EnDecrypting.EnDecryptingClass obj =

newEnDecrypting.EnDecryptingClass();

textBox2.Text = obj.Encrypting(textBox1.Text, keycode);

}

catch (Exception ex)

{

MessageBox.Show(ex.ToString());

}

}

slide21
【例8.2】(续)

//【解密】按钮事件处理函数

private void button2_Click(object sender, EventArgs e)

{

int keycode = ShowForm2Dia();

try

{

EnDecrypting.EnDecryptingClass obj =

new EnDecrypting.EnDecryptingClass();

textBox3.Text = obj.Decrypting(textBox2.Text, keycode);

}

catch (Exception ex)

{

MessageBox.Show(ex.ToString());

}

}

slide22
【例8.2】(续)
  • 执行该程序:
slide23
本讲小结

ActiveX控件

自定义组件

ad