当前位置:  开发笔记 > 编程语言 > 正文

在VC++中将可选参数传递给COM函数

如何解决《在VC++中将可选参数传递给COM函数》经验,为你挑选了1个好方法。

我在COM对象上有一个MFC包装器.有一个函数需要大量的选项,这些选项大多是可选的.我如何传递一些参数但不传递其他参数?

对于它的价值,可选参数列为VARIANT*.

下面是代码

CComVariant vFalse = false;
CApplication application;

{
    application.CreateDispatch(_T("Word.Application"));

    CDocuments documents = application.get_Documents();       

    CComVariant vFilename = _T("c:\\temp\\test.rtf");
    CComVariant vNothing;
    CComVariant vEmpty = _T("");
    CComVariant vOpenFormat = 0;
    application.put_Visible(TRUE);

    //
    // THIS FUNCTION has a number of optional arguments
    //
    LPDISPATCH pDocument = documents.Open(&vFilename, &vFalse, &vFalse, &vFalse, &vEmpty, &vEmpty, &vFalse, &vEmpty, &vEmpty, &vOpenFormat, &vOpenFormat, &vFalse, &vFalse, &vOpenFormat, &vFalse, &vFalse);
}
application.Quit(&vFalse, NULL, NULL);

m-sharp.. 5

要跳过COM方法中的可选参数,请传递VT_ERROR类型的VARIANT,错误代码必须为DISP_E_PARAMNOTFOUND.

CComVariant vtOptional;
vtOptional.vt = VT_ERROR;
vtOptional.scode = DISP_E_PARAMNOTFOUND;

现在,您可以使用vtOptional作为参数,如果参数是可选的,则不希望指定该参数.

以下是关于此的官方说法:" 在Visual C++中调用函数时如何传递可选参数 "



1> m-sharp..:

要跳过COM方法中的可选参数,请传递VT_ERROR类型的VARIANT,错误代码必须为DISP_E_PARAMNOTFOUND.

CComVariant vtOptional;
vtOptional.vt = VT_ERROR;
vtOptional.scode = DISP_E_PARAMNOTFOUND;

现在,您可以使用vtOptional作为参数,如果参数是可选的,则不希望指定该参数.

以下是关于此的官方说法:" 在Visual C++中调用函数时如何传递可选参数 "

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有