atributo defaultvtable

O atributo [defaultvtable] define uma interface como a interface Vtable padrão.

[
    coclass-attribute-list, 
    defaultvtable
]
coclass coclass-name
{
    coclass-interface-list
}

Parâmetros

coclass-attribute-list

Outros atributos que se aplicam à classe . Os atributos [source] e [uuid] são necessários.

coclass-name

O nome da classe.

coclass-interface-list

Uma lista de interfaces para a classe .

Comentários

Uma interface Vtable padrão não pode ser uma dispinterface, deve ser uma interface ou dual ou Vtable. Se a interface for uma interface dupla, os coletores poderão assumir que receberão eventos por meio da Vtable.

Uma classe pode ser uma interface de origem padrão e uma interface de origem Vtable padrão, conforme mostrado no exemplo. Nesse caso, um coletor de avisos deve usar IID_IDISPATCH para receber eventos de expedição e usar o identificador de interface para receber eventos Vtable.

Representação typeflag

A presença de IMPLTYPEFLAG_FDEFAULTVTABLE.

Exemplos

[
    dual,
    uuid(12345678-1234-1234-1234-123456789ABC),
    restricted
]
interface IForm: IDispatch
{
    [propget] HRESULT Backcolor([out, retval] long *Value);
    [propput] HRESULT Backcolor([in] long Value);
    [propget] HRESULT Name([out, retval] BSTR *Value);
    [propput] HRESULT Name([in] BSTR Value);}

[
    dual,
    uuid(1e196b20-1f3c-1069-996b-00dd010fe676),
    restricted
]
interface IFormEvents: IDispatch
{
    HRESULT Click();
    HRESULT Resize();}

    [
        uuid(1e123456-1f3c-1069-996b-123456789ABC)
    ]
    coclass Form
    {
        [default] interface IForm;
        [default, defaultvtable, source] interface IFormEvents;
    }
}

Confira também

coclass

Sintaxe de arquivo ODL

Exemplo de arquivo ODL

Gerando uma biblioteca de tipos com MIDL

Fonte

uuid