在Fun.h里
public:
STDMETHOD_(long, WarningCheck)();
STDMETHOD_(BOOL, IsCP9k)(/*[out, retval]*/ int nID);
};#endif //__FUN_H_
在Fun.cpp里
STDMETHODIMP_(long) CFun::WarningCheck ()
{
// 成员变量初始化

         代码。
return m_RestPaper;
}
STDMETHODIMP_(BOOL) CFun::IsCP9k(int nID)
{
// TODO: Add your implementation code here return TRUE;
}--------------------------------------------------------------------------
错误--------------------Configuration: Atl2 - Win32 Debug--------------------
Creating Type Library...
Microsoft (R) MIDL Compiler Version 5.01.0164  
Copyright (c) Microsoft Corp 1991-1997. All rights reserved.
Processing F:\Atl2\Atl2.idl
Atl2.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\oaidl.idl
oaidl.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\objidl.idl
objidl.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\unknwn.idl
unknwn.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\wtypes.idl
wtypes.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\ocidl.idl
ocidl.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\oleidl.idl
oleidl.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\servprov.idl
servprov.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\urlmon.idl
urlmon.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\msxml.idl
msxml.idl
F:\Atl2\Atl2.idl(18) : error MIDL2269 : procedures in an object interface must return an HRESULT : [ Procedure 'WarningCheck' ( Interface 'IFun' ) ]
F:\Atl2\Atl2.idl(19) : error MIDL2269 : procedures in an object interface must return an HRESULT : [ Procedure 'IsCP9k' ( Interface 'IFun' ) ]
F:\Atl2\Atl2.idl(19) : error MIDL2042 : [out] parameter is not a pointer : [ Parameter 'nID' of Procedure 'IsCP9k' ( Interface 'IFun' ) ]
Error executing midl.exe.
Atl2.dll - 3 error(s), 0 warning(s)
--------------------------------------------------------------------------------------WarningCheck 接口是我自己添加上去的,正常方法添加方法后无法显示WarningCheck 
所以请高手指教下,无参数,有返回值的方法如何添加,还有我错在哪了

解决方案 »

  1.   

    这样改:STDMETHOD(IsCP9k)(/*[out, retval]*/ int* nID); STDMETHODIMP HRESULT CFun::IsCP9k(int* nID) 

    *nID = 0;
    return S_OK; 
    } 还需要改IDL。因为用STDMETHOD_的返回和out,retval可能冲突。
      

  2.   

    STDMETHOD(WarningCheck)(/*[out, retval]*/ long* plRet); 
    STDMETHOD(IsCP9k)(/*[out]*/ int* pnID, /*[out, retval]*/ BOOL* pfBOOL); 要注意:
    1.接口返回值一定是HRESULT
    2.用于返回的类型一定是指针建议:
    如果你用的是VS2005的话,你可以用向导来帮你生成,等你熟悉之后就可以自己来了。
    +_+
      

  3.   

    现在问题主要出在STDMETHOD_(long, WarningCheck)(); 因为这个是我手动写进去的!我用的VC6啊!他就是不给我自动生成STDMETHOD_(long, WarningCheck)();