Création de pages de propriétés pour le composant
Un objet notify crée des pages de propriétés personnalisées après que le sous-système de configuration réseau appelle la méthode INetCfgComponentPropertyUi::MergePropPages de l’objet notify. Les pages de propriétés personnalisées peuvent être fusionnées dans l’ensemble de pages par défaut de la feuille de propriétés du composant à l’aide de la méthode MergePropPages . MergePropPages retourne le nombre approprié de pages par défaut dans lesquelles les pages personnalisées peuvent être fusionnées.
Pour créer des pages de propriétés personnalisées, MergePropPages appelle la fonction COM CoTaskMemAlloc pour allouer de la mémoire pour les handles aux structures PROPSHEETPAGE. Chacun de ces handles représente une page de propriétés à créer. Si CoTaskMemAlloc alloue correctement la mémoire pour les handles, MergePropPages déclare et remplit les structures PROPSHEETPAGE pour chaque page de propriétés. Une fois que MergePropPages remplit ces structures, elle appelle la fonction Win32 CreatePropertySheetPage pour chaque page de propriétés. Dans cet appel, MergePropPages transmet l’adresse de la structure PROPSHEETPAGE à créer.
Une fonction de rappel de boîte de dialogue doit également être implémentée pour chaque page de propriétés créée par MergePropPages . Une fonction de rappel de boîte de dialogue traite les messages que le système d’exploitation envoie à la page de propriétés associée à cette fonction de boîte de dialogue. Pour associer une page de propriétés à une fonction de boîte de dialogue, MergePropPages doit pointer le membre pfnDlgProc de chaque structure PROPSHEETPAGE pour chaque page vers la fonction de boîte de dialogue de la page.
Une fonction de boîte de dialogue traite les messages suivants :
Le message WM_INITDIALOG, qui est envoyé à la fonction de boîte de dialogue immédiatement avant que le système d’exploitation n’affiche sa page de propriétés associée. Les fonctions de boîte de dialogue utilisent généralement ce message pour initialiser la page de propriétés et effectuer des tâches qui affectent l’apparence de la page de propriétés.
Le message WM_NOTIFY, qui est envoyé à la fonction de boîte de dialogue après qu’un événement s’est produit dans la page de propriétés. D’autres informations envoyées avec ce message identifient l’événement qui s’est produit. Ces informations d’événement sont contenues dans un pointeur vers une structure NMHDR. Les informations que NMHDR peut contenir pour une feuille de propriétés incluent, par exemple :
Événement PSN_APPLY, qui indique qu’un utilisateur clique sur OK, Fermer ou Appliquer sur la page de propriétés. Si l’utilisateur clique sur OK, Fermer ou Appliquer, la fonction de boîte de dialogue peut appeler la macro PropSheet_Changed pour informer la feuille de propriétés que les informations de la page ont changé. Dans cet appel, la fonction de boîte de dialogue transmet les handles à la feuille de propriétés et à la page. La fonction de boîte de dialogue peut appeler la fonction Win32 GetParent et passer le handle à la page pour récupérer le handle dans la feuille de propriétés.
Une fois que la fonction de boîte de dialogue a informé la feuille de propriétés de la modification, le sous-système de configuration réseau appelle la méthode INetCfgComponentPropertyUi::ValidateProperties pour case activée la validité de toutes les modifications. Si toutes les modifications sont valides, le sous-système appelle la méthode INetCfgComponentPropertyUi::ApplyProperties de l’objet notify pour que toutes les modifications prennent effet. Le sous-système de configuration réseau appelle ApplyProperties avant que le système d’exploitation ferme la boîte de dialogue.
La méthode ApplyProperties peut être implémentée pour récupérer les informations que l’utilisateur entre et pour définir les informations sur les membres de données de l’objet de notification.
L’événement PSN_RESET, qui indique que le système d’exploitation est sur le point de détruire une page de propriétés. Un utilisateur peut cliquer sur Annuler dans la page de propriétés pour lancer cette action. Si l’utilisateur clique sur Annuler, le sous-système de configuration réseau appelle la méthode INetCfgComponentPropertyUi::CancelProperties pour que toutes les modifications soient ignorées. Le sous-système de configuration réseau appelle CancelProperties avant la fermeture de la boîte de dialogue.
L’événement PSN_KILLACTIVE, qui indique qu’une page de propriétés est sur le point de devenir inactive. Cet événement se produit lorsqu’un utilisateur active une autre page ou clique sur OK.
Les fonctions de rappel de page de propriétés peuvent également être implémentées pour chaque page de propriétés créée par MergePropPages. Une fonction de rappel de page de propriétés effectue des opérations d’initialisation et de nettoyage pour la page. Pour associer une page de propriétés à une fonction de rappel de page de propriétés, MergePropPages doit pointer le membre pfnCallback de chaque structure PROPSHEETPAGE pour chaque page vers la fonction de rappel de page de propriétés pour cette page.
Consultez la documentation Microsoft Windows SDK pour plus d’informations sur :
création de pages de propriétés et de structures, de fonctions et de notifications pour les pages de propriétés
procédures, messages et structures de rappel de boîte de dialogue