Condividi tramite


Funzione di callback LPCCHOOKPROC (commdlg.h)

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

Il tipo LPCCHOOKPROC definisce un puntatore a questa funzione di callback. CCHookProc è un segnaposto per il nome della funzione definito dall'applicazione.

Sintassi

LPCCHOOKPROC Lpcchookproc;

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

Parametri

unnamedParam1

Handle nella finestra di dialogo Colore 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 CHOOSECOLOR 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 ChooseColor per creare una finestra di dialogo Color , è possibile fornire una routine di hook CCHookProc per elaborare messaggi o notifiche destinati alla procedura della finestra di dialogo. Per abilitare la procedura di hook, usare la struttura CHOOSECOLOR passata alla funzione di creazione della finestra di dialogo. Specificare l'indirizzo della routine hook nel membro lpfnHook e specificare il flag CC_ENABLEHOOK 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

Requisito Valore
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

CHOOSECOLOR

ScegliColor

Libreria di finestre di dialogo comuni

Informazioni concettuali

EndDialog

PostMessage

Riferimento

WM_CTLCOLORDLG

WM_INITDIALOG