Share via


Metodo IPrintDialogCallback::HandleMessage (commdlg.h)

Chiamato da PrintDlgEx per consentire all'applicazione di gestire i messaggi inviati alla finestra di dialogo figlio nella parte inferiore della pagina Generale della finestra delle proprietà di stampa. La finestra di dialogo figlio contiene controlli simili a quelli della finestra di dialogo Stampa .

Sintassi

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

Parametri

hDlg

Tipo: HWND

Handle per la finestra di dialogo figlio nella parte inferiore della pagina Generale .

uMsg

Tipo: UINT

Identificatore del messaggio ricevuto.

wParam

Tipo: WPARAM

Ulteriori informazioni sul messaggio. Il significato esatto dipende dal valore del parametro uMsg .

lParam

Tipo: LPARAM

Ulteriori informazioni sul messaggio. Il significato esatto dipende dal valore del parametro uMsg .

Se il parametro uMsg indica il messaggio WM_INITDIALOG , lParam è un puntatore a una struttura PRINTDLGEX contenente i valori specificati al momento della creazione della finestra delle proprietà.

pResult

Tipo: LRESULT*

Indica il risultato da restituire dalla procedura della finestra di dialogo per il messaggio. Il valore a cui punta deve essere TRUE se si elabora il messaggio; in caso contrario, deve essere FALSE o qualsiasi valore appropriato in base al tipo di messaggio.

Valore restituito

Tipo: HRESULT

Restituisce S_OK se l'implementazione IPrintDialogCallback::HandleMessage ha gestito il messaggio. In questo caso, la funzione PrintDlgEx non esegue alcuna gestione predefinita dei messaggi.

Restituisce S_FALSE se si desidera che PrintDlgEx esegua la gestione predefinita dei messaggi.

Commenti

Per i messaggi di notifica passati dal messaggio WM_NOTIFY , è necessario usare la funzione SetWindowLong con il valore DWL_MSGRESULT per impostare un valore restituito. Quando chiami SetWindowLong, usa GetParent(hDlg) per impostare il valore DWL_MSGRESULT della pagina Generale , che è l'elemento padre della finestra figlio.

La procedura predefinita della finestra di dialogo per la finestra figlio nella parte inferiore della pagina Generale elabora il messaggio WM_INITDIALOG prima di passarlo al metodo HandleMessage . Per tutti gli altri messaggi inviati alla finestra figlio, HandleMessage riceve prima il messaggio. Il valore restituito HandleMessage determina quindi se la routine della finestra di dialogo predefinita elabora il messaggio o la ignora.

Se HandleMessage elabora il messaggio WM_CTLCOLORDLG , deve restituire un handle di pennello valido per disegnare lo sfondo della finestra di dialogo. In generale, se HandleMessage elabora un messaggio WM_CTLCOLOR* , deve restituire un handle di pennello valido per disegnare lo sfondo del controllo specificato.

Non chiamare la funzione EndDialog dal metodo HandleMessage . HandleMessage può invece chiamare la funzione PostMessage per pubblicare un messaggio WM_COMMAND con il valore IDABORT alla routine della finestra di dialogo. L'inserimento di IDABORT chiude la finestra delle proprietà di stampa e fa sì che PrintDlgEx restituisca PD_RESULT_CANCEL nel membro dwResultAction della struttura PRINTDLGEX . Se è necessario sapere perché HandleMessage ha chiuso la finestra di dialogo, è necessario fornire il proprio meccanismo di comunicazione tra il metodo HandleMessage e l'applicazione.

È possibile sottoclassare i controlli standard della finestra di dialogo figlio nella parte inferiore della pagina Generale . Questi controlli standard sono simili a quelli disponibili nella finestra di dialogo Stampa . Tuttavia, la routine della finestra di dialogo predefinita può anche sottoclasse i controlli. Per questo motivo, è consigliabile sottoclasse i controlli quando HandleMessage elabora il messaggio WM_INITDIALOG . In questo modo, la routine della sottoclasse riceve messaggi specifici del controllo prima della routine della sottoclasse impostata dalla routine della finestra di dialogo.

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione commdlg.h (include Windows.h)
DLL Comdlg32.dll

Vedi anche

Libreria delle finestre di dialogo comuni

Informazioni concettuali

EndDialog

IPrintDialogCallback

Altre risorse

PRINTDLGEX

PostMessage

PrintDlgEx

Riferimento

Setwindowlong

WM_COMMAND

WM_CTLCOLORDLG

WM_INITDIALOG

WM_NOTIFY