À propos des contrôles du sélecteur de date et d’heure

Un contrôle de sélecteur de date et d’heure (DTP) fournit une interface simple et intuitive par le biais de laquelle échanger des informations de date et d’heure avec un utilisateur. Par exemple, avec un contrôle DTP, vous pouvez demander à l’utilisateur d’entrer une date, puis de récupérer facilement la sélection.

Les rubriques suivantes sont présentées :

Notes

Windows ne prend pas en charge les dates antérieures à 1601. Pour plus d’informations, consultez la structure FILETIME .

Le contrôle est basé sur le calendrier grégorien, qui a été introduit en 1753. Il ne calcule pas les dates qui sont cohérentes avec le calendrier julien.

Interface utilisateur du sélecteur de date et d’heure

La zone cliente d’un contrôle de sélecteur de date et d’heure (DTP) affiche des informations de date ou d’heure, ou les deux, et sert d’interface par le biais de laquelle les utilisateurs modifient les informations. La date peut être sélectionnée à partir d’un calendrier ou à l’aide d’un contrôle up-down ; L’heure peut être modifiée en tapant dans les champs définis par les chaînes de format du contrôle. Si vous le souhaitez, le contrôle affiche une zone de case activée. Lorsqu’elle est cochée, la valeur du contrôle peut être récupérée ; sinon, le contrôle est considéré comme non initialisé.

L’illustration suivante montre une fenêtre qui contient trois contrôles de sélecteur de dates. Le premier contrôle de sélecteur de dates a été créé avec le style DTS_SHOWNONE , le second avec le style DTS_UPDOWN et le troisième sans styles spéciaux. Dans le troisième contrôle, l’utilisateur a cliqué sur la flèche vers le bas pour afficher le calendrier.

capture d’écran d’une fenêtre qui illustre trois styles de contrôles de sélecteur de date

L’illustration suivante montre une fenêtre avec trois contrôles qui contiennent l’heure.

Le premier contrôle a été créé avec le style DTS_TIMEFORMAT et affiche l’heure dans l’heure par défaut, qui se compose de quatre champs. L’utilisateur peut taper une valeur valide dans l’un de ces champs, ou sélectionner le champ et modifier la valeur à l’aide du contrôle haut-bas ou des touches de direction.

Le deuxième contrôle affiche un format personnalisé défini à l’aide de DateTime_SetFormat. Comme avec le premier contrôle, l’utilisateur peut modifier les champs d’heure en tapant ou en utilisant des touches de direction. Le jour de la semaine peut être modifié en sélectionnant une date dans le calendrier qui s’ouvre lorsque l’utilisateur clique sur la flèche vers le bas.

Le troisième contrôle montre comment ajouter du texte arbitraire au contrôle. L’utilisateur peut sélectionner une heure (de 1 à 24) en tapant, en utilisant les touches de direction ou en utilisant le contrôle haut-bas.

capture d’écran d’une fenêtre qui montre trois contrôles qui contiennent l’heure

Le contrôle DTP met automatiquement à jour les informations internes en fonction de l’entrée de l’utilisateur. Le contrôle reconnaît les éléments suivants comme une entrée valide.

Catégorie d’entrée Description
Flèches Le contrôle accepte les touches de direction pour parcourir les champs du contrôle et modifier les valeurs. L’utilisateur peut appuyer sur les touches ou pour se déplacer dans le contrôle Si l’utilisateur tente de dépasser le dernier champ dans une direction donnée, le focus clavier est « encapsulé » sur le champ situé du côté opposé du contrôle. Les clés et modifient les valeurs du champ actuel de manière incrémentielle.
Fin et Accueil Le contrôle accepte le VK_END et VK_HOME clés virtuelles pour modifier la valeur dans le champ actuel en ses limites supérieures et inférieures, respectivement.
Clés de fonction La clé active le mode d’édition. La touche entraîne l’affichage d’un contrôle de calendrier de mois de liste déroulante (appuyez également sur cette option).
Nombres Le contrôle accepte l’entrée numérique dans des segments à deux caractères. Si la valeur entrée par l’utilisateur n’est pas valide (comme la définition du mois sur 14), le contrôle la rejette et rétablit l’affichage à la valeur précédente.
Plus et Moins Le contrôle accepte le VK_ADD et VK_SUBTRACT clés virtuelles du pavé numérique pour incrémenter et décrémenter la valeur dans le champ actif.

 

Les contrôles DTP qui n’utilisent pas le style DTS_UPDOWN affichent un bouton de direction. Si l’utilisateur clique sur ce bouton, un contrôle calendrier mensuel est désactivé. L’utilisateur peut sélectionner une date spécifique en cliquant sur une zone du calendrier.

Styles et formats des contrôles sélecteur de date et d’heure

Les contrôles de sélecteur de date et d’heure (DTP) ont plusieurs styles de contrôle sélecteur de date et d’heure qui déterminent l’apparence et le comportement d’un contrôle. Spécifiez le style lors de la création du contrôle avec le paramètre dwStyle de CreateWindowEx. Pour récupérer ou modifier le style de fenêtre après avoir créé le contrôle, utilisez GetWindowLong et SetWindowLong.

Formats prédéfinis

Trois formats prédéfinis sont disponibles pour afficher la date et un pour afficher l’heure. Définissez ces formats en choisissant l’un des styles de fenêtre suivants.

Format Description
DTS_LONGDATEFORMAT L’affichage se présente comme suit : « Vendredi 19 avril 1996 ».
DTS_SHORTDATEFORMAT L’affichage se présente comme suit : « 19/04/96 ».
DTS_SHORTDATECENTURYFORMAT Version 5.80. L’affichage se présente comme suit : « 19/04/1996 ».
DTS_TIMEFORMAT L’affichage se présente comme suit : « 17:31:42 ».

 

Formats personnalisés

Un contrôle DTP s’appuie sur une chaîne de format pour déterminer comment il affichera les champs d’informations. Si les formats prédéfinis ne sont pas suffisants, vous pouvez créer un format personnalisé en définissant votre propre chaîne de format. Les formats personnalisés offrent une plus grande flexibilité à une application. Ils vous permettent de spécifier l’ordre dans lequel le contrôle affiche les champs d’informations. Vous pouvez inclure du texte de corps ainsi que des champs de rappel pour demander des informations à l’utilisateur. Une fois la chaîne créée, vous l’affectez au contrôle DTP avec un message DTM_SETFORMAT .

Chaînes de format

Une chaîne de format DTP se compose d’une série d’éléments qui représentent un élément d’information particulier et définissent son format d’affichage. Les éléments s’affichent dans l’ordre dans lequel ils apparaissent dans la chaîne de format.

Les éléments de format de date et d’heure seront remplacés par la date et l’heure réelles. Ils sont définis par les groupes de caractères suivants.

Élément Description
"d" Jour à un ou deux chiffres.
"dd" Jour à deux chiffres. Les valeurs de jour à un chiffre sont précédées d’un zéro.
"ddd" Abréviation du jour de la semaine à trois caractères.
"dddd" Nom complet du jour de la semaine.
"h" Heure à un ou deux chiffres au format 12 heures.
"hh" Heure à deux chiffres au format 12 heures. Les valeurs à un chiffre sont précédées d’un zéro.
"H" Heure à un ou deux chiffres au format 24 heures.
"HH" Heure à deux chiffres au format 24 heures. Les valeurs à un chiffre sont précédées d’un zéro.
"m" Minute à un ou deux chiffres.
"mm" Minute à deux chiffres. Les valeurs à un chiffre sont précédées d’un zéro.
"M" Numéro de mois à un ou deux chiffres.
"MM" Numéro de mois à deux chiffres. Les valeurs à un chiffre sont précédées d’un zéro.
"MMM" Abréviation de mois à trois caractères.
"MMMM" Nom complet du mois.
"t" L’abréviation AM/PM d’une lettre (autrement dit, AM s’affiche sous la forme « A »).
"tt" Abréviation AM/PM à deux lettres (autrement dit, AM est affichée sous la forme « AM »).
"yy" Les deux derniers chiffres de l’année (c’est-à-dire 1996 s’affichent sous la forme « 96 »).
"yyyy" L’année complète (c’est-à-dire, 1996 serait affichée sous la forme « 1996 »).

 

Pour rendre les informations plus lisibles, vous pouvez ajouter du texte de corps à la chaîne de format en la plaçant entre guillemets simples. Les espaces et les marques de ponctuation n’ont pas besoin d’être cités.

Notes

Les caractères non format qui ne sont pas délimités par des guillemets uniques entraînent un affichage imprévisible par le contrôle DTP.

Par exemple, pour afficher la date actuelle au format « 'Today is: 04:22:31 Tuesday Mar 23, 1996 », la chaîne de format est « Today is: 'hh':'m':'s ddd MMM ddd', 'yyyyy ». Pour inclure un seul guillemet dans votre corps de texte, utilisez deux guillemets simples consécutifs. Par exemple, « 'Don’t forget' MMM dd',' yyyy » produit une sortie qui ressemble à : N’oubliez pas le 23 mars 1996. Il n’est pas nécessaire d’utiliser des guillemets avec la virgule. Par conséquent, « 'N’oubliez pas' MMM jj, aaaa » est également valide et produit la même sortie.

Champs de rappel

En plus des chaînes de format standard et du corps de texte, vous pouvez également définir certaines parties de l’affichage en tant que champs de rappel. Ces champs peuvent être utilisés pour interroger l’utilisateur pour obtenir des informations. Pour déclarer un champ de rappel, incluez un ou plusieurs caractères « X » (code ASCII 88) n’importe où dans la chaîne de format. Vous pouvez créer des champs de rappel qui ont une identité unique en répétant le caractère « X ». Ainsi, la chaîne de format « XX dddd MMM ddd », « aaaa XXX » contient deux champs de rappel uniques, « XX » et « XXX ». Comme d’autres champs de contrôle DTP, les champs de rappel sont affichés dans l’ordre de gauche à droite en fonction de leur emplacement dans la chaîne de format.

Lorsque le contrôle DTP analyse la chaîne de format et rencontre un champ de rappel, il envoie DTN_FORMAT et DTN_FORMATQUERY codes de notification. L’élément chaîne de format correspondant au champ de rappel est inclus avec les notifications pour permettre à l’application de réception de déterminer quel champ de rappel est interrogé. Le propriétaire du contrôle doit répondre à ces notifications pour s’assurer que les informations personnalisées sont correctement affichées.

Messages de notification de contrôle du sélecteur de date et d’heure

Un contrôle sélecteur de date et d’heure (DTP) envoie des codes de notification lorsqu’il reçoit une entrée utilisateur ou traite et réagit aux champs de rappel. Le parent du contrôle reçoit ces codes de notification sous la forme de messages WM_NOTIFY .

Les codes de notification suivants sont utilisés avec les contrôles DTP.

Code de notification Description
DTN_CLOSEUP Indique que le calendrier de mois de liste déroulante est sur le point d’être supprimé.
DTN_DATETIMECHANGE Signale une modification dans le contrôle DTP.
DTN_DROPDOWN Indique que le calendrier de mois de liste déroulante est sur le point d’être affiché.
DTN_FORMAT Demande que le texte s’affiche dans une partie de la chaîne de format décrite comme un champ de rappel.
DTN_FORMATQUERY Demande des informations sur la taille maximale autorisée du texte à afficher dans un champ de rappel.
DTN_USERSTRING Signale la fin de l’opération de modification d’un utilisateur dans le contrôle. Cette notification est envoyée uniquement par les contrôles DTP qui utilisent le style DTS_APPCANPARSE .
DTN_WMKEYDOWN Indique que l’utilisateur a appuyé sur une touche dans un champ de rappel du contrôle DTP.

 

Informations de référence sur le contrôle du sélecteur de date et d’heure