none
vs2005+wince6.0 ATL智能设备项目问题 RRS feed

  • 问题

  • 问题详细描述

    Vs2005+wince6.0

    1.我新建了一个ATL智能设备项目addcom

     

    2.然后在addcom中添加了ATL简单对象add,出现如下错误:

    error C2039:’UpdateRegistry’: is not a member of ‘Cadd’

    error C2065:’UpdateRegistry’: undeclared identifier

    错误均指向add.h的最后一行

    OBJECT_ENTRY_AUTO(__uuidof(add), Cadd)

    3.我将add.h中的

    #ifndef _CE_DCOM

    DECLARE_REGISTRY_RESOURCEID(IDR_ADD)

    #endif

    改为

    DECLARE_REGISTRY_RESOURCEID(IDR_ADD)

    调试成功,我也不知道可不可以这么改啊。

    4.addcom.idl中的

    interface Iadd : IDispatch{

    };

    添加代码变成

    interface Iadd : IDispatch{

         [id(1), helpstring("method iadd")] HRESULT iadd([in]int a, [in]int b, [out]int * c);

         [id(2), helpstring("method isub")] HRESULT isub([in]int a, [in]int b, [out]int * c);

    };

    5.add.h中进行声明

    public:

         STDMETHOD(isub)(int a, int b, int * c);

         STDMETHOD(iadd)(int a, int b, int * c);

    6.add.cpp中实现

    STDMETHODIMP Cadd::iadd(int a, int b, int *c)

    {

         // TODO: Add your implementation code here

         *c = a + b;

         return S_OK;

    }

    STDMETHODIMP Cadd::isub(int a, int b, int *c)

    {

         // TODO: Add your implementation code here

         *c = a - b;

         return S_OK;

    }

    调试成功,生成addcom.all

    7.新建了一个基于对话框的MFC智能设备应用程序testcom

    ①把addcom.dll拷贝到testcom根目录下面

    ②在stdafx.h中添加:

    #import "addcom.dll" no_namespace

    ③按钮响应函数中添加如下代码:

    CoInitialize(NULL);

         CLSID clsid;

         CLSIDFromProgID(OLESTR("addcom.add"),&clsid);

         CComPtr<Iadd> padd;//智能指针

         padd.CoCreateInstance(clsid);

         if(padd==NULL)

         {

             MessageBox(_T("wrong"));

             return;

         }

        int a=90;

         int b=10;

         int c,d;

         padd->_Iadd(a,b,&c);

         padd->isub(a,b,&d);

         CString result;

         result.Format(_T("结果:+%d;-%d."),c,d);

         MessageBox(result);

         padd.Release();

         CoUninitialize();

    ④运行结果输出 wrong

     

    为什么呢?

    能给一个调用成功的ATL智能设备项目和MFC智能设备项目吗?

    2010年8月27日 7:15

全部回复