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.
Fornece funcionalidade para o uso de nomes assíncronos nos controlos ActiveX (anteriormente controlos OLE).
Sintaxe
class CAsyncMonikerFile : public CMonikerFile
Membros
Construtores Públicos
| Nome | Description |
|---|---|
| CAsyncMonikerFile::CAsyncMonikerFile | Constrói um CAsyncMonikerFile objeto. |
Métodos Públicos
| Nome | Description |
|---|---|
| CAsyncMonikerFicheiro::Fechar | Fecha e liberta todos os recursos. |
| CAsyncMonikerFile::GetBinding | Recupera um ponteiro para a ligação de transferência assíncrona. |
| CAsyncMonikerFicheiro::GetFormatEtc | Recupera o formato dos dados no fluxo. |
| CAsyncMonikerFicheiro::Open | Abre um ficheiro de forma assíncrona. |
Métodos Protegidos
| Nome | Description |
|---|---|
| CAsyncMonikerFile::CreateBindStatusCallback | Cria um objeto COM que implementa IBindStatusCallback. |
| CAsyncMonikerFile::GetBindInfo | Chamada pela biblioteca do sistema OLE para solicitar informação sobre o tipo de ligação a ser criada. |
| CAsyncMonikerFile::GetPriority | Chamado pela biblioteca do sistema OLE para obter a prioridade da ligação. |
| CAsyncMonikerFile::OnDataAvailable | Chamado para fornecer dados à medida que ficam disponíveis para o cliente durante operações de ligação assíncrona. |
| CAsyncMonikerFile::OnLowResource | Chamada quando os recursos estão baixos. |
| CAsyncMonikerFicheiro::OnProgress | Liguei para indicar progresso no processo de download de dados. |
| CAsyncMonikerFile::OnStartBinding | Chama quando a ligação está a começar. |
| CAsyncMonikerFile::OnStopBinding | Chamado quando a transferência assíncrona é interrompida. |
Observações
Derivado do CMonikerFile, que por sua vez é derivado do COleStreamFile, CAsyncMonikerFile utiliza a interface IMoniker para aceder a qualquer fluxo de dados de forma assíncrona, incluindo carregar ficheiros de forma assíncrona a partir de uma URL. Os ficheiros podem ser propriedades do caminho de dados dos controlos ActiveX.
Os nomes assíncronos são usados principalmente em aplicações com acesso à Internet e controlos ActiveX para proporcionar uma interface de utilizador responsiva durante as transferências de ficheiros. Um exemplo claro disto é a utilização do CDataPathProperty para fornecer propriedades assíncronas para controlos ActiveX. O CDataPathProperty objeto receberá repetidamente um callback para indicar a disponibilidade de novos dados durante um longo processo de troca de propriedades.
Para mais informações sobre como usar nomes assíncronos e controlos ActiveX em aplicações na Internet, consulte os seguintes artigos:
Hierarquia de herança
CAsyncMonikerFile
Requerimentos
Cabeçalho: afxole.h
CAsyncMonikerFile::CAsyncMonikerFile
Constrói um CAsyncMonikerFile objeto.
CAsyncMonikerFile();
Observações
Não cria a IBindHost interface.
IBindHost é usado apenas se for fornecido na Open função membro.
Para uma descrição da IBindHost interface, veja o SDK do Windows.
CAsyncMonikerFicheiro::Fechar
Chame esta função para encerrar e libertar todos os recursos.
virtual void Close();
Observações
Pode ser chamado em ficheiros não abertos ou já fechados.
CAsyncMonikerFile::CreateBindStatusCallback
Cria um objeto COM que implementa IBindStatusCallback.
virtual IUnknown* CreateBindStatusCallback(IUnknown* pUnkControlling);
Parâmetros
pUnkControlando
Um apontador para o desconhecido controlador (o exterior IUnknown) ou NULL se não estiver a ser usada agregação.
Valor de retorno
Se pUnkControlling não for NULL, a função devolve um ponteiro para o interior IUnknown num novo objeto COM que suporta IBindStatusCallback. Se pUnkControlling for NULL, a função devolve um ponteiro para um IUnknown num novo objeto COM que suporta IBindStatusCallback.
Observações
CAsyncMonikerFile requer um objeto COM que implemente IBindStatusCallback. O MFC implementa tal objeto, e é agregado. Podes sobrescrever CreateBindStatusCallback para devolver o teu próprio objeto COM. O seu objeto COM pode agregar a implementação do MFC chamando CreateBindStatusCallback com o desconhecido controlador do seu objeto COM. Os objetos COM implementados usando o CCmdTarget suporte COM podem recuperar o desconhecido controlador usando CCmdTarget::GetControllingUnknown.
Alternativamente, o seu objeto COM pode delegar à implementação do MFC chamando CreateBindStatusCallback( NULL ).
CAsyncMonikerFile::Open calls CreateBindStatusCallback.
Para mais informações sobre nomes assíncronos e ligação assíncrona, consulte a interface IBindStatusCallback e How Asynchronous Binding and Storage Work. Para uma discussão sobre agregação, veja Agregação. Os três tópicos estão no SDK do Windows.
CAsyncMonikerFile::GetBindInfo
Chamado do cliente de um moniker assíncrono para indicar ao moniker assíncrono como quer vincular.
virtual DWORD GetBindInfo() const;
Valor de retorno
Recupera as definições para IBindStatusCallBack. Para uma descrição da IBindStatusCallback interface, veja o SDK do Windows.
Observações
A implementação padrão define a ligação como assíncrona, para usar um meio de armazenamento (um fluxo) e para usar o modelo de empurrar de dados. Sobrepõe esta função se quiseres alterar o comportamento do binding.
Uma razão para fazer isto seria ligar usando o modelo de data pull em vez do modelo data-push. Num modelo de extração de dados, o cliente gere a operação de binding, e o nome só fornece dados ao cliente quando é lido. Num modelo data-push, o nome gere a operação de ligação assíncrona e notifica continuamente o cliente sempre que há novos dados disponíveis.
CAsyncMonikerFile::GetBinding
Chame esta função para recuperar um ponteiro para a ligação de transferência assíncrona.
IBinding* GetBinding() const;
Valor de retorno
Um apontador para a IBinding interface fornecido quando a transferência assíncrona começa. Retorna NULL se, por qualquer motivo, a transferência não puder ser feita de forma assíncrona.
Observações
Isto permite controlar o processo de transferência de dados através da IBinding interface, por exemplo, com IBinding::Abort, IBinding::Pause, e IBinding::Resume.
Para uma descrição da IBinding interface, veja o SDK do Windows.
CAsyncMonikerFicheiro::GetFormatEtc
Chame esta função para recuperar o formato dos dados no fluxo.
FORMATETC* GetFormatEtc() const;
Valor de retorno
Um ponteiro para a estrutura do Windows, FORMAT, etc., para o fluxo atualmente aberto. Retorna NULL se o nome não tiver sido limitado, se não for assíncrono, ou se a operação assíncrona ainda não começou.
CAsyncMonikerFile::GetPriority
Chamada do cliente de um moniker assíncrono quando o processo de ligação começa a receber a prioridade dada ao thread para a operação de ligação.
virtual LONG GetPriority() const;
Valor de retorno
A prioridade em que a transferência assíncrona terá lugar. Uma das bandeiras padrão de prioridade de thread: THREAD_PRIORITY_ABOVE_NORMAL, THREAD_PRIORITY_BELOW_NORMAL, THREAD_PRIORITY_HIGHEST, THREAD_PRIORITY_IDLE, THREAD_PRIORITY_LOWEST, THREAD_PRIORITY_NORMAL e THREAD_PRIORITY_TIME_CRITICAL. Consulte a função Windows SetThreadPriority para uma descrição destes valores.
Observações
GetPriority Não deve ser chamado diretamente. THREAD_PRIORITY_NORMAL é devolvido pela implementação padrão.
CAsyncMonikerFile::OnDataAvailable
Um nome assíncrono chama OnDataAvailable para fornecer dados ao cliente à medida que estes se tornam disponíveis, durante operações de ligação assíncrona.
virtual void OnDataAvailable(DWORD dwSize, DWORD bscfFlag);
Parâmetros
dwSize
A quantidade acumulada (em bytes) de dados disponíveis desde o início da ligação. Pode ser zero, indicando que a quantidade de dados não é relevante para a operação, ou que nenhuma quantidade específica ficou disponível.
bscfFlag
Um valor de enumeração BSCF. Pode ser um ou mais dos seguintes valores:
BSCF_FIRSTDATANOTIFICATION Identifica a primeira chamada para
OnDataAvailableuma dada operação de lição.BSCF_INTERMEDIATEDATANOTIFICATION Identifica uma chamada intermédia para
OnDataAvailablepara uma operação de ligação.BSCF_LASTDATANOTIFICATION Identifica a última chamada para
OnDataAvailableuma operação de ligação.
Observações
A implementação padrão desta função não faz nada. Veja o exemplo seguinte para um exemplo de implementação.
Example
void CMyMoniker::OnDataAvailable(DWORD dwSize, DWORD bscfFlag)
{
if ((bscfFlag & BSCF_FIRSTDATANOTIFICATION) != 0)
{
m_dwReadBefore = 0;
m_strText.Empty();
}
DWORD dwArriving = dwSize - m_dwReadBefore;
if (dwArriving > 0)
{
int nLen = m_strText.GetLength();
ASSERT((DWORD)nLen == m_dwReadBefore);
LPTSTR psz = m_strText.GetBuffer(nLen + dwArriving);
Read(psz + nLen, dwArriving);
m_strText.ReleaseBuffer(nLen + dwArriving);
m_dwReadBefore = dwSize;
}
}
CAsyncMonikerFile::OnLowResource
É chamado pelo apelido quando os recursos estão baixos.
virtual void OnLowResource();
Observações
A implementação padrão chama GetBinding( )-> Abort( ).
CAsyncMonikerFicheiro::OnProgress
Chamado repetidamente pelo nome para indicar o progresso atual desta operação de ligação, normalmente em intervalos razoáveis durante uma operação longa.
virtual void OnProgress(
ULONG ulProgress,
ULONG ulProgressMax,
ULONG ulStatusCode,
LPCTSTR szStatusText);
Parâmetros
ulProgress
Indica o progresso atual da operação de ligação em relação ao máximo esperado indicado no ulProgressMax.
ulProgressMax
Indica o valor máximo esperado do ulProgress durante a duração das chamadas para OnProgress esta operação.
ulStatusCode
Fornece informações adicionais sobre o progresso da operação de ligação. Os valores válidos são retirados da BINDSTATUS enumeração. Consulte Observações para possíveis valores.
szStatusText
Informação sobre o progresso atual, dependendo do valor do ulStatusCode. Consulte Observações para possíveis valores.
Observações
Os valores possíveis para ulStatusCode (e o szStatusText para cada valor) são:
| Valor | Description |
|---|---|
| BINDSTATUS_FINDINGRESOURCE | A operação de ligação consiste em encontrar o recurso que contém o objeto ou armazenamento a que se está a vincular. O szStatusText fornece o nome de exibição do recurso que está a ser pesquisado (por exemplo, "www.microsoft.com"). |
| BINDSTATUS_CONNECTING | A operação de ligação consiste em ligar-se ao recurso que contém o objeto ou armazenamento a que está a ser ligado. O szStatusText fornece o nome de exibição do recurso a que se está a ligar (por exemplo, um endereço IP). |
| BINDSTATUS_SENDINGREQUEST | A operação de ligação é pedir o objeto ou armazenamento a que está ligado. O szStatusText fornece o nome de exibição do objeto (por exemplo, um nome de ficheiro). |
| BINDSTATUS_REDIRECTING | A operação de ligação foi redirecionada para uma localização de dados diferente. O szStatusText fornece o nome de exibição da nova localização dos dados. |
| BINDSTATUS_USINGCACHEDCOPY | A operação de ligação consiste em recuperar o objeto ou armazenamento solicitado a partir de uma cópia em cache. O szStatusText é NULL. |
| BINDSTATUS_BEGINDOWNLOADDATA | A operação de ligação começou a receber o objeto ou armazenamento a que está ligado. O szStatusText fornece o nome de exibição da localização dos dados. |
| BINDSTATUS_DOWNLOADINGDATA | A operação de ligação continua a receber o objeto ou armazenamento a que está ligado. O szStatusText fornece o nome de exibição da localização dos dados. |
| BINDSTATUS_ENDDOWNLOADDATA | A operação de ligação terminou de receber o objeto ou armazenamento a que está ligado. O szStatusText fornece o nome de exibição da localização dos dados. |
| BINDSTATUS_CLASSIDAVAILABLE | Uma instância do objeto a que está ligado está prestes a ser criada. O szStatusText fornece o CLSID do novo objeto em formato de string, permitindo ao cliente a oportunidade de cancelar a operação de ligação, se desejado. |
CAsyncMonikerFile::OnStartBinding
Sobrepõe esta função nas tuas classes derivadas para realizar ações quando a ligação estiver a iniciar.
virtual void OnStartBinding();
Observações
Esta função é chamada de volta pelo nome. A implementação padrão não faz nada.
CAsyncMonikerFile::OnStopBinding
Chamado pelo nome no final da operação de ligação.
virtual void OnStopBinding(HRESULT hresult, LPCTSTR szError);
Parâmetros
hresult
Um HRESULT que é o valor de erro ou de aviso.
szErrort
Uma cadeia de caracteres que descreve o erro.
Observações
Substitua esta função para realizar ações quando a transferência for interrompida. Por defeito, a função liberta IBinding.
Para uma descrição da IBinding interface, veja o SDK do Windows.
CAsyncMonikerFicheiro::Open
Chame esta função membro para abrir um ficheiro de forma assíncrona.
virtual BOOL Open(
LPCTSTR lpszURL,
CFileException* pError = NULL);
virtual BOOL Open(
IMoniker* pMoniker,
CFileException* pError = NULL);
virtual BOOL Open(
LPCTSTR lpszURL,
IBindHost* pBindHost,
CFileException* pError = NULL);
virtual BOOL Open(
IMoniker* pMoniker,
IBindHost* pBindHost,
CFileException* pError = NULL);
virtual BOOL Open(
LPCTSTR lpszURL,
IServiceProvider* pServiceProvider,
CFileException* pError = NULL);
virtual BOOL Open(
IMoniker* pMoniker,
IServiceProvider* pServiceProvider,
CFileException* pError = NULL);
virtual BOOL Open(
LPCTSTR lpszURL,
IUnknown* pUnknown,
CFileException* pError = NULL);
virtual BOOL Open(
IMoniker* pMoniker,
IUnknown* pUnknown,
CFileException* pError = NULL);
Parâmetros
lpszURL
Um ponteiro para um ficheiro a ser aberto assíncrono. O ficheiro pode ter qualquer URL ou nome válido.
pError
Um apontador para as exceções de ficheiros. Em caso de erro, será definido como a causa.
pMoniker
Um apontador para a interface IMonikerdo moniker assíncrono, um moniker preciso que é a combinação do próprio moniker do documento, que pode ser recuperado com IOleClientSite::GetMoniker(OLEWHICHMK_CONTAINER), e um moniker criado a partir do nome do caminho. O controlo pode usar este nome para vincular, mas este não é o nome que o controlo deve guardar.
pBindHost
Um apontador para a IBindHost interface que será usado para criar o nome a partir de um nome de caminho potencialmente relativo. Se o host de ligação for inválido ou não fornecer um moniker, a chamada passa por defeito a Open(lpszFileName,pError). Para uma descrição da IBindHost interface, veja o SDK do Windows.
pServiceProvider
Um apontador para a IServiceProvider interface. Se o fornecedor de serviços for inválido ou não fornecer o serviço para IBindHost, a chamada passa por defeito a Open(lpszFileName,pError).
pDesconhecido
Um apontador para a IUnknown interface. Se IServiceProvider for encontrado, a função consulta para IBindHost. Se o fornecedor de serviços for inválido ou não fornecer o serviço para IBindHost, a chamada passa por defeito a Open(lpszFileName,pError).
Valor de retorno
Diferente de zero se o ficheiro for aberto com sucesso; caso contrário, 0.
Observações
Esta chamada inicia o processo de ligação.
Pode usar uma URL ou um nome de ficheiro para o parâmetro lpszURL . Por exemplo:
CMyMoniker *pMyMoniker = new CMyMoniker();
pMyMoniker->Open(_T("http://www.microsoft.com"));
- ou -
CMyMoniker *pMyMoniker = new CMyMoniker();
pMyMoniker->Open(_T("file:c:\\mydata.dat"));
Consulte também
Classe CMonikerFile
Gráfico de Hierarquia
Classe CMonikerFile
Classe de Propriedade CDataPath