我在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++中调用函数时如何传递可选参数 "
要跳过COM方法中的可选参数,请传递VT_ERROR类型的VARIANT,错误代码必须为DISP_E_PARAMNOTFOUND.
CComVariant vtOptional; vtOptional.vt = VT_ERROR; vtOptional.scode = DISP_E_PARAMNOTFOUND;
现在,您可以使用vtOptional作为参数,如果参数是可选的,则不希望指定该参数.
以下是关于此的官方说法:" 在Visual C++中调用函数时如何传递可选参数 "