Getting and Setting Properties
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