Compartir a través de


Método IPrintDialogCallback::HandleMessage (commdlg.h)

Lo llama PrintDlgEx para dar a la aplicación la oportunidad de controlar los mensajes enviados al cuadro de diálogo secundario en la parte inferior de la página General de la hoja de propiedades de impresión. El cuadro de diálogo secundario contiene controles similares a los del cuadro de diálogo Imprimir .

Sintaxis

HRESULT HandleMessage(
  HWND    hDlg,
  UINT    uMsg,
  WPARAM  wParam,
  LPARAM  lParam,
  LRESULT *pResult
);

Parámetros

hDlg

Tipo: HWND

Identificador del cuadro de diálogo secundario en la parte inferior de la página General .

uMsg

Tipo: UINT

Identificador del mensaje que se recibe.

wParam

Tipo: WPARAM

Información adicional acerca del mensaje. El significado exacto depende del valor del parámetro uMsg .

lParam

Tipo: LPARAM

Información adicional acerca del mensaje. El significado exacto depende del valor del parámetro uMsg .

Si el parámetro uMsg indica el mensaje de WM_INITDIALOG , lParam es un puntero a una estructura PRINTDLGEX que contiene los valores especificados cuando se creó la hoja de propiedades.

pResult

Tipo: LRESULT*

Indica el resultado que va a devolver el procedimiento del cuadro de diálogo para el mensaje. El valor al que se apunta debe ser TRUE si procesa el mensaje; de lo contrario, debe ser FALSE o cualquier valor adecuado según el tipo de mensaje.

Valor devuelto

Tipo: HRESULT

Devuelve S_OK si la implementación de IPrintDialogCallback::HandleMessage controló el mensaje. En este caso, la función PrintDlgEx no realiza ningún control de mensajes predeterminado.

Devuelve S_FALSE si quieres que PrintDlgEx realice su control de mensajes predeterminado.

Comentarios

Para los mensajes de notificación pasados por el mensaje de WM_NOTIFY , debe usar la función SetWindowLong con el valor DWL_MSGRESULT para establecer un valor devuelto. Al llamar a SetWindowLong, use GetParent(hDlg) para establecer el valor DWL_MSGRESULT de la página General , que es el elemento primario de la ventana secundaria.

El procedimiento de cuadro de diálogo predeterminado para la ventana secundaria de la parte inferior de la página General procesa el mensaje WM_INITDIALOG antes de pasarlo al método HandleMessage . Para todos los demás mensajes enviados a la ventana secundaria, HandleMessage recibe primero el mensaje. A continuación, el valor devuelto handleMessage determina si el procedimiento de diálogo predeterminado procesa el mensaje o lo omite.

Si HandleMessage procesa el mensaje WM_CTLCOLORDLG , debe devolver un identificador de pincel válido para pintar el fondo del cuadro de diálogo. En general, si HandleMessage 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 método HandleMessage . En su lugar, HandleMessage puede llamar a la función PostMessage para publicar un mensaje de WM_COMMAND con el valor IDABORT en el procedimiento del cuadro de diálogo. La publicación de IDABORT cierra la hoja de propiedades print y hace que PrintDlgEx devuelva PD_RESULT_CANCEL en el miembro dwResultAction de la estructura PRINTDLGEX . Si necesita saber por qué HandleMessage cerró el cuadro de diálogo, debe proporcionar su propio mecanismo de comunicación entre el método HandleMessage y la aplicación.

Puede subclase los controles estándar del cuadro de diálogo secundario en la parte inferior de la página General . Estos controles estándar son similares a los que se encuentran en el cuadro de diálogo Imprimir . Sin embargo, el procedimiento del cuadro de diálogo predeterminado también puede subclase de los controles. Por este motivo, debe subclase los controles cuando HandleMessage procesa el mensaje WM_INITDIALOG . Esto garantiza que el procedimiento de subclase reciba mensajes específicos del control antes del procedimiento de subclase establecido por el procedimiento del cuadro de diálogo.

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)
Archivo DLL Comdlg32.dll

Consulte también

Biblioteca de cuadros de diálogo comunes

Conceptual

EndDialog

IPrintDialogCallback

Otros recursos

PRINTDLGEX

PostMessage

PrintDlgEx

Referencia

SetWindowLong

WM_COMMAND

WM_CTLCOLORDLG

WM_INITDIALOG

WM_NOTIFY