Developing COM Components using VC-ATL(1)
来源:互联网 发布:异地一半照片软件 编辑:程序博客网 时间:2024/05/18 06:58
选中 Support MFC 选择项。
在按下 Finish 和 Ok 按钮后,一个组件的框架已经建立。
二、给模型增加组件MyCom
在VC++ 菜单 Insert 中选中 New ATL Object…菜单项,出现 ATL Object Wizard 对话框。
在左边的 Category 中选择 Objects,右边的 Objects 中选中 Simple Object 项。按 Next 按钮。
三、给组件增加方法(函数) MyF1、MyF2、MyF3、MyF4
在 VC++工作平台的左边的 Workspace 的 ClassView 卡片中找到接口 IMyCom 项,按右键,在出现的快捷菜单中选择 Add Method …,出现 Add Method to Interface 对话框,在对话框中输入要增加的函数的函数名、参数和返回值类型。然后,按确认按钮退出。
函数名为: MyF1
参数:无
STDMETHODIMP CMyCom::MyF1()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
AfxMessageBox("欢迎使用我的组件");
return S_OK;
}
函数名为: MyF2
参数为:
[in] BSTR str,
[out, retval] int* val
STDMETHODIMP CMyCom::MyF2(BSTR str, int *val)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
CString sStr(str);
int n = sStr.GetLength();
*val = n;
return S_OK;
}
函数名为: MyF3
参数为:
[in] BSTR str,
[out, retval] BSTR* retstr
STDMETHODIMP CMyCom::MyF3(BSTR str, BSTR *retstr)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
CString sStr(str);
CString sRetstr = "组件收到你的信息:<" + sStr + ">/n特此告之。";
CComBSTR temp(sRetstr);
*retstr = temp;
return S_OK;
}
函数名为: MyF4
参数为:
[in] int x,
[out, retval] int* val
STDMETHODIMP CMyCom::MyF4(int x, int *val)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
*val = x+1;
return S_OK;
}
regsrv32 C:/MyProj/Debug/MyProj.dll
1
1
2,把服务器类型库导入客户
2-1在 StdAfx.h 文件中加入代码:
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#define AFX_STDAFX_H__2B646017_28AD_4CDE_9792_CB8F9A5C6B39__INCLUDED_
#pragma once
#endif // _MSC_VER > 1000
#include <afxext.h> // MFC extensions
#include <afxdisp.h> // MFC Automation classes
#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
这样在客户端的debug目录下生成组件的类型库头文件(.tlh)和类型库实现文件(.tli)。
//
#include "MyExe.h"
#include "MyExeDlg.h"
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
HRESULT hr=CoInitialize(NULL);
4,获得服务器组件的 CLSID
CLSID clsid;
hr=CLSIDFromProgID(OLESTR("MyProj.MyCom"),&clsid);
5,创建 COM 服务器组件实例,获得组件接口指针
IMyCom *ptr = NULL;
hr=CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,__uuidof(IMyCom),(LPVOID*)&ptr);
6-1,在OnMyF1()中使用 COM 对象 MyF1()
ptr->Release(); // 释放实例
6-2,在OnMyF2()中使用 COM 对象 MyF2()
char str[32];
6-3,在OnMyF3()中使用 COM 对象 MyF3()
AfxMessageBox(ptr->MyF3("abcdefg"));
6-4,在OnMyF4()中使用 COM 对象 MyF4()
7,终止 COM 库
CoUninitialize();
用 MFC AppWizard ( exe ) 创建一个基于对话框的应用程序 MyExe。
在对话框中放置四个按钮,分别为 MyF1、MyF2 、MyF3和 MyF4。
用 ClassWizard 生成单击按钮的四个响应函数 OnMyF1() 、OnMyF2() 、OnMyF3()和 OnMyF4()。,创建一个基于对话框的客户程序。
2,把服务器类型库导入客户工作平台。
3,初始化 COM 库。
4,获得服务器的 GLSID。
5,创建 COM 组件服务器组件的实例。
6,使用 COM 对象。
7,终止 COM 库。创建 COM 组件客户
一、创建模型(工程) MyProj
在VC++6.0工作平台中,点击菜单 File 下的 New 菜单项,在出现的 New 对话框中选中 Projects 卡片,在列表框中选中 ATL COM AppWizard(活动模板库组件导航)。 一、创建一个模型(工程) MyProj。
二、给模型(工程)增加一个组件 MyCom。
三、给组件增加方法(函数) MyF1、MyF2、MyF3、MyF4。
- Developing COM Components using VC-ATL(1)
- Developing COM Components using VC-ATL(1)
- Developing COM Components using VC-ATL(2)
- Developing COM Components using VC-ATL(3)
- Developing COM Components using VC-ATL
- Developing COM Components using VC-ATL(1-2)
- Developing COM Components using VC-ATL(2-2)
- Developing COM Components using VC-ATL(2-3)
- Developing COM Components using VC-ATL(2-4)
- Developing COM Components using VC-ATL(2-5)
- Developing COM Components using VC-ATL(2-6)
- Developing COM Components using VC-ATL(2-7)
- Developing COM Components using VC-ATL(3-2)
- Developing COM Components using VC-ATL(3-3)
- Developing COM Components using VC-ATL(3-4)
- Developing COM Components using VC-ATL(3-5)
- Developing COM Components using VC-ATL(3-6)
- Developing COM Components using VC-ATL(3-7)
- ASP.NET编程中的十个小技巧
- 代理(delegate)问题
- eclipse 快捷键大全
- ASP.NET Web服务如何工作?
- 可能我一开始就错了
- Developing COM Components using VC-ATL(1)
- 在Vista上取消安全性询问
- ASP.NET 2.0页面框架的几处变化
- Asp.NET 生成静态页
- 无法忍受这个速度,决定搬家
- sharepoint是什么?
- November 6 2006
- 本blog暂停,转移到http://jeffen2006.javaeye.com
- ASP.NET程序中常用的三十三种代码