第18章 自动化
第十八章运动技能的学习-精品
35
三、影响技能迁移的因素
(一) 个人因素
1.学习的态度 2.学习的目标 3.认知结构 4.认知技能与策略 5.练习者的心理定势
36
(二)客观因素
1.技能间的相似性 2.有效的指导与示范
37
四、迁移的原则
1.在技能学习的开始阶段中,概念和策略性因素的迁移 是很大的,因此应指导学生以获得最大的迁移。 2.在运动技能学习的后期,即运动模式的获得阶段,不 应鼓励练习者从某些相似的技能中进行迁移学习,此时是 学习参数的选择过程而不是模式的获得过程,每个相似的 动作都有着不同的选择参数。 3.应强调对未来技能的迁移。 4.指出技能间的相似性。
终处于运动状态条件下进行的技能。 封闭性运动技能的环境背景特征是稳定的,也就是说环
境背景特征在技能操作过程中不会发生位置上的变化。
7
封闭—开放性运动技能分类
8
2. 连续性、不连续性和系列性技能
根据动作操作过程中的连贯程度可将动作分为连续性、 不连续性和系列性技能。这里的“系列”意味着动作是由 多个动作组成的,各环节之间的节奏是获得成功的关键。 学习系列技能多采用分解练习,逐步将个别技能依次逐渐 组合起来形成一个大的整体技能,就像很自然地完成一个 单个动作一样。
9
连续性--不连续性运动技能分类
10
3. 低策略技能和高策略性技能
低策略性技能是指动作操作成功的决定因素是动作 本身的质量,对该做什么动作的知觉和决策作用几乎 可以忽略。例如举重、游泳、体操等。
高策略性技能,这类技能的本身并不重要,重要的 是在某种情况下做何种动作,即决策做什么动作是最 关键的。
5
二、运动技能学习过程的变化特征
1、运动技能是后天习得的 2、运动技能的学习从意识性向无意识过渡 3、运动程序的作用 4、动作技能的自动化 5、能量消耗的节省化 6、觉察错误能力的逐步提高
Chapter 18 新能源技术 《电气工程及自动化专业英语》课件
2.生词与短语
Chapter 18 新能源技术
60. nonrenewable 不可再生
75.
61. extraction n
提取,萃取 76.
62. Philippine n
104. guarantee v
96. national territory area
97. 积
国土面
兆 相当煤吨数 稻草、麦秆 木柴 可持续的 照明 东京议定书 保障
Chapter 18 新能源技术
3.难句翻译
[1]. In terms of economic value …… reaching US $23 billion or €18 billion. (p177)
osmotic pressure 渗透压
fresh water
淡水
Chapter 18 新能源技术
90. semi permeable membrane 半透膜 97. trillion n
91. reverse osmosis filter
98. tce
92.
反渗透过 99. straw n
滤器
菲律宾
77.
63. replenishment n 补给,补充 78.
64. groundwater n 地下水
79.
65. trivial a.
微不足道的 80.
66. plate tectonic
板块构造
67. oceanic ridge
洋脊
81.
68. divergent a. 分歧的,发散的 82.
18-19-1线性代数复习提纲-自动化(1)
2018-2019-1《线性代数》课外练习题18自动化2018-11-22一、考试题目类型:单项选择、填空、计算、解方程、分析题 考试时间: 120分钟,总分:100分 二、考试要点(将来划分为:基础训练、强化练习等模块) 第一章 行列式A 熟练求逆序数;B 熟练求行列式的值;D 、会利用行列式的代数余子式来按行或按列展开行列式;E 、会利用克拉默法则求解线性方程组;F 、熟练利用行列式六个主要性质对行列式化简。
1. 设按自然数从小到大为标准排列,则排列4753216的逆序数是 。
2. 排列2 4 ⋅ ⋅ ⋅ (2n )1 3 ⋅ ⋅ ⋅ (2n -1); 的逆序数为: 。
3. 0000020ka b c d e f gh=( ) 4. 若111221222a a a a =,则121122213030031a a a a --的值为( )。
4. 计算行列式(1)efwfbfye wy byxexw xb---,(2)111122222111122222-+-+x x y y,(3)000000a bc d e f g h kl,(4)aaD n 11⋅⋅⋅=, 其中对角线上元素都是a , 未写出的元素都是0;7.求行列式的余子式相关问题:如n 阶行列式的n-1阶余子式共有多少个? 8. 某个元素的余子式是什么?行列式如何用其余子式来表示等问题。
9、n 阶行列式的n-1阶余子式共有( )个,n-2阶余子式共有( )个,10、已知四阶行列式D 中第2行元素依次为2,-1, 0,1, 它们的余子式分别为5, 3, 4,-7 则D 的值为 。
11. 当系数行列式不等于零时,可用克拉默法则求解线性方程组的解,这样求得的解一般是唯一一组解。
12. 计算行列式10020020100000002011L L L M NM M M L L解答:按最后一列展开,2010*20092010202011*2011*(1)2010!2011!201000=-=L L MNM ML13. 计算行列式的值 2222222222222222)3()2()1()3()2()1()3()2()1()3()2()1(++++++++++++d d d d c c c cb b b b a a a a 解1. 2222222222222222)3()2()12()3()2()12()3()2()12()3()2()12(++++++++++++++++=d d d d d c c c c c b b b b ba a a a a 左边 9644129644129644129644122222141312++++++++++++---d d d d c c c c b b b b a a a a c c c c c c964496449644964422222++++++++d d dd c c c cb b b ba a a a 分成二项按第二列964419644196441964412222+++++++++d d d c c c b b b a a a949494949464222224232423dd c c b b a a c c c c c c c c ----第二项第一项6416416416412222=+d dd c c c b b b a a a解2 444444422222220001a d a c ab a a d ac a b a ad a c a b a---------=左边 =)()()(222222222222222a d d a c c a b b a d a c a b a d a c a b ---------=)()()(111))()((222a d d a c c a b b ad ac ab a d ac a b ++++++---=⨯---))()((a d a c a b)()()()()(00122222a b b a d d a b b a c c a b b bd b c a b +-++-++--+=⨯-----))()()()((b d b c a d a c a b)()()()(112222b d a b bd d b c a b bc c ++++++++ =))()()()((d b c b d a c a b a -----))((d c b a d c +++-14.15. 计算行列式的值解答:).1(!1∑=+n k kkn a nn a aaaaaa a a a a a a a a a Dnn nn nn n n n+-+++=----121121121121121ΛΛMM M M ΛΛ解:将原行列式的每一列拆成两个子列,共可构成n 2个行列式,这些行列式大部分为零,只有n+1个不为零。
第18章S7-1200设备更换和备件兼容性
设备更换和备件兼容性18 D.1用 V4.2.x CPU 更换 V3.0 CPU要将 V3.0 CPU 更新到 V4.2.x CPU,必须替换该 CPU 硬件。
不能通过固件更新将 V3.0CPU 更新到 V4.2.x CPU。
在 STEP 7 项目中,可以用 V4.2.x CPU 替换 V3.0 CPU (页 178) 并使用现有为 V3.0CPU 设计的 STEP 7 项目。
用 V4.2.x CPU 替换 V3.0 CPU 时,最好同时检查所连接的信号和通信模块的固件更新(页 155),并执行固件更新。
说明在 STEP 7 中无法将设备从 V4.2.x 替换为 V3.0可以用 V4.2.x CPU 替换 V3.0 CPU,但下载组态后,无法用 V3.0 CPU 替换 V4.2.xCPU。
若要查看或使用现有的 STEP 7 V3.0 项目,在更换设备之前需先将您的 STEP 7V3.0 项目归档。
请注意,如果您尚未下载替换之后的设备组态,您可以撤消替换。
但下载之后,便无法撤消从 V3.0 到 V4.2.x 的替换操作。
需要注意两个 CPU 版本之间的一些组态和运行区别:设备更换和备件兼容性D.1 用 V4.2.x CPU 更换 V3.0 CPU更新 STEP 7 项目不能直接将 STEP 7 V11 或 V12 项目升级为 STEP 7 V15。
必须首先将这些项目升级至STEP 7 V13 SP1 或 STEP 7 V13 SP2,然后基于这些项目升级至 STEP 7 V15。
警告从旧版本 STEP 7 复制粘贴程序逻辑时的风险从旧版本 STEP 7(例如 STEP 7 V12)复制程序逻辑到 STEP 7 V15中可能导致程序执行出现意外或者编译失败。
不同版本的 STEP 7执行程序元素的方式不同。
如果从旧版本粘贴内容到 STEP 7 V15后进行了更改,编译器不会一直检测相关差异。
如不修正程序,执行不可预测的程序逻辑可能导致严重的人员伤害甚至死亡。
18.4.2利用UI Automation实现GUI自动化测试[共3页]
/autonomy.html
第 18 章 测试工具的原理及制作 381
的脚本调用 IE 浏览器访问笔者的博客:
Dim IE ' 创建 IE 对象 Set IE = CreateObject("InternetExplorer.Application") ' 设置 IE 浏览器,并导航到指定页面 With IE .left=200 .top=200 .height=400 .width=400 .menubar=0 .toolbar=1 .statusBar=0 .navigate "/testing_is_believing" .visible=1 End With Do while IE.busy loop Set IE = Nothing WScript.Quit(0)
Байду номын сангаас
18.4.2 利用 UI Automation 实现 GUI 自动化测试
UI Automation 是一个新的用于自动化测试的技术,随着.NETFX 3.5 的发布而发布。UI Automation 是在 MSAA(Microsoft Active Accessibility)基础上建立的。
MSAA 类似 DCOM 技术。技术模型是这样的,UI 程序可以暴露出一个 Interface,方便 另一个程序对其进行控制。MSAA 技术的初衷是为了方便残疾人使用 Windows 程序。比如 盲人看不到窗口,但是盲人可以通过一个 USB 读屏器连接到电脑上,读屏器通过 UI 程序暴 露出来的这个 Interface,就可以获取程序信息,通过盲文或者其他形式传递给盲人。
第18章 无菌制剂生产专用设备简介
图23-14 轧刀机构 1-凸轮收口座; 2-滚轮;3-弹簧; 4-转销;5-轧刀;
6-压瓶头
三、粉针剂生产设备
(一)粉针剂生产概述
3、分类
按包装材料分为玻璃瓶装和塑料软包装两大类, 塑料软包装又有瓶装、袋装和非瓶非袋三种类 型。其中玻璃瓶装输液较为普遍。
二、输液剂生产设备
(二)玻璃瓶装输液剂生产设备
1、胶塞清洗设备
(1)夹层罐多次蒸煮漂洗
新胶塞处理: 0.5% NaOH煮沸(30min)→ 自来水、新沸开水清洗 → 1%盐酸溶液煮沸 (30min)→ 蒸馏水洗 →蒸馏水煮沸(30min) → 过滤注射用水浸泡过夜 → 临用前,用过滤 注射用水反复漂洗数次
② 结构:由理塞振荡料斗、水平振荡输送 装置和主机组成。
图23-12 翻 边胶塞塞塞 原理图 1-螺旋槽; 2-轴套; 3-真空吸孔; 4-销; 5-加塞头; 6-翻边胶塞 图23-11 T型塞塞塞原理图 1-真空吸孔;2-弹簧;3-夹塞瓜; 4-T型塞;5-密封圈
二、输液剂生产设备
(3)玻璃输液瓶轧盖机
粉剂置于料斗中,螺杆转动时,药物被沿轴线输
送到药嘴处并落入位于送药嘴下方的药瓶中,西
林瓶完成装粉后,经过盖胶塞工位盖上胶塞。
(4)特点
螺杆分装机具有装量调整方便、结构简单、便
于维修、使用中不会产生漏粉、喷粉等优点。
三、粉针剂生产设备
2、气流分装机
(1)分装原理
利用真空吸取定量容积粉剂,再通过净化干 燥压缩空气将粉剂吹入玻璃瓶中。
冯忠良《教育心理学》(第2版)(课后习题 第18章 技能及其形成概述)【圣才出品】
第18章技能及其形成概述1.什么是技能?答:(1)技能的含义技能是指通过学习而形成的合法则的活动方式。
(2)技能的表现形式①它表现为一种活动方式,该活动方式可能是外显的、展开的动作系统,也可能是内隐的、简缩的动作系列。
②技能活动方式应表现出规则性,技能是熟练的、按照一定的规则组织起来的动作系列,不同于随机的、任意的动作组合。
(2)技能区别于知识的特点①解决的问题不同a.知识学习所要解决的是事物是什么及怎么样(陈述性知识)、做什么及怎么做(程序性知识)等问题,即知与不知的问题。
b.技能学习所要解决的是完成活动要求的动作会不会及熟不熟练的问题,即会不会做及做得怎么样的问题。
②与执行活动的关系不同a.程序性知识虽与活动动作的执行密切相关,但它仍只是一类专门叙述活动(包括心智活动)规则和方法的知识,它只是解决活动的定向依据,而不是活动方式的本身。
b.技能是一种活动方式,把技能界定为程序性知识是忽视了二者的本质区别。
要真正掌握技能,不仅要掌握某些程序性知识,而且更重要的是要通过实际操作,获得动觉经验,才有可能实现。
2.什么是操作技能?西方心理学家是如何看待操作技能的形成的?答:(1)操作技能的含义操作技能又称运动技能,是通过学习而形成的和法则的操作活动方式。
日常生活中的写字、打字、绘画;体育方面的田径、球类、体操等都属于操作技能。
(2)操作技能的形成①操作技能形成实质的理论a.操作技能形成的闭合回路理论该理论强调以下两点:第一,强调知觉痕迹。
知觉痕迹是进行正确运动的一种参照机制,该痕迹包括了对过去运动的记忆,并负责确定运动的进程。
知觉痕迹根据来自机体自身感觉系统的反馈信息及其来自外界的反馈信息,来停止或调整运动进程。
知觉痕迹因练习和恰当的结果反馈而得以加强;第二,强调记忆痕迹。
记忆痕迹负责选择和发动某一运动,它先于知觉痕迹起作用,并随练习而得以增强。
b.密特的图式理论图式理论认为,操作者可以从每一次的运动经历中抽象出四个方面的信息,并将这些重要的信息组成一套法则。
装涂生产线控制系统介绍.ppt
c、PLC构成
《
从结构上分,PLC分为固定式和组合式(模块式)
涂
两种。固定式PLC包括CPU板、I/O板、显示面板、内存
装 技 术
块、电源等,这些元素组合成一个不可拆卸的整体,一 般用于点数比较少的小型机。模块式PLC包括CPU模块、
培
I/O模块、内存、电源模块、底板或机架等,这些模块
训 教 材
可以按照一定规则组合配置,一般用于点数比较多的小 型机。
第一章 自动化控制系统
3)涂装车间控制系统组成 涂装车间同样采用三层体系结构,它们分别是:
信息层、控制层、设备层。
通过以太网、控制层网络、现场总线三层网络实 现“分散控制,集中监测”。因此,该系统相对独立 提高了系统的可靠性;同时又能通过网络保证了信息 的畅通。
以下章节将详细介绍各层网络。
第一章 自动化控制系统
第一章 自动化控制系统
2)自动化控制系统组成 针对以上原则,采用三层体系结构。充分利用网
络优势,服务器的性能优势,不但能为生产控制领域 提供稳定、可靠、实用的功能,同时还具有良好的兼 容性及开放性,可提供多种系统接口,能为企业其他 系统提供必要的、有用的数据,完成与其他系统协同 工作。
采用先进的现场总线、控制层网络、数据服务器 三层结构,发挥各自的优势,各自完成各自的功能, 使得各层适应个层的环境(硬件、软件)要求,将整 个系统的效率提到最高,同时将发生问题的可能性降 到最低。
生产执行系统也提供了一种在统一平台上集成质 量控制、文档管理、生产调度等功能的方式。
MES(Manufacturing Execution System)是车 间生产执行及信息管理的核心。
4)自动化 以太网
以太网 控制层网 现场总线
在CPCU上自动化合成 18FMISO
中国 分 类 号 : 2 3 5 R 1. TP 7. ; 8 9 7
文 献标 识 码 :A
文 章 编 号 : 0 07 1 (0 6 0 —130 1 0— 52 2 0 )30 —4 7
Au o a i y he i f FM I O n CPCU t m tc S nt ss o 。 S o
r s e tv l . I u h i p t nc o c r y ou a t matc s nt e i f c e p c ie y t Ofm c m ora e t a r t u o S i y h ss O ommon nuce — l o p lc l o o s s iu d a i ha ma e ia s n hii fu r — ub tt e r d op r c utc l o orgi a i n l”FDG— y t s s pe i l o l s n he i s ca m du e,
.
近年来 , 随着 P T显像 技术 的 发展 , E 正电 子
药物 研究 得到 了广 泛的 关 注 卜。。 目前 , 国 已 我 经拥 有 几十台 P T, 且发 展 迅 速 。 E 并 但是 能 够 临 床应 用 的 正 电 子药 物 却 很少 。 要 为 F G。 主 D 这 极 大地 制约 了 P T显像 技术 在 国 内的应用 。因 E 而迫切 需要 研制 新 的正 电子药物 。 目前 国 内 的 F 标 记 装 置 多 为 合 成 F G D 的专用 型模块 。 对 于 研制 新 型 F标记 的 正 电 这
彭 程 , 汪建 军。 朱 霖。 马云 川 , ,
(1首 都 医 科 大 学 宣 武 医 院 , 京 1 0 5 : 北 00 3
18第十八章城市轨道交通票务管理
路漫漫其修远兮,
31
吾将上下而求索
基于社会综合效益定价的思路
3.地铁系统的运输能力得以充分发挥
E=Q·α
式中: E――地铁运输能力,人; Q――地铁实际运量;人; α――合理安全系数。
路漫漫其修远兮,
计程计时票制和计次计时票制对计程票制和 计次票制车票在轨道交通付费区内的停留加 上时间限制。
实际操作中,有效时间段的设定必须使乘客 既能有充分的时间到达目的地,又不会在轨 道交通系统中停留过长的时间。
复合票制对售检票系统的自动化水平也有较 高要求。
路漫漫其修远兮,
15
吾将上下而求索
车票种类
根据有效期可以分为日票、周票、月票、年票
:共分5种情况 |Ε|>1,富于弹性;|Ε|<1,缺乏弹性;|Ε|
=1,单元弹性;|Ε|=0,无弹性;|Ε|=∞, 完全弹性。
路漫漫其修远兮,
40
吾将上下而求索
①当0 <E<1时,称价格缺乏弹性。它表示
价格的变动引起出行的需求量呈同方向变动 ,但需求量的变动率小于价格的变动率。
②当eI=0时,称价格无弹性。它表示需求
殊性以及在淡季刺激交通出行等原因, 一般每种票制都会有优惠票种。
路漫漫其修远兮,
3
吾将上下而求索
路漫漫其修远兮,
4
吾将上下而求索
固定票制
一票制,即对出行者的收费不论乘车距离 的长短,发售单一票价的车票。
全网一票制:全网车票价格一致,不限里 程,不计换成次数,一般不计时间。
分线一票制:同一条地铁线票价一致,不 同线路之间存在不同,线路与线路的换乘 按照一个固定票价收取。
VisualC++轻松入门第18章二进制码功能模块动态链接库DLL教学教案
• DLL自动化组件的开发:读者将学会使用自动化来开发DLL 组件,通过实例,掌握DLL自动化接口的开发。
• DLL的调用:通过实例实践,读者将学会调用自己开发的 DLL组件,并学会在VB Script和JavaScript中使用。
用应用程序向导创建MFC DLL项目,然后在Windows系统中 注册该DLL文件,最后使用VB Script和HTML中的 Javascript来调用该DLL的功能函数。本节的实例是开发一 个数学DLL,这个DLL封装了一些常用的数学函数,主要如 下: • 求两个数之和:传递参数为两个实数,返回值为两个参数 之和。 • 求圆的面积:传递参数是圆的半径,返回值为圆的面积。 • 求平面坐标中任意两点的距离:通过传递两个点的坐标, 返回两个点的距离。
NONAME • ??0CSocketWnd@@QAE@XZ @ 261 NONAME
18.1.4 DllMain()函数
• DLL文件不是执行文件,不能直接执行,也就是它天生就是被其他 客户程序使用的,当DLL文件被加载时,将会调用 _DllMainCRTStartup()函数,该函数调用全局对象的构造函数, 而全局对象的构造函数体中调用了全局函数DllMain()。
• DLL的调用:熟练掌握调用自己开发的DLL组件, 并掌握在VB Script和JavaScript中使用。
本章习题
• 一、填空题 • 1.COM的中文全称是________________。 • 2.DLL的中文全称是________________。 • 二、选择题 • 1.关于组件的说法,以下说法正确的是( )。 • A.组件可以降低软件的复杂度和维护成本。 • B.组件不稳定,不适合软件工程应用。 • C.组件只提供函数接口。 • D.组件安全性高,可以随意在Web浏览器中运行。 • 2.关于组件的使用,以下说法错误的是( )。 • A.组件可以在Web应用程序开发中调用。 • B.使用C++开发的组件只能使用在C++语言上。 • C.组件可以通过Web服务器前台代码调用。 • D.JAVA编写的组件可以在C++中调用。
第18章S7-1200硬件更换与兼容性
S7-1200硬件更换与兼容性18用 V4.2.x CPU 更换 V3.0 CPU要将 V3.0 CPU 更新到 V4.2.x CPU,必须替换该 CPU 硬件。
不能通过固件更新将 V3.0CPU 更新到 V4.2.x CPU。
在 STEP 7 项目中,可以用 V4.2.x CPU 替换 V3.0 CPU (页 178) 并使用现有为 V3.0CPU 设计的 STEP 7 项目。
用 V4.2.x CPU 替换 V3.0 CPU 时,最好同时检查所连接的信号和通信模块的固件更新(页 155),并执行固件更新。
说明在 STEP 7 中无法将设备从 V4.2.x 替换为 V3.0可以用 V4.2.x CPU 替换 V3.0 CPU,但下载组态后,无法用 V3.0 CPU 替换 V4.2.xCPU。
若要查看或使用现有的 STEP 7 V3.0 项目,在更换设备之前需先将您的 STEP 7V3.0 项目归档。
请注意,如果您尚未下载替换之后的设备组态,您可以撤消替换。
但下载之后,便无法撤消从 V3.0 到 V4.2.x 的替换操作。
需要注意两个 CPU 版本之间的一些组态和运行区别:更新 STEP 7 项目不能直接将 STEP 7 V11 或 V12 项目升级为 STEP 7 V15。
必须首先将这些项目升级至STEP 7 V13 SP1 或 STEP 7 V13 SP2,然后基于这些项目升级至 STEP 7 V15。
警告从旧版本 STEP 7 复制粘贴程序逻辑时的风险从旧版本 STEP 7(例如 STEP 7 V12)复制程序逻辑到 STEP 7 V15中可能导致程序执行出现意外或者编译失败。
不同版本的 STEP 7执行程序元素的方式不同。
如果从旧版本粘贴内容到 STEP 7 V15后进行了更改,编译器不会一直检测相关差异。
如不修正程序,执行不可预测的程序逻辑可能导致严重的人员伤害甚至死亡。
使用 STEP 7 V15 以下版本的 STEP 7 中的程序逻辑时,必须将整个项目升级到STEP 7 V15。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
18.3 自动化接口
自动化接口IDispatch是自动化的核心,它能完全被COM支 持,MFC或一般的C++应用程序也可以支持它。使用自动化 接口应该有两个必要条件: 组件:需要有一个具有IDispatch接口的COM类。 客户程序:使用按照标准的COM技术来获取IDispatch接口 或指针。 主要的自动化IDispatch接口有: Invoke()函数:MFC根据宏的定义的分发映射的参数来帮助 Invoke()函数调用的组件和客户程序的双方,同时,利用 一种数据驱动机制来调用组件的函数。 GetIDsOfNames()函数:该函数是得到属性或方法的名字的 索引值。
18.8.2 加入自动化代码
自动化的相关函数包含在“afxdisp.h”头文件中,因此,需要在“stdafx.h”包含 该头文件: #include <afxdisp.h> 并修改InitInstance()成员函数,代码如下: BOOL CAutoExApp::InitInstance() { AfxOleInit(); if (RunEmbedded() || RunAutomated()) { COleTemplateServer::RegisterAll(); // 组件通过COM口启动 return TRUE; } COleObjectFactory::UpdateRegistryAll(); // 组件被用户使 用 AfxMessageBox("组件注册成功!"); // 弹出提示信息 return FALSE; }
18.1 什么是VBA
Visual Basic for Applications(简称VBA)是新一代标 准宏语言,是基于Visual Basic for Windows发展而来的。 它与传统的宏语言不同,传统的宏语言不具有高级语言的 特征,没有面向对象的程序设计概念和方法。而VBA提供了 面向对象的程序设计方法,提供了相当完整的程序设计语 言。VBA易于学习掌握,可以使用宏记录器记录用户的各种 操作并将其转换为VBA程序代码。这样用户可以容易地将日 常工作转换为VBA程序代码,使工作自动化。因此,对于在 工作中需要经常使用Office套装软件的用户,学用VBA有助 于使工作自动化,提高工作效率。另外,由于VBA可以直接 应用Office套装软件的各项强大功能,所以对于程序设计 人员的程序设计和开发更加方便快捷。
18.7 封装VARIANT类型:COleVariant类
使用C风格的VARIANT类型是一件让开发者头疼的事情,但 如果能使用C++将VARIANT类型封装起来,让后继开发人员 不用重复做头疼的事是很有意义的。 大概思路是比较简单的,可以让这个类的构造函数调用API 函数VariantInit(),而析构函数则可以调用 VariantClear()。而对于每种标准类型,都可以定义一个 或若干个对应的构造函数,在VARIANT是有效的前提下,都 可以正常并自动调用构造函数。 思路虽然比较简单,不过要具体实现也是件麻烦事。不过 所幸MFC已经完成了这项工作,将这个类作为使用DAO(数 据访问对象)的子功能,DAO将会在数据库理论的相关章节 讲解。
3、 在操作系 统中注册自定 义的dll动态链 接库
4 、 使 用 非 VC应用程序调 用自定义dll
MFC自动化范例开发和部署流程
18.5.1 创建MFC DLL自动化项目
MFC DLL项目创建步骤如下: (1)单击“File”菜单,选中“New”命令,创建新的VC项目。 (2)选中“MFC AppWizad(dll)”,并将项目名称命名为 “myMFCDll”如图所示。 (3)设置MFC DLL项目的基本属性。
如前文所述,如果dll文件没有在需要调用的客户 程序的操作系统中注册,则是没有作用的,因为 客户程序并不知道该dll文件“*.dll”是什么和 放在什么目录等信息,因此,使用自定义dll文件 需要先向擦作系统注册。 以本小节的MFC自动化项目为例,在Windows系统 注册dll的步骤如下: (1)将“myMFCDll\Debug”文件夹中的 “myMFCDll.dll”文件拷贝到C盘根目录。 (2)单击“开始”,选中“运行”选项,输入运 行命令: regsvr32 C:\ myMFCDll.dll
18.5.4 使用非VC应用程序调用自定义dll
为了简单起见,本小节使用VB Script来调用该dll。操作步骤如 下: (1)在本地磁盘任何一个地方新建一个文本文档。 (2)输入该文本文档的内容,代码如下: Set obj = CreateObject("myMFCDll.Disp") // 创建一个对象obj MsgBox obj.Upper("Hello,My dear MFC!") // 调用该对象的Upper()函数 MsgBox obj.Add(3,3) // 调用该对象的Add()函数 Set obj=Nothing // 释放该对象 (3)将该文本文档改名为“testMFCDll.vbs”。 (4)运行vbs脚本。
创建MFC DLL
创建“Automation”类型的DLL
18.5.2 添加自动化类和成员函数
为了让自动化功能可以方便看到效果,本小节需要定义一个自动化的类, 并且该类具有两个基本功能: 计算两个数之和。 将大小写或纯小写字符串转换成为纯大写字符串。
添加自动化函数或方法的窗口
添加自动化函数
18.5.3 在Windows中注册自定义的dll动态链接库
18.4 MFC自动化组件
【本节实例参考18.5节】 使用MFC也可以创建自动化组件,使用MFC创建的自动化组件与普 通的MFC的差别如下: 必须具有CCmdTarget基类。 具有“*.def”源文件。 具有“*.idl”源文件。 以18.5节的实例为例,“*.def”源文件代码如下: ; myMFCDll.def : Declares the module parameters for the DLL. LIBRARY " myMFCDll " DESCRIPTION myMFCDll Windows Dynamic Link Library' EXPORTS ; Explicit exports can go here DllCanUnloadNow PRIVATE DllGetClassObject PRIVATE DllRegisterServer PRIVATE
18.8.3 添加组件类
添加组件类可以通过手工添加,也可以通过VC6.0 集成开发环境进行添加,现在需要添加的组件类 跟以前读者学过的C++自定义类不大一样,因此使 用菜单选项进行添加不容易出错。
添加WithDr()函数
添加Bl属性
18.8.4 编写客户端宏脚本
使用Office Exel作为客户端,在Excel软件中, 可以定制宏,使用宏可以运行组件。首先,必须 VB编辑器编写宏代码,如图所示。VB编辑器的操 作界面如图所示。
18.8 实例18.2-使用Excel自动化的实例 本节通过使用Office Excel的VBA宏来讲解怎么使 用自动化。开发流程如图所示。
1、 创建MFC基 于对话框程序
2、 添加自动化 代码
3、 添加
组件类
4、 编写客户 端宏脚本
使用自动化的项目开发流程
18.8.1 准备工作:创建MFC
项目创建过程如下: (1)单击“File”菜单,使用“New”命令创建VC6.0的新 项目。 (2)选中MFC应用程序项目,并命名为“AutoEx”。 (3)在MFC应用程序向导中,选择“基于对话框”的应用 程序,其他选项默认,然后单击“Finish”按钮结束应用 程序向导。 (4)删除对话框类定义和实现的文件以及集成开发环境中 的对应列表。 找到“AutoEx”在Windows操作系统下删除 “AutoExDlg.cpp”源文件和 “AutoExDlg.h”头文件,然 后在VC6.0集成开发环境中,删除文件浏览窗口中的 “AutoExDlg.cpp”源文件和“AutoExDlg.h”头文件(选 中相应的文件,按“Delete”键删除)。
18.5.5 实例小结
本节是讲解了使用VB Script来调用MFC DLL编写好的dll文件,初 学者容易弄错的地方主要有两个: 使用手动添加自动化函数:虽然使用集成开发环境添加的代码都 可以使用手动输入,理论上是成立的,但初学者容易忽略idl文件 的改写,并且在idl文件改写中容易出现语法错误。 dll文件没有在Windwos中注册:出现该问题,导致在VB Script的 定义对象语句出现错误: Set obj = CreateObject("myMFCDll.Disp") 使用MFC DLL进行自动化程序设计是有很多方便的地方的,如C++ 程序员也可以通过dll程序很方便的开发asp服务器端应用程序, 通过编写核心处理程序,并将这些程序打包成为类的成员函数的 方式,通过asp(主要是VB Script)进行调用,这样,开发Web程 序就可以将需要在页面处理的代码和一些需要复用的后台代码分 离出来。
18.6 VARIANT类型
VARIANT类型时一个结构体类型,这是一种通用的 数据类型,Invoke()函数利用该结构体对象来传 递参数和返回值信息。 Windows API中也为开发者提供了专门处理 VARIANT类型对象的函数: VariantInit():初始化VARIANT对象。 VariantClear():清除VARIANT对象。 VariantCopy():拷贝源VARIANT对象。 VariantCopyInd():释放目标VARIANT对象,并拷 贝源VARIANT对象。 VariantChangeType():改变VARIANT的类型。
18.2 为VBA与C++组件
一般而言,自动化可以分为主体和客体,主体就是自动化 应用程序,客体就是为应用程序提供自动化的组件。 一般而言,C++更适合于开发可重用模块,而VBA程序则较 适合将各个模块结合起来,因此,如果一个开发团队按照 方便性选择语言进行这样的分工则不足为奇了。使用C++进 行VBA方面的应用例子有: 可以编写一个C++程序,它可以使用Office Word的文本处 理能力。 编写一个C++程序,该程序是求出两个矩阵的乘积,而在 Office Excel里面调用它。这个应用使用Excel表格中的 VBA宏是很容易做到的。 编写一个MCF程序,用来控制Visio程序。