社区
ATL
帖子详情
那位提供一个用C++编写COM的例子
WQ
2003-07-16 11:27:43
那位提供一个用C++编写COM的例子
...全文
126
7
打赏
收藏
那位提供一个用C++编写COM的例子
那位提供一个用C++编写COM的例子
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qrlvls
2003-10-31
打赏
举报
回复
潘老师的书上就有
rockrabbit
2003-10-31
打赏
举报
回复
谢谢,我也比较感兴趣。
nilm
2003-07-16
打赏
举报
回复
http://www.codeproject.com/com/com_server_without_mfc_atl.asp
WQ
2003-07-16
打赏
举报
回复
不用MFC和ATL
清泉ys
2003-07-16
打赏
举报
回复
http://www.vchelp.net/vchelp/type.asp?class_id=1&type_id=29
BoxFan
2003-07-16
打赏
举报
回复
//IServer.h
#include <iostream.h>
#include <objbase.h>
interface IX:IUnknown
{
virtual void __stdcall Fx()=0;
};
interface IY:IUnknown
{
virtual void __stdcall Fy()=0;
};
interface IZ:IUnknown
{
virtual void __stdcall Fz()=0;
};
// {76CFA0E6-60B0-4854-9A33-9FD3EC6E2494}
static const IID IID_IX =
{ 0x76cfa0e6, 0x60b0, 0x4854, { 0x9a, 0x33, 0x9f, 0xd3, 0xec, 0x6e, 0x24, 0x94 } };
// {C35BDC46-8F67-4ffc-969C-942F64E98725}
static const IID IID_IY =
{ 0xc35bdc46, 0x8f67, 0x4ffc, { 0x96, 0x9c, 0x94, 0x2f, 0x64, 0xe9, 0x87, 0x25 } };
// {F8F1980F-6075-4e06-83F5-C01A399B4130}
static const IID IID_IZ =
{ 0xf8f1980f, 0x6075, 0x4e06, { 0x83, 0xf5, 0xc0, 0x1a, 0x39, 0x9b, 0x41, 0x30 } };
class CA:public IX,public IY
{
public:
//IUnknown Implement
virtual HRESULT __stdcall QueryInterface(const IID &iid,void **ppv);
virtual ULONG __stdcall AddRef(){return 0;}
virtual ULONG __stdcall Release(){return 0;}
//Interface Implement
virtual void __stdcall Fx(){cout<<"FX"<<endl;}
virtual void __stdcall Fy(){cout<<"FY"<<endl;}
};
//IServer.cpp
#include "StdAfx.h"
#include "IServer.h"
extern void trace(char *pMsg);
HRESULT __stdcall CA::QueryInterface(const IID &iid,void **ppv)
{
if (iid==IID_IUnknown)
{
trace("QueryInterface return pointer to IUnknown");
*ppv=static_cast<IX*>(this);
}
else if (iid==IID_IX)
{
trace("QueryInterface return pointer to IX");
*ppv=static_cast<IX*>(this);
}
else if (iid==IID_IY)
{
trace("QueryInterface return pointer to IY");
*ppv=static_cast<IY*>(this);
}
else
{
trace("QueryInterface return pointer to null");
*ppv=NULL;
return E_NOINTERFACE;
}
reinterpret_cast<IUnknown*>(*ppv)->AddRef();
return S_OK;
}
这是我学习com时的例子
Skt32
2003-07-16
打赏
举报
回复
转载:
#include <iostream>
#import "scrrun.dll" raw_interfaces_only
int main()
{
CoInitialize(NULL);
{
try
{
Scripting::IFileSystem3Ptr fs;
fs.CreateInstance(__uuidof(Scripting::FileSystemObject));
Scripting::IFolderPtr folder;
fs->GetFolder(_bstr_t("c:\\temp"),&folder);
_variant_t vsize;folder->get_Size(&vsize);
std::cout<<"c:\\temp size:"<<(long)vsize<<" bytes"<<std::endl;
}
catch(_com_error &e)
{
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
std::cout<<"Get directory size via FileSystemObject, by masterz"<<std::endl;
std::cout<<"COM error occurred,source:"<<(LPCTSTR)bstrSource<<std::endl;
std::cout<<"Description:"<<(LPCTSTR)bstrDescription<<std::endl;
}
}
CoUninitialize();
return 0;
}
关于
C++
编写
com
和调用
com
组件的小
例子
以及个人所犯错误见解
最近在完成研究生课程面向对象方法的第一次作业
编写
一个
com
: 环境Visual Studio 2015 一、构造
COM
组件,项目名称为
Com
Zhh,过程 进入VS,选择左上角的文件,点击新建项目->Visual
C++
->ATL->ATL项目 注意在下一步中勾选支持
com
+1.0 接着你讲看到项目下有两个目录 不要着急,你只需要关注ATLProject1即...
简单实现基于
C++
的
COM
组件创建与DLL封装
简单实现基于
C++
的
COM
组件创建与DLL封装,包括组件、
COM
、
COM
组件、DLL等基本概念与关系,使用
C++
进行
COM
组件创建与DLL封装调用等的简单实现。
C++
COM
组件的
编写
COM
组件的
编写
本文
提供
一个
完全用
C++
实现的进程内(DLL)
COM
服务器,不要ATL或MFC
提供
任何支持。用这种方式
编写
COM
对象可以让你深入地洞察到
COM
处 理进程内服务器的方法以及
COM
是如何创建类工厂的。利用本文
提供
的这个简单框架你可以实现很基本的
COM
组件,如外壳扩展(Shell Extensions)等。如果你在使用过程中发现了任何问题,请将它反馈到vckb
在VS环境下使用
C++
编写
你的第
一个
COM
在VS(2022)环境下使用
C++
编写
你的第
一个
COM
VC
编写
COM
组件
提供
PHP调用
最近项目需要PHP来解析二进制数据,如果直接PHP做比较麻烦,就想到VC
编写
COM
组件来做,
提供
PHP调用。文章将介绍VC
编写
COM
组件
提供
PHP调用,实现
一个
计算两个数字相加的功能。
ATL
3,248
社区成员
48,530
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章