IDL文件模版

心不动则不痛 提交于 2019-12-07 10:21:40

<span style="font-family: Arial, Helvetica, sans-serif;">上周接触了COM,并且自己照着别人的代码仿照了几个COM,记录一下IDL文件的规则,做一个模版方便以后再写</span>
<span style="font-family: Arial, Helvetica, sans-serif;">
</span>
// complete IXXX.idl file
import "oaidl.idl";
import "ocidl.idl";

cpp_quote("#ifndef _Included_IXXX_idl_")
cpp_quote("#define _Included_IXXX_idl_")

cpp_quote("#endif // _Included_IXXX_idl_")

// Interface IXXX
[
    object,
    uuid(......),
    helpstring("IXXX Interface"),
    pointer_default(unique),
]

interface ICmrCaContextMenuModel : IUnknown
{
    HRESULT FunctionName(
        [in] TypeName in_parameter,
        [out, retval] TypeName out_and_retval_parameter
    );
    
    ......
}

[
    uuid(......)
]

library YYYYLib
{  
    [
        uuid(......)
    ]
    
    coclass CYYYY
    { 
        interface IYYYY;
    }
};

除此之外,还要设置一下工程属性,否则MIDL生成的.h文件将会带有_i,如果在其他COM中包含该COM,会导致无法找到.h文件

Project->Setting->MIDL->Output->Header File->去掉_i

或者

右击工程->Properties->MIDL->Output->Header File->去掉_i

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!