Partager via


Gestion des messages Windows pour les pages de propriétés

Lorsqu’un fournisseur de pages de propriétés d’appareil gère une demande de création d’une page de propriétés pour son appareil ou sa classe d’appareil, il retourne l’adresse d’une procédure de boîte de dialogue pour la page de propriétés. La procédure de boîte de dialogue doit initialiser la page de propriétés lorsqu’elle obtient un message WM_INITDIALOG, et elle doit être prête à gérer les modifications apportées aux propriétés de l’appareil lorsqu’elle obtient un message WM_NOTIFY. La procédure peut également gérer tous les autres messages de ce type dont elle peut avoir besoin, comme décrit dans la documentation Microsoft Windows SDK.

En réponse à un message WM_INITDIALOG, la procédure de boîte de dialogue initialise les informations dans la page de propriétés. Ces informations peuvent inclure une icône qui représente l’appareil, le nom convivial de l’appareil et sa description de l’appareil PnP.

SetupDiLoadClassIcon charge les icônes d’une classe d’appareil spécifiée et retourne un handle à l’icône volumineuse chargée qui peut être utilisé dans un appel suivant à SendDlgItemMessage. Par exemple :

if (SetupDiLoadClassIcon(
        &pTestPropPageData->DeviceInfoData->ClassGuid, &ClassIcon, 
        NULL)) {
    OldIcon = (HICON)SendDlgItemMessage(
                        hDlg, 
                        IDC_TEST_ICON,
                        STM_SETICON, (WPARAM)ClassIcon, 0);
    if (OldIcon) {
                DestroyIcon(OldIcon);
    }
}

Le handle retourné dans ClassIcon peut être converti en WPARAM requis par la fonction SendDlgItemMessage. Dans l’exemple, IDC_TEST_ICON identifie le contrôle dans la boîte de dialogue qui reçoit le message STM_SETICON. La valeur de IDC_TEST_ICON doit être définie dans le fournisseur. Pour obtenir d’autres fonctions qui manipulent des icônes et des bitmaps, consultez Fonctions d’installation d’appareil. Pour plus d’informations sur SendDlgItemMessage, DestroyIcon et l’utilisation d’icônes dans les boîtes de dialogue, consultez la documentation du Kit de développement logiciel (SDK) Windows.

En plus d’une icône qui représente l’appareil, une page de propriétés d’appareil classique comprend une description ou un « nom convivial » de l’appareil et affiche les paramètres actuels des propriétés de l’appareil. Le gestionnaire Plug-and-Play (PnP) stocke les propriétés PnP de chaque appareil dans le Registre. Un fournisseur de pages de propriétés peut appeler SetupDiGetDeviceRegistryProperty pour obtenir la valeur de cette propriété. Si des informations de configuration spécifiques à l’appareil ou à la classe ont également été stockées dans le Registre dans le cadre du processus d’installation, un fournisseur de pages de propriétés peut utiliser d’autres fonctions SetupDiXxx pour extraire ces informations à des fins d’affichage. Pour plus d’informations, consultez Fonctions d’installation d’appareil.

Lorsque certains types de modifications se produisent sur la page, la feuille de propriétés envoie un message WM_NOTIFY à la procédure de boîte de dialogue. La procédure de boîte de dialogue doit être préparée pour extraire le code de notification des paramètres du message et répondre de manière appropriée.

Pour plus d’informations sur les notifications qu’une procédure de boîte de dialogue peut rencontrer, telles que les notifications PSN_APPLY ou PSN_HELP, et sur la façon dont la procédure doit les gérer, consultez Notifications dans la documentation du Kit de développement logiciel (SDK) Windows.

PSN_APPLY Notifications

La feuille de propriétés envoie un message de notification PSN_APPLY lorsque l’utilisateur clique sur OK, Fermer ou Appliquer. En réponse à ce message, la procédure de boîte de dialogue doit valider et appliquer les modifications apportées par l’utilisateur.

Lorsqu’il reçoit la notification PSN_APPLY, le fournisseur doit effectuer les opérations suivantes :

  1. Si ce n’est déjà fait, obtenez un pointeur vers les paramètres d’installation de l’appareil (SP_DEVINSTALL_PARAMS structure) de l’appareil. Cette structure est disponible en appelant SetupDiGetDeviceInstallParams, en passant les fichiers DeviceInfoSet et DeviceInfoData enregistrés qui ont été passés dans la zone référencée par le membre lParam de la structure PROPSHEETPAGE.

  2. Vérifiez que les modifications de l’utilisateur sont valides.

  3. Si le fournisseur permet à un utilisateur de définir une propriété qui exige que Windows supprime et redémarre l’appareil, il doit définir l’indicateur DI_FLAGSEX_PROPCHANGE_PENDING dans le champ FlagsEx de la structure de SP_DEVINSTALL_PARAMS retournée.

    Toutefois, si le fournisseur peut s’assurer que les modifications ne nécessitent pas que les pilotes de l’appareil soient arrêtés, puis redémarrés, il n’a pas besoin de définir cet indicateur.

  4. Appelez SetupDiSetDeviceInstallParams avec la structure SP_DEVINSTALL_PARAMS modifiée pour définir les nouveaux paramètres.

PSN_RESET Notifications

La feuille de propriétés envoie un message de notification PSN_RESET lorsque l’utilisateur clique sur Annuler. En réponse à ce message, la procédure de boîte de dialogue doit ignorer toutes les modifications apportées par l’utilisateur.