CAsyncMonikerFile (clase)
Proporciona funcionalidad para el uso de monikers asincrónicos en los controles ActiveX (antes controles OLE).
Sintaxis
class CAsyncMonikerFile : public CMonikerFile
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
CAsyncMonikerFile::CAsyncMonikerFile | Construye un objeto CAsyncMonikerFile . |
Métodos públicos
Nombre | Descripción |
---|---|
CAsyncMonikerFile::Close | Cierra y libera todos los recursos. |
CAsyncMonikerFile::GetBinding | Recupera un puntero al enlace de transferencia asincrónica. |
CAsyncMonikerFile::GetFormatEtc | Recupera el formato de los datos del flujo. |
CAsyncMonikerFile::Open | Abre un archivo de forma asincrónica. |
Métodos protegidos
Nombre | Descripción |
---|---|
CAsyncMonikerFile::CreateBindStatusCallback | Crea un objeto COM que implementa IBindStatusCallback . |
CAsyncMonikerFile::GetBindInfo | Lo llama la biblioteca del sistema OLE para solicitar información sobre el tipo de enlace que se va a crear. |
CAsyncMonikerFile::GetPriority | Lo llama la biblioteca del sistema OLE para obtener la prioridad del enlace. |
CAsyncMonikerFile::OnDataAvailable | Se llama para proporcionar datos cuando están disponibles para el cliente durante las operaciones de enlace asincrónicas. |
CAsyncMonikerFile::OnLowResource | Se llama cuando los recursos son bajos. |
CAsyncMonikerFile::OnProgress | Se llama para indicar el progreso del proceso de descarga de datos. |
CAsyncMonikerFile::OnStartBinding | Se llama cuando se inicia el enlace. |
CAsyncMonikerFile::OnStopBinding | Se llama cuando se detiene la transferencia asincrónica. |
Comentarios
Derivado de CMonikerFile, que a su vez se deriva de COleStreamFile, CAsyncMonikerFile
usa la interfaz IMoniker para acceder a cualquier flujo de datos de forma asincrónica, incluida la carga asincrónica de archivos desde una dirección URL. Los archivos pueden ser propiedades de ruta de acceso de datos de los controles ActiveX.
Los monikers asincrónicos se usan principalmente en aplicaciones habilitadas para Internet y controles ActiveX para proporcionar una interfaz de usuario con capacidad de respuesta durante las transferencias de archivos. Un ejemplo excelente es el uso de CDataPathProperty para proporcionar propiedades asincrónicas para los controles ActiveX. El objeto CDataPathProperty
obtendrá repetidamente una devolución de llamada para indicar la disponibilidad de nuevos datos durante un largo proceso de intercambio de propiedades.
Para más información sobre cómo usar monikers asincrónicos y controles ActiveX en aplicaciones de Internet, consulte los artículos siguientes:
Jerarquía de herencia
CAsyncMonikerFile
Requisitos
Encabezado: afxole.h
CAsyncMonikerFile::CAsyncMonikerFile
Construye un objeto CAsyncMonikerFile
.
CAsyncMonikerFile();
Comentarios
No crea la interfaz IBindHost
. IBindHost
solo se usa si se proporciona en la función miembro Open
.
Para una descripción de la interfaz IBindHost
, vea Windows SDK.
CAsyncMonikerFile::Close
Llame a esta función para cerrar y liberar todos los recursos.
virtual void Close();
Comentarios
Se puede llamar en archivos no abiertos o ya cerrados.
CAsyncMonikerFile::CreateBindStatusCallback
Crea un objeto COM que implementa IBindStatusCallback
.
virtual IUnknown* CreateBindStatusCallback(IUnknown* pUnkControlling);
Parámetros
pUnkControlling
Puntero al control desconocido (IUnknown
externo) o NULL si no se usa la agregación.
Valor devuelto
Si pUnkControlling no es NULL, la función devuelve un puntero al elemento interno IUnknown
de un nuevo objeto COM que admite IBindStatusCallback
. Si pUnkControlling
es NULL, la función devuelve un puntero a un elemento IUnknown
en un nuevo objeto COM que admite IBindStatusCallback
.
Comentarios
CAsyncMonikerFile
requiere un objeto COM que implemente IBindStatusCallback
. MFC implementa este objeto y es agregable. Puede invalidar CreateBindStatusCallback
para devolver su propio objeto COM. El objeto COM puede agregar la implementación de MFC llamando a CreateBindStatusCallback
con el control desconocido del objeto COM. Los objetos COM implementados empleando la compatibilidad con COM CCmdTarget
pueden recuperar el control desconocido mediante CCmdTarget::GetControllingUnknown
.
Como alternativa, el objeto COM puede delegar en la implementación de MFC llamando a CreateBindStatusCallback( NULL )
.
CAsyncMonikerFile::Open llama a CreateBindStatusCallback
.
Para más información sobre los monikers asincrónicos y el enlace asincrónico, consulte la interfaz IBindStatusCallback y Funcionamiento del enlace asincrónico y el almacenamiento. Para una explicación de la agregación, consulte Agregación. Los tres temas están en Windows SDK.
CAsyncMonikerFile::GetBindInfo
Se llama desde el cliente de un moniker asincrónico para indicar al moniker asincrónico cómo se quiere enlazar.
virtual DWORD GetBindInfo() const;
Valor devuelto
Recupera la configuración de IBindStatusCallBack
. Para una descripción de la interfaz IBindStatusCallback
, vea Windows SDK.
Comentarios
La implementación predeterminada establece que el enlace sea asincrónico, que use un medio de almacenamiento (flujo) y que use el modelo de inserción de datos. Invalide esta función si desea cambiar el comportamiento del enlace.
Una razón para hacerlo sería enlazar con el modelo de extracción de datos en lugar del modelo de inserción de datos. En un modelo de extracción de datos, el cliente controla la operación de enlace y el moniker solo proporciona datos al cliente cuando se leen. En el modelo de inserción de datos, el moniker controla la operación de enlace asincrónica y notifica al cliente de forma continua cada vez que hay nuevos datos disponibles.
CAsyncMonikerFile::GetBinding
Llame a esta función para recuperar un puntero al enlace de transferencia asincrónica.
IBinding* GetBinding() const;
Valor devuelto
Puntero a la interfaz IBinding
proporcionada al comenzar la transferencia asincrónica. Devuelve NULL si, por cualquier motivo, la transferencia no se puede realizar de forma asincrónica.
Comentarios
Esto le permite controlar el proceso de transferencia de datos a través de la interfaz IBinding
, por ejemplo, con IBinding::Abort
, IBinding::Pause
y IBinding::Resume
.
Para una descripción de la interfaz IBinding
, vea Windows SDK.
CAsyncMonikerFile::GetFormatEtc
Llame a esta función para recuperar el formato de los datos en el flujo.
FORMATETC* GetFormatEtc() const;
Valor devuelto
Puntero a la estructura FORMATETC de Windows para la secuencia abierta actualmente. Devuelve NULL si el moniker no se ha enlazado, si no es asincrónico o si no se ha iniciado la operación asincrónica.
CAsyncMonikerFile::GetPriority
Se llama desde el cliente de un moniker asincrónico a medida que el proceso de enlace comienza a recibir la prioridad dada al subproceso para la operación de enlace.
virtual LONG GetPriority() const;
Valor devuelto
Prioridad en la que tendrá lugar la transferencia asincrónica. Una de las marcas de prioridad de subproceso estándar: THREAD_PRIORITY_ABOVE_NORMAL, THREAD_PRIORITY_BELOW_NORMAL, THREAD_PRIORITY_HIGHEST, THREAD_PRIORITY_IDLE, THREAD_PRIORITY_LOWEST, THREAD_PRIORITY_NORMAL y THREAD_PRIORITY_TIME_CRITICAL. Consulte la función SetThreadPriority de Windows para una descripción de estos valores.
Comentarios
GetPriority
no se debe llamar directamente. La implementación predeterminada devuelve THREAD_PRIORITY_NORMAL.
CAsyncMonikerFile::OnDataAvailable
Un moniker asincrónico llama a OnDataAvailable
para proporcionar datos al cliente a medida que están disponibles, durante las operaciones de enlace asincrónicas.
virtual void OnDataAvailable(DWORD dwSize, DWORD bscfFlag);
Parámetros
dwSize
La cantidad acumulativa (en bytes) de los datos disponibles desde el principio del enlace. Puede ser cero, lo que indica que la cantidad de datos no es relevante para la operación o que no hay ninguna cantidad específica disponible.
bscfFlag
Valor de enumeración BSCF. Puede ser uno o varios de los valores siguientes:
BSCF_FIRSTDATANOTIFICATION identifica la primera llamada a
OnDataAvailable
para una operación de enlace determinada.BSCF_INTERMEDIATEDATANOTIFICATION identifica una llamada intermedia a
OnDataAvailable
para una operación de enlace.BSCF_LASTDATANOTIFICATION identifica la última llamada a
OnDataAvailable
para una operación de enlace.
Comentarios
La implementación predeterminada de esta función no hace nada. Vea la siguiente implementación de ejemplo.
Ejemplo
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
Se llama por el moniker cuando hay pocos recursos.
virtual void OnLowResource();
Comentarios
La implementación predeterminada llama a GetBinding( )-> Abort( )
.
CAsyncMonikerFile::OnProgress
Se llama por el moniker repetidamente para indicar el progreso actual de esta operación de enlace, normalmente a intervalos razonables durante una operación larga.
virtual void OnProgress(
ULONG ulProgress,
ULONG ulProgressMax,
ULONG ulStatusCode,
LPCTSTR szStatusText);
Parámetros
ulProgress
Indica el progreso actual de la operación de enlace con respecto al máximo esperado indicado en ulProgressMax.
ulProgressMax
Indica el valor máximo esperado de ulProgress para la duración de las llamadas a OnProgress
de esta operación.
ulStatusCode
Proporciona información adicional sobre el progreso de la operación de enlace. Los valores válidos se toman de la enumeración BINDSTATUS
. Vea Comentarios para ver los valores posibles.
szStatusText
Información sobre el progreso actual, según el valor de ulStatusCode. Vea Comentarios para ver los valores posibles.
Comentarios
Los valores posibles para ulStatusCode (y szStatusText de cada valor) son:
Valor | Descripción |
---|---|
BINDSTATUS_FINDINGRESOURCE | La operación de enlace está buscando el recurso que contiene el objeto o el almacenamiento al que se está enlazando. szStatusText proporciona el nombre para mostrar del recurso que se busca (por ejemplo, "www.microsoft.com"). |
BINDSTATUS_CONNECTING | La operación de enlace está conectando al recurso que contiene el objeto o el almacenamiento al que se está enlazando. szStatusText proporciona el nombre para mostrar del recurso al que se está conectando (por ejemplo, una dirección IP). |
BINDSTATUS_SENDINGREQUEST | La operación de enlace está solicitando el objeto o el almacenamiento al que se está enlazando. szStatusText proporciona el nombre para mostrar del objeto (por ejemplo, un nombre de archivo). |
BINDSTATUS_REDIRECTING | La operación de enlace se ha redirigido a otra ubicación de datos. szStatusText proporciona el nombre para mostrar de la nueva ubicación de datos. |
BINDSTATUS_USINGCACHEDCOPY | La operación de enlace está recuperando el objeto o el almacenamiento solicitado de una copia en caché. szStatusText es NULL. |
BINDSTATUS_BEGINDOWNLOADDATA | La operación de enlace ha empezado a recibir el objeto o el almacenamiento al que se está enlazando. szStatusText proporciona el nombre para mostrar de la ubicación de los datos. |
BINDSTATUS_DOWNLOADINGDATA | La operación de enlace continúa recibiendo el objeto o el almacenamiento al que se está enlazando. szStatusText proporciona el nombre para mostrar de la ubicación de los datos. |
BINDSTATUS_ENDDOWNLOADDATA | La operación de enlace ha terminado de recibir el objeto o el almacenamiento al que se está enlazando. szStatusText proporciona el nombre para mostrar de la ubicación de los datos. |
BINDSTATUS_CLASSIDAVAILABLE | Está a punto de crearse una instancia del objeto al que se está enlazando. szStatusText proporciona el CLSID del nuevo objeto en formato de cadena, lo que permite al cliente cancelar la operación de enlace, si lo desea. |
CAsyncMonikerFile::OnStartBinding
Invalide esta función en las clases derivadas para realizar acciones cuando se inicia el enlace.
virtual void OnStartBinding();
Comentarios
El moniker vuelve a llamar a esta función. La implementación predeterminada no hace nada.
CAsyncMonikerFile::OnStopBinding
Se llama por el moniker al final de la operación de enlace.
virtual void OnStopBinding(HRESULT hresult, LPCTSTR szError);
Parámetros
hresult
HRESULT que es el valor del error o advertencia.
szErrort
Cadena de caracteres que describe el error.
Comentarios
Invalide esta función para realizar acciones cuando se detiene la transferencia. De forma predeterminada, la función libera a IBinding
.
Para una descripción de la interfaz IBinding
, vea Windows SDK.
CAsyncMonikerFile::Open
Llame a esta función miembro para abrir un archivo de forma asincrónica.
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
Puntero al archivo que se va a abrir de forma asincrónica. El archivo puede ser cualquier dirección URL o nombre de archivo válido.
pError
Puntero a las excepciones de archivo. En caso de error, se establecerá en la causa.
pMoniker
Puntero a la interfaz de moniker asincrónico IMoniker
, un moniker preciso que es la combinación del propio moniker del documento, que se puede recuperar con IOleClientSite::GetMoniker(OLEWHICHMK_CONTAINER)
y un moniker creado a partir del nombre de la ruta de acceso. El control puede usar este moniker para enlazar, pero no es el moniker que el control debe guardar.
pBindHost
Puntero a la interfaz IBindHost
que se usará para crear el moniker a partir de un nombre de ruta de acceso potencialmente relativo. Si el host de enlace no es válido o no proporciona un moniker, la llamada tiene Open(lpszFileName,pError)
como valor predeterminado . Para una descripción de la interfaz IBindHost
, vea Windows SDK.
pServiceProvider
Puntero a la interfaz IServiceProvider
. Si el proveedor de servicios no es válido o no proporciona el servicio para IBindHost
, la llamada tiene Open(lpszFileName,pError)
como valor predeterminado.
pUnknown
Puntero a la interfaz IUnknown
. Si se encuentra IServiceProvider
, la función consulta IBindHost
. Si el proveedor de servicios no es válido o no proporciona el servicio para IBindHost
, la llamada tiene Open(lpszFileName,pError)
como valor predeterminado.
Valor devuelto
Distinto de cero si el archivo se abre correctamente; de lo contrario, 0.
Comentarios
Esta llamada inicia el proceso de enlace.
Puede usar una dirección URL o un nombre de archivo para el parámetro lpszURL. Por ejemplo:
CMyMoniker *pMyMoniker = new CMyMoniker();
pMyMoniker->Open(_T("http://www.microsoft.com"));
O bien
CMyMoniker *pMyMoniker = new CMyMoniker();
pMyMoniker->Open(_T("file:c:\\mydata.dat"));
Consulte también
CMonikerFile (clase)
Gráfico de jerarquías
CMonikerFile (clase)
CDataPathProperty (clase)