- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 3 在VC和VB中使用COM组件 内容 3.1 调用COM组件的过程 3.2 在VC中创建COM组件客户 3.3 在VB中使用COM组件 * 3.1 调用COM组件的过程 Windows系统下有大量的组件可供使用,前面我们所创建的MyCom组件也注册好了,因此也可以使用,使用COM组件过程是一个典型的客户/服务器(Client/Server)方式。COM组件含有被调用的接口,它是提供服务的,因此是服务方。 Windows系统下的组件如同一大堆积木,不同的人建房子所使用的积木也不一样,因此不同的人使用的COM组件也不一样,但它们有共同的使用过程:首先客户程序要获取包含组件的服务器(如MyCom.dll就是提供了字符串转化的服务器),然后让服务器创建组组件相关联的类工厂,再由类工厂实例化组件,最后通过接口来使用组件。 * 3.2 在VC中创建COM组件客户 1.打开上一节的MyCom工程后,选择File|New菜单,将弹出的New对话框切换到Projects选项卡后,选择MFC AppWizard(exe)项,在Project name编辑框中输入ComClient工程名称,并选择Add To Current Workspace单选择按钮。如图8所示。 图8 在MyCom工作区中添加MyComClient工程 * 3.2 在VC中创建COM组件客户(2) 2.单击“OK”按钮进入向导下一步骤,选择单文档应用程序类型。完后按“Finish”按钮生成ComClient工程(这是在一个工作区中包含两个工程的情况)。 3.在对话框资源IDD_COMCLIENT_DIALOG中添加图9所示的控件,这些控件的属性如表2所示。 图9对话框界面设计 * 3.2 在VC中创建COM组件客户(3) 控件类型 属性 值 对应成员变量 静态文本控件 ID IDC_STATIC ? ? Caption 源 串 ? ? ID IDC_STATIC ? ? Caption 目标串 ? 编辑框控件 ID IDC_EDIT1 m_strSource ? ID IDC_EDIT2 m_strDestion 按钮控件 ID IDOK ? ? Caption 退出 ? ? ID IDC_BUTTON1 ? ? Caption 转换 ? 表2控件的属性设置与对应的成员变量设置 return * 3.2 在VC中创建COM组件客户(4) 4.在工程中添加Istr类 按CTR+W打开类向导对话框后,在当前的工程中加入COM中的一个类。方法为在类向导的Message Map选项卡下,单击“Add Class”按钮,弹出选项“From a Type Library”如图10。单击“From a Type Library”选项,出现图11的对话框,把Mycom.tlb选上,又出现图12的对话框,把Istr类选上,按“OK”按钮,这样就把创建的MyCom.tlb中的类Istr加入到该工程中。 图10从类型库中增加类 * 3.2在VC中创建COM组件客户(5) 返回 图11 选择Mycom.tlb 图12选择类型库中的IStr类 * 3.2 在VC中创建COM组件客户(6) 5.主要代码 (1)在应用程序类的InitInstance()函数中增加初始化OLE的代码 BOOL CComClientApp::InitInstance() { AfxEnableControlContainer(); AfxOleInit(); //初始化OLE ……} (2)“转换”按钮的实现代码 void CComClientDlg::OnButton1() { IStr m_string; if(!m_string.CreateDispatch(MyCom.str.1)) //初始化COM库 MessageBox(Create UserInfo error); UpdateData(true); //将前台数据传到后台 BSTR bstrDestion=SysAllocString(L); m_string.First
文档评论(0)