Partager via


Fonction SHMessageBoxCheckW (shlwapi.h)

[SHMessageBoxCheck est disponible pour une utilisation dans les systèmes d’exploitation spécifiés dans la section Configuration requise. Il peut être modifié ou indisponible dans les versions suivantes.]

Affiche une zone de message qui donne à l’utilisateur la possibilité de supprimer d’autres occurrences. Si l’utilisateur a déjà choisi de supprimer la boîte de message, la fonction n’affiche pas de boîte de dialogue et retourne simplement la valeur par défaut.

Syntaxe

int SHMessageBoxCheckW(
  [in, optional] HWND    hwnd,
  [in]           LPCWSTR pszText,
  [in]           LPCWSTR pszCaption,
                 UINT    uType,
                 int     iDefault,
  [in]           LPCWSTR pszRegVal
);

Paramètres

[in, optional] hwnd

Type : HWND

Handle de fenêtre au propriétaire de la boîte de message. Cette valeur peut être NULL.

[in] pszText

Type : LPCTSTR

Pointeur vers une chaîne terminée par null qui contient le message à afficher.

[in] pszCaption

Type : LPCTSTR

Pointeur vers une chaîne terminée par null qui contient le titre de la zone de message. Si ce paramètre a la valeur NULL, le titre est défini sur Error !.

uType

Type : UINT

Indicateurs qui spécifient le contenu et le comportement de la zone de message. Cette fonction prend uniquement en charge un sous-ensemble des indicateurs pris en charge par MessageBox. Si vous utilisez des indicateurs qui ne sont pas répertoriés ci-dessous, le comportement de la fonction n’est pas défini.

Vous devez spécifier les boutons à afficher en définissant un seul des indicateurs suivants.

MB_OKCANCEL

Affichez une zone de message avec les boutons OK et Annuler .

MB_YESNO

Affichez une zone de message avec les boutons Oui et Non .

MB_OK

Affichez une zone de message avec un bouton OK .

Vous pouvez afficher une icône facultative en définissant un et un seul des indicateurs suivants.

MB_ICONHAND

Affichez une icône de signe d’arrêt.

MB_ICONQUESTION

Affichez une icône de point d’interrogation.

MB_ICONEXCLAMATION

Affichez une icône de point d’exclamation.

MB_ICONINFORMATION

Affichez une icône avec un « i » en minuscules dans un cercle.

iDefault

Type : int

Valeur que la fonction retourne lorsque l’utilisateur a choisi de ne pas afficher à nouveau la boîte de message. Si l’utilisateur n’a pas choisi de supprimer la zone de message, celle-ci s’affiche et la fonction ignore iDefault.

[in] pszRegVal

Type : LPCTSTR

Pointeur vers une chaîne terminée par null qui contient une valeur de chaîne unique à associer à ce message. Pour éviter les collisions avec les valeurs utilisées par Microsoft, cette chaîne doit inclure un GUID. Cette chaîne ne doit pas dépasser REGSTR_MAX_VALUE_LENGTH caractères, y compris le caractère null de fin.

Valeur retournée

Type : int

Si l’utilisateur a déjà choisi de supprimer la zone de message, la fonction retourne immédiatement la valeur affectée à iDefault.

Si l’utilisateur clique sur le bouton OK, Annuler, Oui ou Non , la fonction retourne RESPECTIVEment IDOK, IDCANCEL, IDYES ou IDNO.

Si l’utilisateur ferme la boîte de message en cliquant sur le bouton X dans le légende, la fonction retourne IDCANCEL. Cette valeur est retournée dans ce cas même si l’indicateur MB_OKCANCEL n’a pas été défini.

Si une erreur se produit, la valeur de retour est normalement -1. Toutefois, dans certaines conditions de mémoire faible, la fonction peut retourner iDefault.

Remarques

Avertissement de sécurité : N’effectuez aucune action dangereuse si la fonction retourne –1 ou iDefault. Si une erreur se produit lors de la tentative d’affichage de la boîte de message, SHMessageBoxCheck retourne –1 ou, dans certains cas, iDefault. Ces erreurs peuvent être causées par une mémoire ou des ressources insuffisantes. Si vous obtenez l’une de ces valeurs de retour, vous devez savoir que l’utilisateur n’a pas nécessairement vu la boîte de dialogue et n’a donc pas accepté positivement une action.

Ne confondez pas « Ne pas afficher cette boîte de dialogue » avec « Mémoriser cette réponse ». SHMessageBoxCheck ne fournit pas la fonctionnalité « Mémoriser cette réponse ». Si l’utilisateur choisit de supprimer à nouveau la zone de message, la fonction ne conserve pas le bouton sur lequel il a cliqué. Au lieu de cela, les appels suivants de SHMessageBoxCheck retournent simplement la valeur spécifiée par iDefault. Considérez l'exemple suivant.


int iResult = SHMessageBoxCheck(hwnd, 
                                TEXT("Do you want to exit without saving?"),
                                TEXT("Warning"), 
                                MB_YESNO, 
                                IDNO,
                                TEXT("{d9108ba3-9a61-4398-bfbc-b02102c77e8a}");

Si l’utilisateur sélectionne Dans le futur, ne m’affichez pas cette boîte de dialogue et cliquez sur le bouton Oui , SHMessageBoxCheck retourne IDYES. Toutefois, la prochaine fois que ce code est exécuté, SHMessageBoxCheck ne retourne pas IDYES, même si l’utilisateur a sélectionné Oui à l’origine. Au lieu de cela, il retourne IDNO, car il s’agit de la valeur spécifiée par iDefault.

Le bouton par défaut affiché par la boîte de message doit être d’accord avec votre valeur iDefault . L’absence de prise en charge de l’indicateur MB_DEFBUTTON2 signifie qu’iDefault doit être défini sur IDOK si vous avez spécifié l’indicateur MB_OK ou MB_OKCANCEL. La valeur iDefault doit être définie sur IDYES si vous avez défini l’indicateur MB_YESNO.

SHMessageBoxCheck enregistre les zones de message que l’utilisateur a choisi de supprimer sous la clé de Registre suivante.

HKEY_CURRENT_USER
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  LowRegistry
                     DontShowMeThisDialogAgain

Notes

L’en-tête shlwapi.h définit SHMessageBoxCheck comme un alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête shlwapi.h
DLL Shlwapi.dll (version 5.0 ou ultérieure)