Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.
A Automação OLE fornece formas de chamar métodos e aceder a propriedades entre aplicações. O mecanismo fornecido pela Microsoft Foundation Class Library para despachar estes pedidos é o "dispatch map", que designa os nomes internos e externos das funções e propriedades do objeto, bem como os tipos de dados das próprias propriedades e dos argumentos da função.
| Macro do mapa de despacho | Description |
|---|---|
| DECLARE_DISPATCH_MAP | Declara que um mapa de despacho será usado para expor os métodos e propriedades de uma classe (deve ser usado na declaração da classe). |
| BEGIN_DISPATCH_MAP | Começa a definição de um mapa de despacho. |
| END_DISPATCH_MAP | Termina a definição de um mapa de despacho. |
| DISP_FUNCTION | Usado num mapa de despacho para definir uma função de automação OLE. |
| DISP_PROPERTY | Define uma propriedade de automação OLE. |
| DISP_PROPERTY_EX | Define uma propriedade de automação OLE e nomeia as funções Get e Set. |
| DISP_PROPERTY_NOTIFY | Define uma propriedade de automação OLE com notificação. |
| DISP_PROPERTY_PARAM | Define uma propriedade de automação OLE que toma parâmetros e nomeia as funções Get e Set. |
| DISP_DEFVALUE | Faz de uma propriedade existente o valor padrão de um objeto. |
DECLARE_DISPATCH_MAP
Se uma CCmdTargetclasse derivada em - no seu programa suportar Automação OLE, essa classe deve fornecer um mapa de despacho para expor os seus métodos e propriedades.
DECLARE_DISPATCH_MAP()
Observações
Usa a macro DECLARE_DISPATCH_MAP no final da tua declaração de aula. Depois, no . O ficheiro CPP que define as funções membros da classe, utiliza a macro BEGIN_DISPATCH_MAP. Depois inclui entradas macro para cada um dos métodos e propriedades expostos da tua classe (DISP_FUNCTION, DISP_PROPERTY, e assim sucessivamente). Por fim, usa a macro END_DISPATCH_MAP.
Observação
Se declarar algum membro após DECLARE_DISPATCH_MAP, deve especificar um novo tipo de acesso ( public, private, ou protected) para eles.
O Assistente de Aplicações e os assistentes de código auxiliam na criação de classes de Automação e na manutenção dos mapas de despacho. Para mais informações sobre mapas de despacho, consulte Servidores de Automação.
Example
class CMyServerDoc : public COleServerDoc
{
DECLARE_DISPATCH_MAP()
// Remainder of class declaration omitted.
Requerimentos
Cabeçalho: afxwin.h
BEGIN_DISPATCH_MAP
Declara a definição do seu mapa de despacho.
BEGIN_DISPATCH_MAP(theClass, baseClass)
Parâmetros
a Classe
Especifica o nome da classe que possui este mapa de despacho.
Classe base
Especifica o nome base da classe theClass.
Observações
No ficheiro de implementação (.cpp) que define as funções membros da sua classe, inicie o mapa de despacho com a macro BEGIN_DISPATCH_MAP, adicione entradas de macro para cada uma das suas funções e propriedades de despacho, e complete o mapa de despacho com a macro END_DISPATCH_MAP.
Requerimentos
Cabeçalho: afxdisp.h
END_DISPATCH_MAP
Termina a definição do teu mapa de despacho.
END_DISPATCH_MAP()
Observações
Deve ser usado em conjunto com BEGIN_DISPATCH_MAP.
Requerimentos
Cabeçalho: afxdisp.h
DISP_FUNCTION
Define uma função de automação OLE num mapa de despacho.
DISP_FUNCTION(
theClass,
pszName,
pfnMember,
vtRetVal,
vtsParams)
Parâmetros
a Classe
Nome da classe.
pszName
Nome externo da função.
pfnMember
Nome da função do membro.
vtRetVal
Um valor que especifica o tipo de retorno da função.
vtsParams
Uma lista separada em espaço de uma ou mais constantes que especifica a lista de parâmetros da função.
Observações
O argumento vtRetVal é do tipo VARTYPE. Os seguintes valores possíveis para este argumento são retirados da VARENUM enumeração:
| Symbol | Tipo de retorno |
|---|---|
| VT_EMPTY | void |
| VT_I2 | short |
| VT_I4 | long |
| VT_R4 | float |
| VT_R8 | double |
| VT_CY | CY |
| VT_DATE | DATE |
| VT_BSTR | BSTR |
| VT_DISPATCH | LPDISPATCH |
| VT_ERROR | SCODE |
| VT_BOOL | BOOL |
| VT_VARIANT | VARIANT |
| VT_UNKNOWN | LPUNKNOWN |
O argumento vtsParams é uma lista separada em espaço de valores das VTS_* constantes. Um ou mais destes valores, separados por espaços (não vírgulas), especifica a lista de parâmetros da função. Por exemplo
VTS_I2 VTS_PI2
especifica uma lista contendo um inteiro curto seguido de um ponteiro para um inteiro curto.
As VTS_ constantes e os seus significados são os seguintes:
| Symbol | Tipo de parâmetro |
|---|---|
| VTS_I2 | short |
| VTS_I4 | long |
| VTS_R4 | float |
| VTS_R8 | double |
| VTS_CY |
const CY ou CY* |
| VTS_DATE | DATE |
| VTS_BSTR | LPCSTR |
| VTS_DISPATCH | LPDISPATCH |
| VTS_SCODE | SCODE |
| VTS_BOOL | BOOL |
| VTS_VARIANT |
const VARIANT* ou VARIANT& |
| VTS_UNKNOWN | LPUNKNOWN |
| VTS_PI2 | curto* |
| VTS_PI4 | longo* |
| VTS_PR4 | flutuar* |
| VTS_PR8 | Duplo* |
| VTS_PCY | CY* |
| VTS_PDATE | DATE* |
| VTS_PBSTR | BSTR* |
| VTS_PDISPATCH | LPDISPATCH* |
| VTS_PSCODE | SCODE* |
| VTS_PBOOL | BOOL* |
| VTS_PVARIANT | VARIANT* |
| VTS_PUNKNOWN | LPUNKNOWN* |
| VTS_NONE | Sem parâmetros |
Requerimentos
Cabeçalho: afxdisp.h
DISP_PROPERTY
Define uma propriedade de automação OLE num mapa de despacho.
DISP_PROPERTY(
theClass,
pszName,
memberName,
vtPropType)
Parâmetros
a Classe
Nome da classe.
pszName
Nome externo da propriedade.
Nome do Membro
Nome da variável membro na qual a propriedade está armazenada.
vtPropType
Um valor que especifica o tipo da propriedade.
Observações
O argumento vtPropType é do tipo VARTYPE. Os valores possíveis para este argumento são retirados da enumeração VARENUM:
| Symbol | Tipo de propriedade |
|---|---|
| VT_I2 | short |
| VT_I4 | long |
| VT_R4 | float |
| VT_R8 | double |
| VT_CY | CY |
| VT_DATE | DATE |
| VT_BSTR | CString |
| VT_DISPATCH | LPDISPATCH |
| VT_ERROR | SCODE |
| VT_BOOL | BOOL |
| VT_VARIANT | VARIANT |
| VT_UNKNOWN | LPUNKNOWN |
Quando um cliente externo altera a propriedade, o valor da variável membro especificada por memberName muda; Não há qualquer notificação da alteração.
Requerimentos
Cabeçalho: afxdisp.h
DISP_PROPERTY_EX
Define uma propriedade de automação OLE e nomeia as funções usadas para obter e definir o valor da propriedade num mapa de despacho.
DISP_PROPERTY_EX(
theClass,
pszName,
memberGet,
memberSet,
vtPropType)
Parâmetros
a Classe
Nome da classe.
pszName
Nome externo da propriedade.
obterMembro
Nome da função de membro usada para obter a propriedade.
Conjunto de membros
Nome da função de membro usada para definir a propriedade.
vtPropType
Um valor que especifica o tipo da propriedade.
Observações
As funções memberGet e memberSet têm assinaturas determinadas pelo argumento vtPropType . A função memberGet não aceita argumentos e devolve um valor do tipo especificado por vtPropType. A função memberSet toma um argumento do tipo especificado por vtPropType e não retorna nada.
O argumento vtPropType é do tipo VARTYPE. Os valores possíveis para este argumento são retirados da enumeração VARENUM. Para uma lista destes valores, consulte as Observações para o parâmetro vtRetVal em DISP_FUNCTION. Note que VT_EMPTY, listado nas DISP_FUNCTION observações, não é permitido como tipo de dado de propriedade.
Requerimentos
Cabeçalho: afxdisp.h
DISP_PROPERTY_NOTIFY
Define uma propriedade de automação OLE com notificação num mapa de despacho.
DISP_PROPERTY_NOTIFY(
theClass,
szExternalName,
memberName,
pfnAfterSet,
vtPropType)
Parâmetros
a Classe
Nome da classe.
szExternalName
Nome externo da propriedade.
Nome do Membro
Nome da variável membro na qual a propriedade está armazenada.
pfnAfterSet
Nome da função de notificação para szExternalName.
vtPropType
Um valor que especifica o tipo da propriedade.
Observações
Ao contrário das propriedades definidas com DISP_PROPERTY, uma propriedade definida com DISP_PROPERTY_NOTIFY chamará automaticamente a função especificada por pfnAfterSet quando a propriedade for alterada.
O argumento vtPropType é do tipo VARTYPE. Os valores possíveis para este argumento são retirados da enumeração VARENUM:
| Symbol | Tipo de propriedade |
|---|---|
| VT_I2 | short |
| VT_I4 | long |
| VT_R4 | float |
| VT_R8 | double |
| VT_CY | CY |
| VT_DATE | DATE |
| VT_BSTR | CString |
| VT_DISPATCH | LPDISPATCH |
| VT_ERROR | SCODE |
| VT_BOOL | BOOL |
| VT_VARIANT | VARIANT |
| VT_UNKNOWN | LPUNKNOWN |
Requerimentos
Cabeçalho: afxdisp.h
DISP_PROPERTY_PARAM
Define uma propriedade acedida com funções separadas Get e Set membro.
DISP_PROPERTY_PARAM(
theClass,
pszExternalName,
pfnGet,
pfnSet,
vtPropType,
vtsParams)
Parâmetros
a Classe
Nome da classe.
pszExternalName
Nome externo da propriedade.
pfnGet
Nome da função de membro usada para obter a propriedade.
pfnSet
Nome da função de membro usada para definir a propriedade.
vtPropType
Um valor que especifica o tipo da propriedade.
vtsParams
Uma sequência de tipos de parâmetros variantes separados VTS_* no espaço, um para cada parâmetro.
Observações
Ao contrário da macro DISP_PROPERTY_EX, esta macro permite especificar uma lista de parâmetros para a propriedade. Isto é útil para implementar propriedades indexadas ou parametrizadas.
Example
Considere a seguinte declaração das funções membros get e set que permitem ao utilizador solicitar uma linha e coluna específicas ao aceder à propriedade:
SHORT GetArray(SHORT row, SHORT column);
void SetArray(SHORT row, SHORT column, SHORT newVal);
Estes correspondem ao seguinte DISP_PROPERTY_PARAM macro no mapa de despacho de controlo:
DISP_PROPERTY_PARAM(CMFCActiveXControlCtrl, "Array", GetArray, SetArray, VT_I2, VTS_I2 VTS_I2)
Como outro exemplo, considere as seguintes funções membros get e set:
IDispatch* GetItem(SHORT index1, SHORT index2, SHORT index3);
void SetItem(SHORT index1, SHORT index2, SHORT index3, IDispatch* pVal);
Estes correspondem ao seguinte DISP_PROPERTY_PARAM macro no mapa de despacho de controlo:
DISP_PROPERTY_PARAM(CMFCActiveXControlCtrl, "Item", GetItem, SetItem, VT_DISPATCH, VTS_I2 VTS_I2 VTS_I2)
Requerimentos
Cabeçalho: afxdisp.h
DISP_DEFVALUE
Faz de uma propriedade existente o valor padrão de um objeto.
DISP_DEFVALUE(theClass, pszName)
Parâmetros
a Classe
Nome da classe.
pszName
Nome externo da propriedade que representa o "valor" do objeto.
Observações
Usar um valor por defeito pode tornar a programação do seu objeto de automação mais simples para aplicações Visual Basic.
O "valor padrão" do seu objeto é a propriedade que é recuperada ou definida quando uma referência a um objeto não especifica uma propriedade ou função membro.
Requerimentos
Cabeçalho: afxdisp.h