社区
ATL
帖子详情
那位提供一个用C++编写COM的例子
WQ
2003-07-16 11:27:43
那位提供一个用C++编写COM的例子
...全文
88
7
打赏
收藏
那位提供一个用C++编写COM的例子
那位提供一个用C++编写COM的例子
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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++
编程实例100篇
模板是
C++
的
一个
高级特性,允许创建泛型代码,即可以在多种数据类型上工作的函数或类。模板可以提高代码的通用性,减少重复工作。 异常处理是处理程序运行时错误的方式,通过try、catch和throw关键字,可以捕获并...
c++
各种小游戏(我们老师的)
【标题】:“
C++
各种小游戏(我们老师的)” 在
C++
编程领域,开发小游戏是一种非常有效的学习实践方式,尤其对于初学者来说。本资源集合包含了我们老师...对于想要探索游戏编程的
C++
初学者,这是
一个
不容错过的起点。
V
C++
编程100例
每个实例都会围绕
一个
特定的主题进行,引导学习者逐步解决实际问题。通过实践这些
例子
,初学者可以巩固理论知识,提升编程技能,并逐渐熟悉
C++
的各个方面。对于想要深入学习和掌握
C++
的开发者来说,这是一份非常宝贵...
vcruntime140.dll 问题的解决方法
在这个
例子
中,由于文件名包含“64位”,这意味着它是为64位Windows系统设计的。如果你的系统是32位,你需要寻找对应的32位版本。 3. **重新启动计算机**:安装完运行库后,通常需要重启计算机以使更改生效。 4. *...
Dev
C++
编写
程序教程
以上就是Dev
C++
编写
程序的简单示例,对于初学者来说,Dev
C++
是
一个
非常友好的编译器,使用起来也非常方便,你可以尝试使用它
编写
一些简单的程序,并逐渐学习和掌握更多的编程技巧和方法。Dev
C++
是
一个
由c语言
编写
的...
ATL
3,248
社区成员
48,529
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章