gpt4 book ai didi

visual-c++ - 将可选参数传递给 VC++ 中的 COM 函数

转载 作者:行者123 更新时间:2023-12-04 03:21:12 29 4
gpt4 key购买 nike

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

就其值(value)而言,可选参数列为 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);

最佳答案

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

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

现在您可以使用 vtOptional 作为您不想指定参数是否可选的参数。

这是官方的说法:
" How to pass optional parameters when you call a function in Visual C++ "

关于visual-c++ - 将可选参数传递给 VC++ 中的 COM 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/382475/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com