Condividi tramite


Funzione di callback LPPRINTHOOKPROC (commdlg.h)

Riceve messaggi o notifiche destinati alla procedura predefinita della finestra di dialogo Stampa . Si tratta di una funzione di callback definita dall'applicazione o definita dalla libreria usata con la funzione PrintDlg .

Il tipo LPPRINTHOOKPROC definisce un puntatore a questa funzione di callback. PrintHookProc è un segnaposto per il nome di funzione definito dall'applicazione o dalla libreria.

Sintassi

LPPRINTHOOKPROC Lpprinthookproc;

UINT_PTR Lpprinthookproc(
  HWND unnamedParam1,
  UINT unnamedParam2,
  WPARAM unnamedParam3,
  LPARAM unnamedParam4
)
{...}

Parametri

unnamedParam1

Handle della finestra di dialogo Stampa per cui è previsto il messaggio.

unnamedParam2

Identificatore del messaggio ricevuto.

unnamedParam3

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

unnamedParam4

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

Se il parametro unnamedParam2 indica il messaggio WM_INITDIALOG , unnamedParam4 è un puntatore a una struttura PRINTDLG contenente i valori specificati al momento della creazione della finestra di dialogo.

Valore restituito

Se la procedura hook restituisce zero, la finestra di dialogo predefinita elabora il messaggio.

Se la procedura di hook restituisce un valore diverso da zero, la procedura predefinita della finestra di dialogo ignora il messaggio.

Commenti

Quando si usa la funzione PrintDlg per creare una finestra di dialogo Stampa, è possibile fornire una procedura di hook PrintHookProc per elaborare messaggi o notifiche destinati alla procedura della finestra di dialogo. Per abilitare la procedura di hook, usare la struttura PRINTDLG passata alla funzione di creazione della finestra di dialogo. Specificare l'indirizzo della routine hook nel membro lpfnPrintHook e specificare il flag PD_ENABLEPRINTHOOK nel membro Flags .

La procedura predefinita della finestra di dialogo elabora il messaggio di WM_INITDIALOG prima di passarlo alla procedura di hook. Per tutti gli altri messaggi, la procedura di hook riceve prima il messaggio. Il valore restituito della procedura di hook determina quindi se la procedura di dialogo predefinita elabora il messaggio o la ignora.

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

Non chiamare la funzione EndDialog dalla procedura di hook. La procedura di hook può invece chiamare la funzione PostMessage per pubblicare un messaggio di WM_COMMAND con il valore IDABORT nella procedura della finestra di dialogo. La registrazione IDABORT chiude la finestra di dialogo e causa la restituzione false della funzione della finestra di dialogo. Se è necessario sapere perché la procedura di hook ha chiuso la finestra di dialogo, è necessario fornire il proprio meccanismo di comunicazione tra la procedura di hook e l'applicazione.

È possibile sottoclassere i controlli standard di una finestra di dialogo comune. Tuttavia, la procedura della finestra di dialogo può anche sottoclasse i controlli. A causa di questo, è necessario controllare le sottoclassi quando la routine hook elabora il messaggio di WM_INITDIALOG . Ciò garantisce che la routine sottoclasse riceva i messaggi specifici del controllo prima che la routine della sottoclasse impostata dalla procedura 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 (includere Windows.h)

Vedi anche

Libreria di finestre di dialogo comuni

Informazioni concettuali

EndDialog

PRINTDLG

PostMessage

StampaDlg

Riferimento

WM_CTLCOLORDLG

WM_INITDIALOG