Partager via


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

Appelé par PrintDlgEx pour permettre à votre application de gérer les messages envoyés à la boîte de dialogue enfant dans la partie inférieure de la page Général de la feuille des propriétés d’impression. La boîte de dialogue enfant contient des contrôles similaires à ceux de la boîte de dialogue Imprimer .

Syntaxe

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

Paramètres

hDlg

Type : HWND

Handle de la boîte de dialogue enfant dans la partie inférieure de la page Général .

uMsg

Type : UINT

Identificateur du message reçu.

wParam

Type : WPARAM

Informations supplémentaires sur le message. La signification exacte dépend de la valeur du paramètre uMsg .

lParam

Type : LPARAM

Informations supplémentaires sur le message. La signification exacte dépend de la valeur du paramètre uMsg .

Si le paramètre uMsg indique le message WM_INITDIALOG , lParam est un pointeur vers une structure PRINTDLGEX contenant les valeurs spécifiées lors de la création de la feuille de propriétés.

pResult

Type : LRESULT*

Indique le résultat à retourner par la procédure de boîte de dialogue pour le message. La valeur pointée vers doit être TRUE si vous traitez le message. Sinon, elle doit être FALSE ou une valeur appropriée en fonction du type de message.

Valeur retournée

Type : HRESULT

Retournez S_OK si votre implémentation IPrintDialogCallback::HandleMessage a géré le message. Dans ce cas, la fonction PrintDlgEx n’effectue aucune gestion des messages par défaut.

Retournez S_FALSE si vous souhaitez que PrintDlgEx effectue sa gestion des messages par défaut.

Notes

Pour les messages de notification transmis par le message WM_NOTIFY , vous devez utiliser la fonction SetWindowLong avec la valeur DWL_MSGRESULT pour définir une valeur de retour. Lorsque vous appelez SetWindowLong, utilisez GetParent(hDlg) pour définir la valeur DWL_MSGRESULT de la page Général , qui est le parent de la fenêtre enfant.

La procédure de boîte de dialogue par défaut de la fenêtre enfant dans la partie inférieure de la page Général traite le message WM_INITDIALOG avant de le transmettre à la méthode HandleMessage . Pour tous les autres messages envoyés à la fenêtre enfant, HandleMessage reçoit d’abord le message. Ensuite, la valeur de retour HandleMessage détermine si la procédure de boîte de dialogue par défaut traite le message ou l’ignore.

Si HandleMessage traite le message WM_CTLCOLORDLG , il doit retourner une poignée de pinceau valide pour peindre l’arrière-plan de la boîte de dialogue. En général, si HandleMessage traite un message WM_CTLCOLOR* , il doit retourner un handle de pinceau valide pour peindre l’arrière-plan du contrôle spécifié.

N’appelez pas la fonction EndDialog à partir de la méthode HandleMessage . Au lieu de cela, HandleMessage peut appeler la fonction PostMessage pour publier un message WM_COMMAND avec la valeur IDABORT dans la procédure de boîte de dialogue. La publication d’IDABORT ferme la feuille de propriétés d’impressionet entraînele retour de PD_RESULT_CANCEL dans le membre dwResultAction de la structure PRINTDLGEX . Si vous avez besoin de savoir pourquoi HandleMessage a fermé la boîte de dialogue, vous devez fournir votre propre mécanisme de communication entre la méthode HandleMessage et votre application.

Vous pouvez sous-classer les contrôles standard de la boîte de dialogue enfant dans la partie inférieure de la page Général . Ces contrôles standard sont similaires à ceux de la boîte de dialogue Imprimer . Toutefois, la procédure de boîte de dialogue par défaut peut également sous-classer les contrôles. Pour cette raison, vous devez sous-classer les contrôles lorsque HandleMessage traite le message WM_INITDIALOG . Cela garantit que votre procédure de sous-classe reçoit des messages spécifiques au contrôle avant la procédure de sous-classe définie par la procédure de boîte de dialogue.

Configuration requise

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête commdlg.h (inclure Windows.h)
DLL Comdlg32.dll

Voir aussi

Bibliothèque de boîtes de dialogue commune

Conceptuel

EndDialog

IPrintDialogCallback

Autres ressources

PRINTDLGEX

PostMessage

PrintDlgEx

Référence

SetWindowLong

WM_COMMAND

WM_CTLCOLORDLG

WM_INITDIALOG

WM_NOTIFY