Compartilhar via


Getting and Setting Properties

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Propriedades são acessadas da mesma maneira como os métodos, exceto você especificar DISPATCH_PROPERTYGET ou DISPATCH_PROPERTYPUT instead of DISPATCH_METHOD.

Alguns idiomas não consegue distinguir entre recuperando uma propriedade e chamado um método. Neste maiúsculas e minúsculas, defina os sinalizadores DISPATCH_PROPERTYGET e DISPATCH_METHOD.

O seguinte exemplo de código obtém o valor de um propriedade nomeado Em. Você pode assumir que o objeto foi criado, e que suas interfaces tiverem sido consultados, as in o exemplo anterior.

VARIANT FAR *pVarResult;
// Code omitted for brevity.
szMember = "On";
hresult = pdisp->GetIDsOfNames(IID_NULL, &szMember, 1, 
LOCALE_USER_DEFAULT, &dispid);

hresult = pdisp->Invoke(
dispid,
IID_NULL,
LOCALE_USER_DEFAULT,
DISPATCH_PROPERTYGET,
&dispparamsNoArgs, pVarResult, NULL, NULL);

As in o exemplo anterior, a codificar chamadas IDispatch::GetIDsOfNames Para o DISPID da Em propriedade e em seguida, passa o identificador para IDispatch::Invoke.

Em seguida, Chamar Retorna valor a propriedade no pVarResult.

Em geral, o valor de retorno não define VT_BYREF. No entanto, esse bit pode ser definida e retornadas um ponteiro para o valor de retorno, se o tempo de vida do valor de retorno for o mesmo que o objeto.

A alteração valor de propriedade, a chamar se parece com o seguinte.

VARIANT FAR *pVarResult;
DISPPARAMS dispparams; 
DISPID mydispid = DISP_PROPERTYPUT

// Code omitted for brevity.

szMember = "On";
dispparams.rgvarg[0].vt = VT_BOOL;
dispparams.rgvarg[0].bool = FALSE;
dispparams.rgdispidNamedArgs = &mydispid;
dispparams.cArgs = 1;
dispparams.cNamedArgs = 1;
hresult = pdisp->GetIDsOfNames(IID_NULL, &szMember, 1, 
LOCALE_USER_DEFAULT, &dispid); 

hresult = pdisp->Invoke(
dispid,
IID_NULL,
LOCALE_USER_DEFAULT,
DISPATCH_PROPERTYPUT,
&dispparams, NULL, NULL, NULL);

O novo valor para a propriedade (o Boolean FALSE valor) é passado como um parâmetro quando o Em de propriedade Colocar função é invocada.

O DISPID para o parâmetro é DISPID_PROPERTYPUT. Este DISPID é definida pela automação para designar o parâmetro que contém o novo valor para do uma propriedade Colocar função. Detalhes do restantes a DISPPARAMS estrutura são descritos na Passe parâmetros.

O sinalizador DISPATCH_PROPERTYPUT no exemplo anterior indica que uma propriedade está sendo definida por valor. Em Visual Basic, a seguinte declaração atribui a Valor propriedade (o usar como padrão) das YourObj para a Prop propriedade.

MyObj.Prop = YourObj

Essa declaração deve ser sinalizado como um DISPATCH_PROPERTYPUT. Da mesma forma, as instruções que o seguinte atribuir o Valor propriedade de um objeto para o Valor propriedade de outro objeto.

Worksheet.Cell(1,1) = Worksheet.Cell(6,6)
MyDoc.Text1 = YourDoc.Text1

Essas instruções resultam em uma operação PROPERTY_PUT Worksheet.Cell(1,1) e MyDoc.Text1.

Use o sinalizador DISPATCH_PROPERTYPUTREF para indicar um membro propriedade ou dados que deve ser definido por referência.

De exemplo, a seguinte declaração Visual Basic atribui o ponteiro YourObj Para a propriedade Prope deve ser sinalizado como DISPATCH_PROPERTYPUTREF.

Set MyObj.Prop = YourObj

O Definir declaração faz com que um atribuída de referência, em vez atribuída uma valor.

O parâmetro sobre o direito lado sempre é passado pelo nome e não deve ser acessado positionally.

See Also

Reference

DISPPARAMS
IDispatch::GetIDsOfNames
IDispatch::Invoke

Concepts

Automation