×

网上少有的VC++之COM编程教程-天道的实地培训教程哦


[color=]课程的大体目录:


[color=]3.Com开发之第一个ATL程序


[color=]4.Com开发之MFC调用Com接口

[color=]5.Com开发之MFC调用Com接口

[color=]6.Com开发之MFC调用Com接口

[color=]7.Com开发之MFC调用Com接口

[color=]8.Com开发之MFC调用Com接口

[color=]9.Com开发之ATL框架详解

[color=]10.Com开发之MFC实现自动化组件

[color=]11.Com开发之脚本调用Com的双接口

[color=]12.Com开发之MFC调用IDispatch

[color=]13.Com开发之MFC调用IDispatch

[color=]14.Com开发之MFC包装类的使用

[color=]15.Com开发之错误信息处理

[color=]16.Com开发之错误信息处理

[color=]17.Com开发之错误信息处理

[color=]18.Com开发之回调事件通知

[color=]19.Com开发之回调事件通知

[color=]20.Com开发之连接点

[color=]21.Com开发之连接点

[color=]24.VB测试ADO部件

[color=]25.VB测试ADO对象

[color=]26.VC使用ADO访问数据库

[color=]27.数据库建模工具的使用

[color=]28.ADO点Net测试SQL2005数据库设计

[color=]29.ADO点Net测试SQL2005数据库设计

[color=]30.ADO点Net测试SQL2005数据库设计

[color=]31.ADO点Net测试SQL2005数据库设计

[color=]32.C++点Net基础应用视频

[color=]33.C++点Net基础应用视频

[color=]34.第一个ATLCOM编程

[color=]35.第一个ATLCOM编程

[color=]36.第一个自定义ActiveX控件

[color=]37.第一个自定义ActiveX控件

[color=]项目源代码:



[color=]贴一下

[color=]// Err.cpp : Implementation of CErr

[color=]#include "stdafx.h"

[color=]#include "FirstATL.h"

[color=]#include "Err.h"



[color=]/////////////////////////////////////////////////////////////////////////////

[color=]// CErr



[color=]STDMETHODIMP CErr::InterfaceSupportsErrorInfo(REFIID riid)

[color=]{

[color=]        static const IID* arr[] =

[color=]        {

[color=]                &IID_IErr

[color=]        };

        for (int i=0; i

[color=]        {

                if (InlineIsEqualGUID(*arr,riid))

[color=]                        return S_OK;

[color=]        }

[color=]        return S_FALSE;

[color=]}





[color=]// 最简单形式的错误表现方式

[color=]STDMETHODIMP CErr::Div1(long n1, long n2, long *pResult)

[color=]{

[color=]        // TODO: Add your implementation code here

[color=]        if (0==n2)

[color=]                return E_INVALIDARG;

[color=]        *pResult = n1 / n2;

[color=]        return S_OK;

[color=]}



[color=]// 使用 IErrorInfo 接口方式的原理性代码

[color=]STDMETHODIMP CErr::Div2(long n1, long n2, long *pResult)

[color=]{

[color=]        // TODO: Add your implementation code here

[color=]        if (n2)

[color=]        {

[color=]                *pResult = n1 / n2;

[color=]                return S_OK;

[color=]        }

[color=]        HRESULT hr;

        CComQIPtr  spCEI;

[color=]        hr = ::CreateErrorInfo(&spCEI);

[color=]        if (!spCEI)

[color=]                return E_FAIL;



[color=]        spCEI->SetGUID(IID_IErr);  // 如果是系统定义的错误也可以使用 GUID_NULL

[color=]        LPOLESTR pProgID = NULL;

[color=]        hr = ::ProgIDFromCLSID(CLSID_Err,&pProgID);

[color=]        if (SUCCEEDED(hr) && pProgID)

[color=]        {

[color=]                spCEI->SetSource(pProgID); // 设置错误源,也就是组件的 ProgID

[color=]                ::CoTaskMemFree(pProgID);

[color=]        }

[color=]        // 上面是通用的方法,其实你当然知道正在书写的组件的 ProgID 了

[color=]        // 所以不用动态取得 ProgID 也可. 你可以这样书写

[color=]        // spCEI->SetSource( L"FirstATL.Err.1" ); ProgID 可以在 rgs 文件中看到

[color=]        // 如果你的组件同时提供了帮助文件,那么就可以:

[color=]        //        spCEI->SetHelpContext( 0 );                        // 设置帮助文件中的主题号

[color=]    //        spCEI->SetHelpFile( L"xxx.hlp" );        // 设置帮助文件的文件名

[color=]        spCEI->SetDescription( L"除数不能为0" );        // 设置错误的文字描述

        CComQIPtr  spErrInfo = spCEI;        // QueryInterface 得到 IErrorInfo

[color=]        if( spErrInfo )

[color=]                ::SetErrorInfo( 0, spErrInfo );                // 这时调用者就可以得到错误信息了



[color=]        return E_FAIL;

[color=]}



[color=]// 使用 CComCoClass::Error() 方式,便捷地设置错误信息

[color=]STDMETHODIMP CErr::Div3(long n1, long n2, long *pResult)

[color=]{

[color=]        // TODO: Add your implementation code here

[color=]        if (0==n2)

[color=]                return Error(L"除数不能为0");

[color=]        *pResult = n1 / n2;

[color=]        return S_OK;


[color=]}


解压密码:www.lthack.com

[color=]下载地址

本帖隐藏的内容


http://pan.baidu.com/share/link?shareid=1080938605&uk=3073355117




月舞

写了 5 篇文章,拥有财富 22,被 0 人关注

您需要登录后才可以回帖 登录 | 网赚注册
B Color Link Quote Code Smilies

成为第一个吐槽的人

联系QQ:1150388920|长沙钢琴培训|网站地图|创富吧网赚论坛 |湘ICP备18012331号
Powered by 创富吧   © 2001-2019 Comsenz Inc.
返回顶部