Passerer valgfrie argumenter til en COM-funksjonen i VC ++

stemmer
2

Jeg har en MFC wrapper over et COM-objekt. Det er en funksjon som tar et stort antall alternativer, som for det meste er valgfritt. Hvordan går jeg noen argumenter, men ikke andre?

For hva det er verdt, er valgfrie argumenter oppført som VARIANT *.

Nedenfor er koden

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);
Publisert på 19/12/2008 klokken 22:53
kilden bruker
På andre språk...                            


2 svar

stemmer
-1

En uspesifisert variant er normalt VT_EMPTY:

_variant_t vtEmpty(VT_EMPTY);

Du åpenbart har skrevet CDocuments og CApplication wrappers rundt COM-grensesnitt, slik at du kan angi valgfrie parametere som har standardverdien vtEmpty.

Svarte 20/12/2008 kl. 00:38
kilden bruker

stemmer
5

For å hoppe over en valgfri parameter i en COM metode passere en variant av typen VT_ERROR og feilkoden må ved DISP_E_PARAMNOTFOUND.

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

Nå kan du bruke vtOptional som en parameter du ikke ønsker å oppgi om parameteren er valgfri.

Her er den offisielle ord på dette: " Hvordan passere valgfrie parametere når du ringer en funksjon i Visual C ++ "

Svarte 24/02/2009 kl. 06:15
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more