我添加了一个ATL接口属性digits后,自动添加了如下代码:
STDMETHODIMP CInterface1::get_digits(long *pVal)
{
// TODO: Add your implementation code here return S_OK;
}
为什么这个方法没有返回的基本类型,如long,而是返回S_OK?
请问我以后在调用这个com组件的时候,想得到返回值,如何调用???
(我在客户程序中不想用到指针)

解决方案 »

  1.   

    STDMETHODIMP is defined as
    HRESULT __stdcall
      

  2.   

    STDMETHODIMP_(ULONG) returns a ULONG value
      

  3.   

    Defines an interface function that returns an HRESULT. It is used for method implementations.#define STDMETHODIMP     HRESULT STDMETHODCALLTYPES_OK是这样定义的:
    Name      Description        Value 
    S_OK Operation successful 0x00000000
      

  4.   

    STDMETHODIMP_(ULONG) MyMethod()
    {
        ULONG ulTest = 1000;
        return ulTest;
    }When you call MyMethod, you will get a ULONG value
      

  5.   

    STDMETHODIMP CInterface1::get_digits(long *pVal)
    {
    // TODO: Add your implementation code here return S_OK;
    }
    你真正的返回只是通过 long *pVal 来返回的。比如 *pVal = 1;
      

  6.   

    STDMETHODIMP is defined as
    HRESULT __stdcall
    'aspnetwuxueyou(Postmortem -- 啥也没有装修苦'说的对
    据体值里可以根据自己需要定,预定义有:E_FAIL,E_....
      

  7.   

    long *pVal 
    函数参数传递有两种,传值、传地址。传地址可以实现和返回值一样的功能。此处都是用传地址的方式。在客户程序里你本来就不需要用指针,你只需要传递一个地址!
      

  8.   

    long Val;
    get_digits(&Val);