当前位置:文档之家› Wiard控件讲解

Wiard控件讲解

Wiard控件讲解
Wiard控件讲解

17.1.2Wizard控件(1)

Wizard控件远比MultiView控件更富魅力。它同样支持每次显示几个视图中的一个,但它还包含一系列自定义的内建行为,包括导航按钮、带有分步链接的侧栏、样式和模板。

通常,向导表示一个任务,用户在其间进行线性移动,从当前步骤前进到下一步(或者在做更正时退回到上一步)。https://www.doczj.com/doc/1c3346550.html,的Wizard控件还支持非线性导航,也就是说,它允许你根据用户提供的信息忽略某些步骤。

默认情况下,Wizard控件提供导航按钮并在左边提供一个带有每个步骤链接的侧栏。设置Wizard.DisplaySideBar属性为false可以隐藏侧栏。一般情况下,当需要强制线性导航并阻止用户跳离固定的次序时,会用到这样的设置。你可以用任意的HTML控件或https://www.doczj.com/doc/1c3346550.html, 控件来提供每一步骤的内容。图17-4显示了Wizard的编辑区域,你可以向已生成的Wizard实例添加内容。

1. 向导步骤

在https://www.doczj.com/doc/1c3346550.html,里创建向导,只需用标签定义它们的步骤和内容即可。每个步骤都有一些基本信息。表17-2显示了一些重要的属性。

表17-2向导步骤属性

属性描述

Title

步骤的描述性名称。这个名称用在侧栏

作为链接显示的文字

Step Type

步骤的类型,它的值来自WizardStepType枚举。

这个值确定要为这个步骤显示的导航按钮的类型。

可选项包括Start(显示Next按钮)、Step

(显示Next和Previous按钮)、Finish

(显示Finish和Previous按钮)、Complete

(不显示按钮,如果启用了侧栏也会把它隐藏)、

Auto(步骤的类型按它在集合中的位置推断)。

默认值是Auto,它表示第一个步骤是Start,

最后一个步骤是Finish ,所有其

他步骤是Step

Allo wReturn 表示用户是否可以重新回到这

一步。如果为false ,

用户通过这一步之后,就再也不

能返回这里。

侧栏里的链接对这个步骤不起

作用,它的下一

步骤的Previous 按钮要么跳过

这一步,要么彻底

隐藏(依赖于前一个步骤设置的

AllowReturn 值)

下面的向导包括四个步骤,它们一起组成一个问卷。问卷结束时添加了Complete 步骤,它显示一些汇总信息。导航按钮和侧栏链接是自动加入的。

图17-5显示了向导步骤。

和MultiView控件不同,在Visual Studio页面的设计界面里你每次只能看到一个步骤。从智能标签里选择你要设计的步骤,如图17-6所示。不过要注意--每次这样做的时候,Visual Studio会把Wizard.ActiveStepIndex改成当前你选择的步骤。运行应用程序前一定要把它设为0,这样向导才会从第一步开始。

注解请记住,当你往向导的步骤中加入控件时,无论是哪一步骤,控件总会在视图状态中被实例化并持久化。如果你希望简化复杂的向导,需要把它们分解到几个单独的页面里,使用Server.Transfer()方法从一个页面跳转到另一个,但同时要忍受一个并不美观的编程模型。

7.1.2Wizard控件(2)

2. 向导事件

你可以编写响应几个事件(如表17-3所示)的代码来增强你的向

导。

表17-3向导事件

事件描述

ActiveStep Changed

控件切换到一个新步骤时发生(也许是

因为用户单击了导航按钮,也可能是因

为代码修改了ActiveStepIndex属性)

CancelButt onClick

Cancel按钮被单击时发生。默认情况下不

会显示Cancel按钮,但你可以设置

Wizard.DisplayCancelBut ton属性

把它添加到每一个步骤。通常,单击Cancel

按钮会退出向导。如果你不需要执

行任何清理代码,只要设置CancelDestinationPageU rl属性,

向导就会自动执行重定向

FinishButt

onClick

Finish按钮被单击时发生

NextButto nClick和

在任意步骤中,当Next按钮或Previous按

钮被单击时发生。不过,因

PreviousB uttonClick 为有不止一种

方式可以从一个步骤跳到下一个,所以最

好是处理ActiveStepChanged事件

SideBarBut tonClick

侧栏区域里的按钮被单击时发生

总体而言,有两种类型的向导编程模型。

逐步提交。如果每个向导步骤包含一个不可回撤的原子操作,就应该采用逐步提交。例如,如果你处理的订单信息涉及信用卡授权,在这之后是最终的购买,你就不能允许用户回退到上一步重新编辑信用卡号。要支持这种模型,就需要把某些或所有步骤的AllowReturn 属性设为false,并且响应ActiveStepChanged事件为每个步骤提交变更。

最后提交。如果向导的每个步骤是为最后要执行的操作收集数据,就应该使用最后提交。例如,你正在收集用户信息并在获得所有信息后创建一个新账号,用户就很可能在整个过程中做一些修改。你在向导结束时通过响应FinishButtonClick事件来执行创建新账号的代码。

要为当前示例实现最后提交,只要响应FinishButtonClick事件即可。下例在汇总信息里显示了用户的所有选择:

要让这段代码正常工作,你必须加入一个叫做lblSummary的Label控件。在本例中,lblSummary被放置在最后的汇总步骤中。

提示如果你希望知道用户在向导里执行的是哪一个步骤,可以使用Wizard.GetHistory()方法。它返回目前已经被访问的WizardStepBase对象集合,按时间反向排序。也就是说,集合的第一项代表前一个步骤,第二项代表前一个步骤之前的那一个,等等。

3. 向导样式和模板

毫无疑问,Wizard控件最强大的功能是允许你定制外观。也就是说,如果你想要用基本模型(带有导航按钮和各种事件的多步过程),就不会受限于默认的用户界面。

根据你希望对向导外观修改程度的不同,你有不同的选择。对于

不大的修改,可以设置各种最上层的属性。例如,和其他https://www.doczj.com/doc/1c3346550.html, 控件一样,你可以控制颜色、字体、空格以及边框样式。你还可以调整每个按钮的外观。例如,要修改Next按钮,可以使用这些属性:StepNextButtonType(使用按钮、链接或可单击的图片)、StepNextButtonText(定制按钮或链接的文字)、StepNextButtonImageUrl(设置用于图片按钮的图片)、StepNextButtonStyle(使用样式表里的样式)。你还可以通过HeaderText属性添加标题。

利用样式可获得更多控制。就像你可以用样式格式化富数据控件(如GridView)的各个部分那样,你也可以用样式格式化Wizard 控件的各个部分。表17-4列出了你可以使用的样式。和其他基于样式的控件一样,样式冲突时,较具体的样式设置(如SideBarStyle)会覆盖一般的样式设置(如ControlStyle)。类似地,在第一个步骤里,StartNextButtonStyle会覆盖NavigationButtonStyle。

表17-4向导样式

样式描述

ControlStyle作用于Wizard控件的所有

区域

HeaderStyle作用于Wizard控件的标题

区域,它只在你

设置了HeaderText属性后

可见

SideBarStyle作用于Wizard控件的侧栏

区域

SideBarButton

Style

只作用于侧栏里的按钮

StepStyle作用于控件中你定义步骤

内容的区域

NavigationStyl e

作用于控件的底部显示导航按钮的区域

NavigationButt onStyle

只作用于导航区域的导航按钮

StartNextButto nStyle

作用于第一个步骤里的“下一步”导

航按钮(StepType为Start 时)

StepNextButto nStyle

作用于中间步骤的“下一步”导航按钮

(StepType为Step时)

StepPreviousB uttonStyle

作用于中间步骤的“上一步”导航按钮

(StepType为Step时)

FinishPrevious ButtonStyle

作用于最后一个步骤的“上一步”导航按钮(StepType为Finish时)

CancelButtonS tyle

如果你把Wizard.DisplayCancelButto n

设为true,它作用于“取消”按钮

最后,如果不能通过属性和样式达到你期望的自定义级别,还可以借助模板完全定义Wizard控件的外观。通常,你只会为步骤的内容提供标记(如图17-1所示)。通过使用模板,你还可以为其他区域提供标记,如标题、侧栏或者按钮。所有的模板都是独立于步骤内容而声明的。图17-7显示了Wizard控件中适合使用模板的地方。

表17-5显示了模板的完整列表。

表17-5向导模板

样式描述

HeaderTempla te

定义标题区域的内容

SideBarTempla te

定义侧栏,它通常包含

每个步骤的导航链接

StartNavigatio定义第一

个步骤的导航按钮

nTemplate

(当StepType 为Start 时)

StepNavigatio

nTemplate 定义中间步骤的导航按钮

当StepType 为Step

时)

FinishNavigati

onTemplate 定义最后一个步骤的导航按钮

当StepType 为Finish 时)

例如,下面这个标题模板使用数据绑定表达式显示当前步骤的标题:

还可以加入下列模板来定制导航按钮。这个示例保留了标准按钮(通过显式声明)并加入了一些斜体文字,这样你可以看到每个模板

什么时候在使用。

使用模板的秘决在于确保使用正确的命令名,这样Wizard控件可以关联到标准逻辑。否则,你将不得不自己实现导航和排序的代码,它们冗长且易出错。例如,单击一个命令名为MoveNext的按钮,会自动跳转到下一步。如果你不太确信要使用什么样的命令名,可以借助一个方便的快捷方式。在Visual Studio里选中Wizard控件,从智能标签中选择某个生成模板的链接,比如"转换为StartNavigationTemplate",此时Visual Studio会插入一个模板,

这个模板会重现默认的按钮外观和行为。

注解可以毫无问题地在Wizard里使用验证控件。如果验证控件发现了无效数据,它们将阻止用户单击侧栏的所有链接(跳到其他步骤里)并防止用户单击"下一步"按钮继续操作。不过,默认情况下"上一步"按钮的CausesValidation属性被设置为false,也就是说用户将被允许回到前一个步骤。如果这不是你希望的行为,那么可以创建自己的自定义模板并相应地设置控件的CausesValidation属性。

框架结构设计步骤

砼框架结构设计手算步骤 一.确定结构方案与结构布置 1.结构选型是否选用框架结构应先进行比较。根据何广乾的模糊评判法,砼结构8~18层首选框剪结构,住宅、旅馆则首选剪力墙。对于不需要电梯的多层采用框架较多。 2.平面布置注意L,l,l’,B的关系。 3.竖向布置注意高宽比、最大高度(分A、B两大类,B类计算和构造有更严格的要求),力求规则,侧向刚度沿竖向均匀变化。 4.三缝的设置按规范要求设置,尽量做到免缝或三缝合一。 5.基础选型对于高层不宜选用独立基础。但根据国勤兄的经验,对于小高层当地基承载力标准值300kpa 以上时可以考虑用独基。 6.楼屋盖选型 高层最好选用现浇楼盖 1)梁板式最多的一种形式。有时门厅,会议厅可布置成井式楼盖,其平面长宽比不宜大于1.5,井式梁间距为2.5~3.3m,且周边梁的刚度强度应加强。采用扁梁高度宜为1/15~1/18跨度,宽度不超过柱宽50,最好不超过柱宽。 2)密肋梁方形柱网或接近方形,跨度大且梁高受限时常采用。肋梁间距1~1.5m,肋高为跨度的1/30~1/20,肋宽150~200mm。 3)无梁楼盖地震区不宜单独使用,如使用应注意可靠的抗震措施,如增加剪力墙或支撑。 4)无粘结预应力现浇楼板一般跨度大于6m,板厚减薄降低层高,在高层中应用有一定技术经济优势。在地震区应注意防止钢筋端头锚固失效。 5)其他 二.初步确定梁柱截面尺寸及材料强度等级 1.柱截面初定分抗震和非抗震两种情况。对于非抗震,按照轴心受压初定截面。对于抗震,Ac=N/(a*fc) N=B*F*Ge*n B=1.3(边柱),1.2(等跨中柱),1.25(不等跨中柱)Ge=12~15kN/m2 a为轴压比fc为砼抗压强度设计值F为每层从属面积n为层数。框架柱上下截面高度不同时,每次缩小100~150为宜。为方便尺寸标注修改,边柱一般以墙中心线为轴线收缩,中柱两边收缩。柱截面与标号的变化宜错开。 2.梁截面初定梁高为跨度的1/8~1/14,梁宽通常为1/2~1/3梁高。其余见前述。对于宽扁梁首先应注意满足挠度要求,否则存在梁板协调变形的复杂内力分析问题。梁净跨与截面高度之比不宜小于4。框架梁宽不宜小于1/2柱宽,且不小于250mm。框架梁的截面中心线宜与柱中心线重合,当必须偏置时,同一平面内的梁柱中心线间的偏心距不宜大于柱截面在该方向的1/4。 3.砼强度等级一级现浇不低于C30,其余不低于C20。 三.重力荷载计算 1.屋面及楼面永久荷载标准值分别计算各层 2.屋面及楼面可变荷载标准值 3.梁柱墙门窗重力计算 4.重力荷载代表值=自重标准值+可变荷载组合值+上下各半层墙柱等重量 可变荷载组合值系数:雪、屋面积灰为0.5,屋面活荷载不计,按实际考虑的各楼面活荷载为1。将各层代表值集中于各层楼面处。 四.框架侧移刚度计算 计算梁柱线刚度,计算各层D值,判断是否规则框架。分别计算框架纵横两个方向。 五.计算自振周期 T1=(0.6或0.7)X1.7Xsqrt(Ut) Ut___假想把集中在各层楼面处的重力荷载代表值作为水平荷载而算得的结构顶点位移。0.6或0.7为考虑填充墙的折减系数。对于带屋面局部突出的房屋,Ut应取主体结构顶点位移,而不是突出层位移。此时将

框架结构设计步骤及要点

框架结构设计步骤及要点 1. 结构设计说明: 主要是设计依据,抗震等级,人防等级,地基情况及承载力,防潮抗渗做法,活荷载值,材料等级,施工中的注意事项,选用详图,通用详图或节点,以及在施工图中未画出而通过说明来表达的信息。如混凝土的含碱量不得超过3kg/m3等等。 2. 各层的结构布置图:包括: (1).预制板的布置(板的选用、板缝尺寸及配筋)。标注预制板的块数和类型时, 不要采用对角线的形式。因为此种方法易造成线的交叉, 宜采用水平线或垂直线的方法, 相同类型的房间直接标房间类型号。应全楼统一编号,可减少设计工作量,也方便施工人员看图。板缝尽量为40, 此种板缝可不配筋或加一根筋。布板时从房间里面往外布板, 尽量采用宽板, 现浇板带留在靠窗处, 现浇板带宽最好≥200(考虑水暖的立管穿板)。如果构造上要求有整浇层时, 板缝应大于60。整浇层厚50, 配双向φ6250, 混凝土C20。纯框架结构一般不需要加整浇层。构造柱处不得布预制板。地下车库由于防火要求不可用预制板。框架结构不宜使用长向板,否则长向板与框架梁平行相接处易出现裂缝。建议使用PMCAD的人工布板功能布预制板,自动布板可能不能满足用户的施工图要求,仅能满足定义荷载传递路线的要求。 (2).现浇板的配筋(板上、下钢筋,板厚尺寸)。板厚一般取120、140、160、180四种尺寸或120、150、180三种尺寸。尽量用二级钢包括直径φ10(目前供货较少)的二级钢,直径≥12的受力钢筋,除吊钩外,不得采用一级钢。钢筋宜大直径大间距,但间距不大于200,间距尽量用200。(一般跨度小于6.6米的板的裂缝均可满足要求)。跨度小于2米的板上部钢筋不必断开,钢筋也可不画,仅说明钢筋为双向双排钢筋多少上下钢筋间距宜相等,直径可不同,但钢筋直径类型也不宜过多。顶层及考虑抗裂时板上筋可不断,或50%连通,较大处附加钢筋,拉通筋均应按受拉搭接钢筋。板配筋相同时,仅标出板号即可。一般可将板的下部筋相同和部分上部筋相同的板编为一个板号,将不相同的上部筋画在图上。当板的形状不同但配筋相同时也可编为一个板号。应全楼统一编号。当考虑穿电线管时,板厚≥120,不采用薄板加垫层的做法。电的管井电线引出处的板,因电线管过多有可能要加大板厚至180(考虑四层32的钢管叠加)。宜尽量用大跨度板,不在房间(尤其是住宅)加次梁。说明分布筋为φ8200。板顶标高不同时,板的上筋应分开或倾斜通过。现浇挑板阳角加辐射状附加筋(包括墙上的阳角)。现浇挑板阴角的板下宜加斜筋。顶层应建议甲方采用现浇楼板,以利防水,并加强结构的整体性及方便装饰性挑沿的稳定。外露的挑沿、雨罩、挑廊应每隔10~15米设一10mm的缝,钢筋不断。尽量采用现浇板,不采用予制板加整浇层方案。卫生间做法可为70厚+10高差(取消垫层)。8米以下的板均可以采用非预应力板。L、T或十字形建筑平面的阴角处附近的板应现浇并加厚,双向双排配筋,并附加45度的4根16的抗拉筋。现浇板的配筋建议采用PMCAD软件自动生成,一可加快速度,二来尽量减小笔误。自动生成楼板配筋时建议不对钢筋编号,因工程较大时可能编出上百个钢筋号,查找困难,如果要编号,编号不应出房间。配筋计算时,可考虑塑性力重分布,将板上筋乘以0.8~0.9的折减系数,将板下筋乘以1.1~1.2的放大系数。值得注意的是,按弹性计算的双向板钢筋是板某几处的最大值,按此配筋是偏于保守的,不必再人为放大。支承在外圈框架梁上的板负筋不宜过大,否则将对梁产生过大的附加扭距。一般:板厚>150时采用φ10200;否则用φ8200。PMCAD生成的板配筋图应注意以下几点:1.单向板是按塑性计算的,而双向板按弹性计算,宜改成一种计算方法。 2.当厚板与薄板相接时,薄板支座按固定端考虑是适当的,但厚板就不合适,宜减小厚板支座配筋,增大跨中配筋。 3.非矩形板宜减小支座配筋, .资料. . .

com控件详解

MSComm控件提供了两种处理通信的方式:一种为事件驱动方式,该方式相当于一般程序设计中的中断方式。当串口发生事件或错误时,MSComm控件会产生OnComm事件,用户程序可以捕获该事件进行相应处理。本文的两个例子均采用该方式。另一种为查询方式,在用户程序中设计定时或不定时查询 MSComm控件的某些属性是否发生变化,从而确定相应处理。在程序空闲时间较多时可以采用该方式。 常用属性和方法 利用MSComm控件实现计算机通信的关键是理解并正确设置MSComm控件众多属性和方法。以下是MSComm控件的常用属性和方法: ●Commport:设置或返回串口号。 ●Settings:以字符串的形式设置或返回串口通信参数。 ●Portopen:设置或返回串口状态。 ●InputMode:设置或返回接收数据的类型。 ●Inputlen:设置或返回一次从接收缓冲区中读取字节数。 ●InBufferSize:设置或返回接收缓冲区的大小,缺省值为1024字节。 ●InBufferCount:设置或返回接收缓冲区中等待计算机接收的字符数。 ●Input:从接收缓冲区中读取数据并清空该缓冲区,该属性设计时无效,运行时只读。 ●OutBufferSize:设置或返回发送缓冲区的大小,缺省值为512字节。 ●OutBufferCount:设置或返回发送缓冲区中等待计算机发送的字符数。 ●Output:向发送缓冲区发送数据,该属性设计时无效,运行时只读。 ●Rthreshold:该属性为一阀值。当接收缓冲区中字符数达到该值时,MSComm 控件设置Commevent属性为ComEvReceive,并产生OnComm事件。用户可在OnComm 事件处理程序中进行相应处理。若Rthreshold属性设置为0,则不产生OnComm 事件。例如用户希望接收缓冲区中达到一个字符就接收一个字符,可将Rthreshold设置为1。这样接收缓冲区中接收到一个字符,就产生一次OnComm 事件。 ●Sthreshold:该属性亦为一阀值。当发送缓冲区中字符数小于该值时,MSComm 控件设置Commevent属性为ComEvSend,并产生 OnComm事件。若Sthreshold 属性设置为0,则不产生OnComm事件。要特别注意的是仅当发送缓冲区中字符数小于该值的瞬间才产生 OnComm事件,其后就不再产生OnComm事件。例如Sthreshold设置为3,仅当发送缓冲区中字符数从3降为2时,MSComm控件设置 Commevent属性为ComEvSend,同时产生OnComm事件,如发送缓冲区中字符始终为2,则不会再产生OnComm事件。这就避免了发送缓冲区中数据未发送完就反复发生OnComm事件。 ●CommEvent:这是一个非常重要的属性。该属性设计时无效,运行时只读。一旦串口发生通信事件或产生错误,依据产生的事件和错误,MSComm控件为CommEvent属性赋不同的代码,同时产生OnComm事件。用户程序就可在OnComm 事件处理程序中针对不同的代码,进行相应的处理。 CommEvent属性的代码、常数及含义参见表1及表2。 表1 CommEvent通信事件代码常数含义 1 ComEvReceive 接受到Rthreshold个字符。该事件将持续产生,直到用Input 属性从接受缓冲区中读取并删除字符。 2 ComEvSend 发送缓冲区中数据少于Sthreshold个,说明串口已经发送了一些

网站建设方案_网站框架及制作流程

栏目结构图(品牌形象站与餐吧服务展示站)

公司网站整体风格: 充分体现限公司的特点,以大气、直观、高档、新颖的个性化设计展现公司的品牌形象与主营产品,以求与贵公司网络营销和市场定位达成一致,符合企业形象标准和行业特色,充分展示企业实力和产品特点,展示企业产品营销的风采,能够捕捉客户的需求,双向交流,使客户在网站中充分发表见解,并加以吸收,并从中挖掘潜在的客户,结合行业特色和公司特点,打造一个全新的,符合公司现有发展趋势的网站。 (一)我们的设计宗旨 塑造客户良好的公司知名品牌形象;进行互联网招商引资,扩大销售网络及经 营渠道。 提高宣传力度;完善公司销售管理,增强公司内外部交流。 体现客户的独特风格;最大限度的发挥站点的实用性和美观性。 采用各种先进的数据库以提高公司网站的管理性、灵活性及方便性,并通过网站更好的实现公司信息化与无纸化办公。 首页:设计精美,形式新颖,利用FLASH动感的表达公司的产品内涵。充分体现贵公司的公司实力及品牌形象,大方,得体,不落俗套,给人耳目一新的感觉。. 网站内容包括公司公司介绍、产品展示、网上招聘、新闻动态、下载中心、留言版等栏目,根据贵公司的背景,详尽的介绍贵公司的情况。文字图片相结合形势展现,这样从气势上让人感觉是一个非常有实力的公司。此模块有采用“公司信息系统”完成,前台可实现信息的浏览、查找,后台可方便添加、删除、栏目维护(可添加图片)

网站建设费模块

人才招聘系统实现招聘单位在线发布、修改、删除人才招聘信息,招聘信息和在线注册简历、人才简历对不同服务对象有权限限制。为求职者提供职位人才信息订阅和详细人才信息查询等个性化增值服务。设有一个专门的人才库。 浏览统计分析系统记录网站和公司产品流览量及点击率并分析出每个上网者来源(可分析出IP地址的来访国家、地区、访问页面、停留时间、用的浏览器等) 时间安排: 网站建设进度及实施过程 项目实施方法 我们项目实施方法中的五个基本阶段是:1 规划定义:已完备

VisualStudio_各个控件详解

.NET控件详解 (2011-07-2022:44:33) 转载 标签:it分类:C#语言 微软的.net控件详解,没有那个比这个更权威的了网址: https://www.doczj.com/doc/1c3346550.html,/QuickStartv20/aspnet/doc/ctrlref/standard/multiview. aspx 参考资料: https://www.doczj.com/doc/1c3346550.html,/QuickStartv20/aspnet/doc/ctrlref/standard/multiview. aspx 网易学院:https://www.doczj.com/doc/1c3346550.html,/special/000915SN/stvs2005.html 参考资料:https://www.doczj.com/doc/1c3346550.html,/tianine5/blog/item/1470aa35f46bad8aa61e1285.html .NET控件命名规范 备注 控件名称简写(前 缀) Label lbl标签 TextBox txt文本框 Button btn按钮 LinkButton lnkbtn

ImageButton imgbtn ListBox lst列表框DropDownList ddl DataGrid dg DataList dl CheckBox chk CheckBoxList chklst RadioButton rdo单选按钮RadioButtonList rdolst Image img图片Panel Pnl-面板Calender cal AdRotator ar Table tbl RequireFieldValidator rfv CompareValidator cv RangeValidator rv RegularExpressionValidatorrev ValidatorSummary vs CrystalReportViewer rptvew ComboBox cbo组合框

C#编写COM组件示例

C#编写COM组件 1、新建一个类库项目 2、将Class1.cs改为我们想要的名字 问是否同时给类改名,确定

3、修改Properties目录下面的AssemblyInfo.cs ComVisible属性设置为True 4、项目菜单->MyLib属性 找到“生成”选项卡 往下看,找到“为COM Interop 注册”勾上

5、继续往下,找到“签名”选项卡 勾上“为程序集签名” 在下面的下拉框里面选择“<新建...>” 6、在弹出的对话框里面,输入MyLib。。或者随便取个名字 去掉使用密码保护文件的选项 7、开始编码,任何一个公开的类,必须有一个I开通的接口定义C# code

using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; namespace MyLib { [ComVisible(true)] [Guid("2CBD3D76-35F1-4f9d-9C1B-9DBFEE412F76")] public interface IMyClass { void Initialize(); void Dispose(); int Add(int x, int y); } [ComVisible(true)] [Guid("EA2F140A-108F-47ae-BBD5-83EEE646CC0D")] [ProgId("MyLib.MyClass")] public class MyClass : IMyClass { public void Initialize() { //nothing todo } public void Dispose() { //nothing todo } public int Add(int x, int y) { return x + y; } } }

pkpm框架结构设计附上主要步骤

设计说明: 一、建模前的准备工作: 1、确定结构体系: 根据设计任务,本工程为一五层建筑,采用全钢筋混凝土框架结构,底层至顶层全部采用现浇楼板。 2、结构尺寸估算: 根据建筑图中的开间、进深及层高,结合各楼层采用的砼强度等级及受荷情况,根据设计规范及构造要求可以估算基本构件尺寸(单位:mm ) A 、柱:本工程可取400×400mm 。 B 、梁: 主梁:128 L h L ≥≥; 32h b h ≥ ≥; 本工程根据图纸得5700/12=475《h 《5700/8=712.5,取 h=600mm,b=300mm 次梁:1812 L h L ≥≥; 32h b h ≥ ≥; 本工程根据图纸得4200/18=233《h 《4200/12=350,取 h=350mm,b=200mm 悬挑梁:一般取为悬臂长的1/6, C 、板: 40/;80L h mm h ≥≥,本工程可取120mm ; 3、确定荷载 A 、楼面恒载(包括楼板自重): 一层~五层楼面:4KN/m 2,卫生间:3.5KN/m 2,楼梯间:5.5KN/m 2, 屋面:6KN/m 2,

B、楼面活载: 一层~五层楼面:2.0KN/m2,卫生间:2.0KN/m2,楼梯间:2.0KN/m2, 阳台:2.5KN/m2 不上人屋面:0.5KN/m2, C、墙荷载: 外横墙:9.4KN/m 外纵墙:4.0KN/m 内墙:6.0KN/m 女儿墙:4 KN/m 4、确定结构标准层和荷载标准层 根据建筑图及所采用的结构体系进行标准层划分,本工程根据建筑图及荷载情况,可分为3个结构标准层,2个荷载标准层。 三个结构标准层: 第一标准层为▽3.000楼板,层高4000(1000+3000=4000); 第二标准层为▽6.000、9.000、12.000楼板,层高均为3000; 第三标准层为▽15.000屋面板,层高3000。 二个荷载标准层: 第一标准层楼面恒载:4KN/m2,活载:2.0KN/m2, 第二标准层屋面恒载:6KN/m2,活载:0.5KN/m2, 二、结构建模基本步骤: 1、执行PMCAD主菜单1建筑模型与荷载输入 A、建立和生成网格,根据所给建筑图建立第一结构标准层的轴线 可用正交轴网进行,然后进行轴线命名

COM组件设计与应用

IDispatch 接口for vc6.0 作者:杨老师 下载源代码 一、前言 终于写到了第九回,我也一直期盼着写这回的内容耶,为啥呢?因为自动化(automation)是非常常用、非常有用、非常精彩的一个COM 功能。由于WORD、EXCEL 等OFFICE 软件提供了“宏”的功能,就连我们使用的VC开发环境也提供了“宏”功能,更由于HTML、ASP、JSP 等都要依靠脚本(Script)的支持,更体现出了自动化接口的重要性。 如果你使用vc6.0 的开发环境,请继续阅读。 如果你使用https://www.doczj.com/doc/1c3346550.html, 2003,请阅读下一回。 二、IDispatch接口 如果是编译型语言,那么我们可以让编译器在编译的时候装载类型库,也就是装载接口的描述。在第七回文章当中,我们分别使用了#include 方法和#import 方法来实现的。装载了类型库后,编译器就知道应该如何编译接口函数的调用了---这叫“前绑定”。但是,如果想在脚本语言中使用组件,问题就大了,因为脚本语言是解释执行的,它执行的时候不会知道具体的函数地址,怎么办?自动化接口就为此诞生了---“后绑定”。 自动化组件,其实就是实现了IDispatch 接口的组件。IDispatch 接口有4个函数,解释语言的执行器就通过这仅有的4个函数来执行组件所提供的功能。IDispatch 接口用IDL 形式说明如下:(注1) [ object, uuid(00020400-0000-0000-C000-000000000046), // IDispatch 接口的 IID = IID_IDispatch pointer_default(unique) ] interface IDispatch : IUnknown { typedef [unique] IDispatch * LPDISPATCH; // 转定义IDispatch * 为 LPDISPATCH HRESULT GetTypeInfoCount([out] UINT * pctinfo); // 有关类型库的这两个函数,咱们以后再说 HRESULT GetTypeInfo([in] UINT iTInfo,[in] LCID lcid,[out] ITypeInfo ** ppTInfo);

框架讲解制作步骤

大部分框架网页出现在后台,管理系统的界面 制作步骤: 方法一:新建html ,插入--html-框架-选择其中一项 方法二:自定义框架 ①直接拖动边框可实现增加框架页面 ②反之也可以删除框架页面 ③按住ALT+SHIFT可实现选择其中的一个框架页面操作,可以拖拽其中的一个页 面 托错了,为什么撤销不了,是因为没有选中最外围的框架,即大框架 注意保存顺序: 保存的时候会保存四张页面,但是你要弄清楚保存的是哪个页面,为避免保存时不清楚那个是哪个的问题,保存的时候要能够给框架页面起名字不会无法在主框 架页嵌入不了页面,先保存三张内页,再保存框架页,以上两个保存顺序最好不要 颠倒 如何给框架命名:①在窗口---框架打开框架视图,这时的框架在程序的右下角; ②在框架视图上点击要命名的框架页,再在属性框架名称上输入框架名称,再在编 辑区域上相应的地方点击刚才命名的框架就好。 想要边框完全消失,就要设置边框为0,想要边框固定,那就框架四个页面都为否,想要页面不滚动,那就将框架的页面的滚动设置为否 框架页内部实现的超级链接,给要在显示的区域框架起名字,id =in和name=in 首页

<body> </body> 嵌入式框架页面,表格布局 在右侧单元格内插入代码自己敲,包括超链接时的目标in Src初始化界面,也就是第一次加载的页面 Width ,height 嵌入式的框架页面的宽度和高度

用C创建COM组件全过程

本文详细阐述如何用C#创建COM组件,并能用VC6.0等调用。并附有完整测试通过的代码。该功能总体看来很简单。可是我在第一次用C#做COM的时候,痛不欲生。因为很少有人写这类文章。而且就算有代码也是乱帖。根本是让人误入歧途。后来在C# help上面看一个老外写的文章(上面有一个完整的SQL SERVER实例),才完成该功能。拿来分享。 开发工具:VS2008 VS2008命令提示符(呵呵,这个你应该可以找到在什么地方吧) 附:本文适用任何VS系列工具。 在用C#创建COM组件时,一定要记住以下几点: 1:所要导出的类必须为公有; 2:所有属性、方法也必须为公有; 3:要导出的属性、方法必须用接口方式;如果没有在接口中声明,即使该方法(属性)为公有,也不能正常导出到COM。但他们可以被别的.NET程序所使用; 4:所有的事件也必须用接口方式; 现在我们开始正题: 一、新建一个Visual C#工程(习惯这种叫法了,现在应该叫解决方案),选择类型“类库”;我就叫MyCom吧。 二、编写导出接口。为了大家理解方便,我仅一加法操作举例。如下: 1.[Guid("154BD6A6-5AB8-4d7d-A343-0A68AB79470B")] 2.public interface MyCom_Interface 3. { 4. [DispId(1)] 5.int Add(int a, int b); 6. } Guid为全局唯一标识,可以用VS2008的命令提示符中输入:guidgen 就会出来它的窗口。在几个复选框选择最后一个Registry Format,点击New Guid,然后COPY就行了(以下如有guid的字符串,全部同样操作) [DispId(1)]为函数的标识。如果有多个函数可相应的在函数前面加[DispId(2)], [DispId(3)]… 三、创建事件接口。

C#编写COM组件示例

C#编写COM组件 1、新建一个类库项目? ? 2、将Class1.cs改为我们想要的名字? ? 问是否同时给类改名,确定?

? 3、修改Properties目录下面的AssemblyInfo.cs? ComVisible属性设置为True? ? 4、项目菜单->MyLib属性? 找到“生成”选项卡? ? 往下看,找到“为COM Interop 注册”勾上? ?

5、继续往下,找到“签名”选项卡? ? 勾上“为程序集签名”? ? 在下面的下拉框里面选择“<新建...>”? ? 6、在弹出的对话框里面,输入MyLib。。或者随便取个名字? ? 去掉使用密码保护文件的选项? ? 7、开始编码,任何一个公开的类,必须有一个I开通的接口定义? C# code using System;

using using System.Text; using ropServices; namespace MyLib { ????[ComVisible(true)] ????[Guid("2CBD3D76-35F1-4f9d-9C1B-9DBFEE412F76")] ????public interface IMyClass ????{ ????????void Initialize(); ????????void Dispose(); ????????int Add(int x, int y); ????} ????[ComVisible(true)] ????[Guid("EA2F140A-108F-47ae-BBD5-83EEE646CC0D")] ????[ProgId("MyLib.MyClass")] ????public class MyClass : IMyClass ????{ ????????public void Initialize() ????????{ ????????????//nothing todo ????????} ????????public void Dispose() ????????{ ????????????//nothing todo ????????} ????????public int Add(int x, int y) ????????{ ????????????return x + y; ????????} ????} } 8、GUID属性里面的那个字符串,在“工具”菜单下面,“创建GUID”? ? 选择Registry Format,然后复制?

COM组件

COM组件 COM(Component Object Model (组件对象模型)) COM是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。由此带来的好处是多方面的:可以将系统中的组件用新的替换掉,以便随时进行系统的升级和定制;可以在多个应用系统中重复利用同一个组件;可以方便的将应用系统扩展到网络环境下;COM与语言,平台无关的特性使所有的程序员均可充分发挥自己的才智与专长编写组件模块;等等。 COM是开发软件组件的一种方法。组件实际上是一些小的二进制可执行程序,它们可以给应用程序,操作系统以及其他组件提供服务。开发自定义的COM组件就如同开发动态的,面向对象的API。多个COM对象可以连接起来形成应用程序或组件系统。并且组件可以在运行时刻,在不被重新链接或编译应用程序的情况下被卸下或替换掉。Microsoft的许多技术,如ActiveX, DirectX以及OLE等都是基于COM而建立起来的。并且Microsoft的开发人员也大量使用COM组件来定制他们的应用程序及操作系统。 COM所含的概念并不止是在Microsoft Windows操作系统下才有效。COM并不是一个大的API,它实际上象结构化编程及面向对象编程方法那样,也是一种编程方法。在任何一种操作系统中,开发人员均可以遵循“COM方法”。 一个应用程序通常是由单个的二进制文件组成的。当编译器生成应用程序之后,在对下一个版本重新编译并发行新生成的版本之前,应用程序一般不会发生任何变化。操作系统,硬件及客户需求的改变都必须等到整个应用程序被重新生成。 目前这种状况已经发生变化。开发人员开始将单个的应用程序分隔成单独多个独立的部分,也既组件。这种做法的好处是可以随着技术的不断发展而用新的组件取代已有的组件。此时的应用程序可以随新组件不断取代旧的组件而渐趋完善。而且利用已有的组件,用户还可以快速的建立全新的应用。 传统的做法是将应用程序分割成文件,模块或类,然后将它们编译并链接成一个单模应用程序。它与组件建立应用程序的过程(称为组件构架)有很大的不同。一个组件同一个微型应用程序类似,即都是已经编译链接好并可以使用的二进制代码,应用程序就是由多个这样的组件打包而得到的。单模应用程序只有一个二进制代码模块。自定义组件可以在运行时刻同其他的组件连接起来以构成某个应用程序。在需要对应用程序进行修改或改进时,只需要将构成此应用程序的组件中的某个用新的版本替换掉即可。 COM,即组件对象模型,是关于如何建立组件以及如何通过组件建立应用程序的一个规范,说明了如何可动态交替更新组件。 使用组件的优点: 组件架构的一个优点就是应用可以随时间的流逝而发展进化。除此之外,使用组件还有一些可以使对以有应用的升级更加方便和灵活的优点,如应用的定制,组件库以及分布式组件等。使用组件的种种优点直接来源于可以将它们动态的插入或卸出应用。为了实现这种功能,所有的组件必须满足两个条件:第一,组件必须动态链接;第二,它们必须隐藏(或封装)其内部实现细节。动态链接对于组件而言是一个至关重要的要求,而消息隐藏则是动态链接的一个必要条件。 ---------------------------------------到现在为止com是一种抽象的组件的变程思想,具体的体现就是进程内的可视化的控件(ocx)与连接库(DLL),还有一种进程外的EXE组件。 按照组件化程序设计的思想,复杂的应用程序被设计成一些小的、功能单一的组件模块,这

C#编写COM组件示例

J 取稍 ■it:rosoft Visual Studio c#编写组件 3、修改 Properties 目录下面的 Assemblylnfo.cs 问是否同时给类改名,确定 「i 赳逹解决方実的目呈 □心tc 1、新建一个类库项目 悠正在重命名1个丈件°您也想在这亍对代玛元素“口皐丸汁的所有引用的项且中执行重命名吗? 「- Vi?*l M Studi 9 已安It 的49柢 Wmdowi; Offic* ^Windows 应用程序 邙类J# +習意设备 初学者工具包 ^Iindswi 校件障 .黑控制色应用程睜 口没备应用谡洋 立£氐住1工件薄 ^Outl?ok 序 -茸他语茗 + Vi lu*l Bhli C 我的崔笛 * VnuU J* + ViiukL Ctt 申攢累題机極检 対布式系卿拱方矍 +直纯顼目尖型 FKP Fyoj^cti * iftf 试顶目 用于创建c?食库(丑“的項自 取目类型疋) ▼ X 1解决方秦资瀝管理器-解决方案'畑. V 為建固亘艮 ... r — J 嬉决方案“NlyLib" Cl 不项引 .-1 耳 I^Lib ■+ 宜 & 』弓I 用 电阪由臣詞心|

Visible 属性设置为True //将ComVi^bl^设置为£心^使此程序集中的类型 //对C0H 组件不可见.如果需要从口州诂问此程序集中的类型‘ //则将该类挈上的Co^Visibl^屈性设置划讣晒 L assembly : CoirJ/i sible (true)] 4、项目菜单->MyLib 属性 找到“生成”选项卡 HyLib* MyClasE. cs 应用程序 配置(E ):论 常规 - ------ 条件編 回定义: 生成束件 调试 5、继续往下,找到“签名”选项卡 勾上“为程序集签名” 在下面的下拉框里面选择“ <新建…〉 签名* 优谒分柝 6在弹出的对话框里面,输入 MyLib 。。或者随便取个名字 去掉 使用密码保护文件的选项 往下看,找到“为In terop 注册”勾上 上为11序薙签容 谱释徑名拆惡旃艾件Of) 孫迟签容后*西目将不g 匡打,也不紐进石调试.

《做框架》教学设计

《做框架》教学设计 教学目标: 知识与技能: 使学生知道三角形框架具有稳定性,并能利用三角形框架可以加固框架结构。 过程与方法:利用三角形稳定性的原理,指导学生设计、尝试设计和制作一个可以支承重物的立体框架。 情感、态度、价值观:体验动脑、动手合作做框架的必要,获得成功的喜悦。 教学重点:认识三角形具有稳定性。 教学难点:利用三角形的稳定性,设计制作一个可以支撑重物的立体框架。 教学准备: 教师:课件,三角形、长方形、立方体的模型等。 学生:三角形、长方形、立方体的模型、橡皮筋、筷子。教学过程: 一、引入 1、师出示图片(建筑工地图),仔细观察这些正在建造的建筑物和工地上的机械——塔吊、井字架是怎样的?再来看几张图片(鸟巢结构、过街通道、铁塔、海洋钻井平台),这些图片上的物体有哪些相同点?(空心的、不密封、中间可透风、像骨架一样)

2、像这种骨架式的构造在建筑学上叫框架结构。这节课,我们就一起来做框架,研究框架结构。师板书课题 二、做三角形和长方形最简单最基本的框架 1、我们从最简单的框架做起!它们分别是三角形和长方形框架。 2、做三角形框架应该没有问题,做长方形框架时,橡皮筋的缠绕方法有点讲究,老师给大家做一下示范。(教师示范缠绕橡皮筋,一边解说:先把橡皮筋绕成两圈,再拿两根筷子,交叉成直角,一根上面一根下面,把橡皮筋套在下面的筷子,绕过上面一根筷子,再套到下面一根筷子。) 3、在做好三角形和长方形框架后,把手放在框架的顶端,用手按一按,观察它们受到力的作用时有什么不同? 提问:在受力比较的时候,需要注意什么?(用适当大小的力,不要用力过大,两次用力差不多大。) 4、每个小组合作做一个三角形和一个长方形,再观察它们受到力的作用时有什么不一样? 5、汇报:大家已经把三角形和长方形框架做完了,它们在受到力的作用时有什么不同?(三角形不容易变形,比较稳固;长方形框架不稳固,容易变形) 6、为什么用3根筷子扎成的三角形框架比较稳固呢?三角形框架受到力的作用时是怎样的?(当力作用在三角形上,三角形的两边向外扩张,下面的水平杆就起到拉力的作用,

word制作组织结构框架步骤

Word快速制作组织结构图 在用Word编辑公司的文件时,常常需要插入如图1所示的组织结构图。 其实利用Word自身的功能即可快速制作出标准的组织结构图。 制作步骤: 1、执行“插入→图片→组织结构图”命令,先在文件中插入一个如图2所示的基本结构图,并展开“组织结构图”工具条(参见图2)。

2、选中下面其中的一个框图,按下Del键,将多余的一个框图删除。 注意:在删除框图时,系统会智能化地删除相应的连接线。 3、选中最上面框图,按“组织结构图”工具条上的“插入形状”旁的下拉按钮,在随后出现的下拉列表中,选“助理”选项,添加“经理助理”框图。 4、再选中下面其中一个,右击,选“下属”选项,增加一个“下属”框图;选中这个“下属”框图,右击,在随后弹出的快捷菜单中,选“同事”选项,增加若干个“同事”框图(如图1)。 注意:右击框和按“插入形状”旁的下拉按钮均能达到同样的添加目的。 5、仿照上面的操作,完成整个框图的添加和删除。 6、输入相应的文字,并设置好字体、字号、字符颜色等。 注意:如果多个框图的字符格式相同,可以先设置好其中一个,然后用“格式刷”复制。 7、选中组织结构图,按“组织结构图”工具条上的“版式”旁的下拉按钮,在随后出现的下拉列表中,选中“调整组织结构图以适应内容”选项,让“画布”与制作完成的结构图相适应。 至此,一个较为复杂的“组织结构图”就制作完成了(如图1)。 注意:①如果你对“组织结构图”的格式不在满意,可以这样调整:选中最上面一个框图(也可以是下面某一个框图),按“组织结构图”工具条上的“版式”旁的下拉按钮,在随后出现的下拉列表中,选中一种版式(如“右悬挂”),版式即刻被调整(如图3)。

COM组件三个最基本的接口类和使用COM库的三种方法

COM组件三个最基本的接口类//VC6中使用COM库的三种方法 COM组件有三个最基本的接口类,分别是IUnknown、IClassFactory、IDispatch。 COM规范规定任何组件、任何接口都必须从IUnknown继承,IUnknown包含三个函数,分别是QueryInterface、AddRef、Release。这三个函数是无比重要的,而且它们的排列顺序也是不可改变的。QueryInterface用于查询组件实现的其它接口,说白了也就是看看这个组件的父类中还有哪些接口类,AddRef用于增加引用计数,Release用于减少引用计数。引用计数也是COM中的一个非常重要的概念。大体上简单的说来可以这么理解,COM组件是个DLL,当客户程序要用它时就要把它装到内存里。另一方面,一个组件也不是只给你一个人用的,可能会有很多个程序同时都要用到它。但实际上DLL只装载了一次,即内存中只有一个COM组件,那COM组件由谁来释放?由客户程序吗?不可能,因为如果你释放了组件,那别人怎么用,所以只能由COM组件自己来负责。所以出现了引用计数的概念,COM维持一个计数,记录当前有多少人在用它,每多一次调用计数就加一,少一个客户用它就减一,当最后一个客户释放它的时侯,COM知道已经没有人用它了,它的使用已经结束了,那它就把它自己给释放了。引用计数是COM编程里非常容易出错的一个地方,但所幸VC的各种各样的类库里已经基本上把AddRef的调用给隐含了,在我的印象里,我编程的时侯还从来没有调用过AddRef,我们只需在适当的时侯调用Release。至少有两个时侯要记住调用Release,第一个是调用了QueryInterface以后,第二个是调用了任何得到一个接口的指针的函数以后,记住多查MSDN 以确定某个函数内部是否调用了AddRef,如果是的话那调用Release的责任就要归你了。IUnknown的这三个函数的实现非常规范但也非常烦琐,容易出错,所幸的事我们可能永远也不需要自己来实现它们。 IClassFactory的作用是创建COM组件。我们已经知道COM组件实际上就是一个类,那我们平常是怎么实例化一个类对象的?是用…new?命令!很简单吧,COM组件也一样如此。但是谁来new它呢?不可能是客户程序,因为客户程序不可能知道组件的类名字,如果客户知道组件的类名字那组件的可重用性就要打个大大的折扣了,事实上客户程序只不过知道一个代表着组件的128位的数字串而已,这个等会再介绍。所以客户无法自己创建组件,而且考虑一下,如果组件是在远程的机器上,你还能new出一个对象吗?所以创建组件的责任交给了一个单独的对象,这个对象就是类厂。每个组件都必须有一个与之相关的类厂,这个类厂知道怎么样创建组件,当客户请求一个组件对象的实例时,实际上这个请求交给了类厂,由类厂创建组件实例,然后把实例指针交给客户程序。这个过程在跨进程及远程创建组件时特别有用,因为这时就不是一个简单的new操作就可以的了,它必须要经过调度,而这些复杂的操作都交给类厂对象去做了。IClassFactory最重要的一个函数就是CreateInstance,顾名思议就是创建组件实例,一般情况下我们不会直接调用它,API函数都为我们封装好它了,只有某些特殊情况下才会由我们自己来调用它,这也是VC编写COM 组件的好处,使我们有了更多的控制机会,而VB给我们这样的机会则是太少太少了。 IDispatch叫做调度接口。它的作用何在呢?这个世上除了C++还有很多别的语言,比如VB、VJ、VBScript、JavaScript等等。可以这么说,如果这世上没有这么多乱七八糟的语言,那就不会有IDispatch。:-) 我们知道COM组件是C++类,是靠虚函数表来调用函数的,对于VC来说毫无问题,这本来就是针对C++而设计的,以前VB不行,现在VB也可以用指针了,也可以通过VTable来调用函数了,VJ也可以,但还是有些语言不行,那就是脚本语言,典型的如VBScript、JavaScript。不行的原因在于它们并不支持指针,连指针都不能用还怎么用多态性啊,还怎么调这些虚函数啊。唉,没办法,也不能置这些脚本语言于不顾吧,现在网页上用的都是这些脚本语言,而分布式应用也是COM组件的一个主要市场,它不得不被这些脚本语言所调用,既然虚函数表的方式行不通,我们只能另寻他法了。时势造英雄,IDispatch应运而生。:-) 调度接口把每一个函数每一个属性都编上号,客户程序要调用这些函数属性的时侯就把这些编号传给IDispatch接口就行了,IDispatch再根据这些编号调用相应的函数,仅此而已。当然实际的过程远比这复杂,仅给一个编号就能让别人知道怎么调用一个函数那不是天方夜潭吗,你总得让别人知道你要调用的函数要带什么参数,参数类型什么以及返回什么东西吧,而要以一种统一的方式来处理这些问题是件很头疼的事。IDispatch接口的主要函数是Invoke,客户程序都调用它,然后Invoke再调用相应的函数,如果看一看MS的类库里实现Invoke的代码就会惊叹它实现的复杂了,因为你必须考虑各种参数类型的情况,所幸我们不需要自己来做这件事,而且可能永远也没这样的机会。:-) //////////////////////////////////////////////////////////////////////////////// 本文所用的程序框架均为对话框模式的MFC EXE工程。在编程前,首先要确定待操作的代码组件是否已经在系统中注册。如果代码组件没有注册,可以通过Windows"System目录下的regsvr32. exe程序对其进行注册。

相关主题
相关文档 最新文档