Función de devolución de llamada LPOFNHOOKPROC (commdlg.h)
[A partir de Windows Vista, los cuadros de diálogo Abrir y Guardar como comunes se han reemplazado por el cuadro de diálogo elemento común. Se recomienda usar common Item Dialog API en lugar de estos cuadros de diálogo de la Biblioteca de cuadros de diálogo comunes.]
Recibe mensajes de notificación enviados desde el cuadro de diálogo. La función también recibe mensajes de los controles adicionales que haya definido especificando una plantilla de diálogo secundaria. El procedimiento de enlace OFNHookProc es una función de devolución de llamada definida por la aplicación o definida por la biblioteca que se usa con los cuadros de diálogo Abrir y Guardar como de estilo Explorador.
El tipo LPOFNHOOKPROC define un puntero a esta función de devolución de llamada. OFNHookProc es un marcador de posición para el nombre de función definido por la aplicación.
Sintaxis
LPOFNHOOKPROC Lpofnhookproc;
UINT_PTR Lpofnhookproc(
HWND unnamedParam1,
UINT unnamedParam2,
WPARAM unnamedParam3,
LPARAM unnamedParam4
)
{...}
Parámetros
unnamedParam1
Identificador del cuadro de diálogo secundario del cuadro de diálogo Abrir o Guardar como . Use la función GetParent para obtener el identificador del cuadro de diálogo Abrir o Guardar como .
unnamedParam2
Identificador del mensaje que se recibe.
unnamedParam3
Información adicional acerca del mensaje. El significado exacto depende del valor del parámetro unnamedParam2 .
unnamedParam4
Información adicional acerca del mensaje. El significado exacto depende del valor del parámetro unnamedParam2 . Si el parámetro unnamedParam2 indica el mensaje de WM_INITDIALOG , unnamedParam4 es un puntero a una estructura OPENFILENAME que contiene los valores especificados cuando se creó el cuadro de diálogo.
Valor devuelto
Si el procedimiento de enlace devuelve cero, el procedimiento de cuadro de diálogo predeterminado procesa el mensaje.
Si el procedimiento de enlace devuelve un valor distinto de cero, el procedimiento del cuadro de diálogo predeterminado omite el mensaje.
Para los mensajes de notificación CDN_SHAREVIOLATION y CDN_FILEOK , el procedimiento de enlace debe devolver un valor distinto de cero para indicar que ha usado la función SetWindowLong para establecer un valor distinto de cero DWL_MSGRESULT .
Comentarios
Si no especifica la marca OFN_EXPLORER al crear un cuadro de diálogo Abrir o Guardar como y desea un procedimiento de enlace, debe usar un procedimiento de enlace de estilo antiguo OFNHookProcOldStyle . En este caso, el cuadro de diálogo tendrá la interfaz de usuario de estilo antiguo.
Al usar las funciones GetOpenFileName o GetSaveFileName para crear un cuadro de diálogo Abrir o Guardar como de estilo explorador, puede proporcionar un procedimiento de enlace OFNHookProc . Para habilitar el procedimiento de enlace, use la estructura OPENFILENAME que pasó a la función de creación de diálogos. Especifique el puntero al procedimiento de enlace en el miembro lpfnHook y especifique la marca OFN_ENABLEHOOK en el miembro Flags .
Si proporciona un procedimiento de enlace para un cuadro de diálogo común de estilo explorador, el sistema crea un cuadro de diálogo que es un elemento secundario del cuadro de diálogo predeterminado. El procedimiento de enlace actúa como procedimiento de diálogo para el diálogo secundario. Este diálogo secundario se basa en la plantilla que especificó en la estructura OPENFILENAME o es un cuadro de diálogo secundario predeterminado si no se especifica ninguna plantilla. El cuadro de diálogo secundario se crea cuando el procedimiento de diálogo predeterminado procesa su mensaje de WM_INITDIALOG . Después de que el cuadro de diálogo secundario procese su propio mensaje de WM_INITDIALOG , el procedimiento de diálogo predeterminado mueve los controles estándar, si es necesario, para dejar espacio para los controles adicionales del cuadro de diálogo secundario. A continuación, el sistema envía el mensaje de notificación CDN_INITDONE al procedimiento de enlace.
El procedimiento de enlace no recibe mensajes destinados a los controles estándar del cuadro de diálogo predeterminado. Puede subclase los controles estándar, pero esto no se recomienda porque puede hacer que la aplicación sea incompatible con versiones posteriores. Sin embargo, los cuadros de diálogo comunes de estilo explorador proporcionan un conjunto de mensajes que el procedimiento de enlace puede usar para supervisar y controlar el cuadro de diálogo. Estos incluyen un conjunto de mensajes de notificación enviados desde el cuadro de diálogo, así como mensajes que puede enviar para recuperar información del cuadro de diálogo. Para obtener una lista completa de estos mensajes, vea Procedimientos de enlace de estilo explorador.
Si el procedimiento de enlace procesa el mensaje de WM_CTLCOLORDLG , debe devolver un identificador de pincel válido para pintar el fondo del cuadro de diálogo. En general, si procesa algún mensaje WM_CTLCOLOR* , debe devolver un identificador de pincel válido para pintar el fondo del control especificado.
No llame a la función EndDialog desde el procedimiento de enlace. En su lugar, el procedimiento de enlace puede llamar a la función PostMessage para publicar un mensaje WM_COMMAND con el valor IDCANCEL en el procedimiento del cuadro de diálogo. La publicación de IDCANCEL cierra el cuadro de diálogo y hace que la función del cuadro de diálogo devuelva FALSE. Si necesita saber por qué el procedimiento de enlace cerró el cuadro de diálogo, debe proporcionar su propio mecanismo de comunicación entre el procedimiento de enlace y la aplicación.
Requisitos
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | commdlg.h (incluye Windows.h) |
Consulte también
Biblioteca de cuadros de diálogo comunes
Conceptual
Referencia