网上第一本以TXT格式的VC++深入详解孙鑫的书.全文全以TXT格式,并每一章节都分了目录,清晰易读
源代码在线查看: 18.3 方法.txt
18.3 方法
.
下面,为 Clock控件添加一个自定义的方法。同样,这也是利用 ClassWizard来完成的。首先打开 ClassWizard对话框,选择 Automation选项卡,注意:在此属性页上, class name 这一选项一定要选择 CClockCtrl。然后,单击【 Add Method】按钮,这时将出现如图 18.39所示的对话框。
该对话框中提供了几个选项,其中外部名称 (Extemal name )是给外部程序使用控件的方法时使用的,这里,我们可以将其设置为 Hel10。读者可以看到,系统自动为该方法提供了一个内部名称 Ontemal name ): Hello,这个内部名称是在控件内部使用的方法名称,它可以与外部名称不一样。然后将返回类型 (Retum type )设置为 void,不用给这个方法设置参数。结果就是如图 18.39所示的内容。
图 18.39为控件添加方法对话框
然后单击【 OK】按钮关闭添加方法对话框,并单击 Class Wizard对话框上的【 OK】按钮关闭该对话框。这时,在 ClassView选项卡中,可以看到在一DClock接口下增加了一个方法: Hello.该方法前面是用一个绿色的小方块表示的。同时,在 CClockCtr1类中提供了该方法的实现,这时该方法的实现代码是空的。在此方法中,我们可以使用 MessageBox函数显示一个消息框,其中显示字符串: "Hello world! "。具体代码如例 18-12所示。
例IJ 18-12
void CClockCtrl : :Hello()
// TODO : Add your dispatch handler code here MessageBox("Hello world! ");
利用 Build命令生成最新的 Clock控件,再次利用 ActiveX Contro1 Test Container容器测试该控件。在该容器中调用控件方法的步骤是:选中 Clock控件,选择【 Control\lnvoke Methods...】菜单项,
V相10 worldl 主j 这时将打开 lnvoke Methods对话框,在此对话框的 Method Name下拉列表框中选择 "Hello"方法,然后单击二」击【 Invoke】按钮,就会调用 Clock控件的 Hello方法,图 18 .40调用 Clock控件的 Hello将出现一个如图 18 .40所示的消息框。方法后显示的信息框
同样地,也可以在 VB中测试 Clock控件。打开先前的 VBTest程序,在窗体上,在 Clock控件的下方再摆放一个按钮控件。双击该按钮,即可进入代码编辑窗口,在该按钮单击方法中,调用 Clock控件的 Hello方法,具体代码如例 18-13所示。
19IJ 18-13
private Sub Cornmandl_Cl工 ck () Clockl.Hello End Sub
本例中,窗体上放置的Clock控件名称是Clockl。因此上述代码利用此对象调用Clock控件的Hello方法。
在VB中运行VBTest程序,当单击Commandl按钮时,同样将弹出如图 18.40所示的信息框。这就是在VB程序中调用控件方法的过程。