À propos des contrôles calendrier de mois

Un contrôle de calendrier mensuel implémente une interface utilisateur semblable à un calendrier. Cela fournit à l’utilisateur une méthode très intuitive et reconnaissable pour entrer ou sélectionner une date. Le contrôle fournit également à l’application les moyens d’obtenir et de définir les informations de date dans le contrôle à l’aide de types de données existants.

Fonctionnalités de contrôle du calendrier mensuel

La capture d’écran suivante montre un contrôle de calendrier de mois qui a été dimensionné pour afficher deux mois.

capture d’écran d’une boîte de dialogue avec un contrôle calendrier de mois affichant deux mois côte à côte

Notes

L’apparence et le comportement du contrôle calendrier de mois diffèrent légèrement selon les versions de la bibliothèque d’exécution. Cette rubrique se concentre sur le contrôle tel qu’il apparaît dans Windows Vista avec la version 6 de Comctl32.dll.

 

Le contrôle dans l’illustration présente les fonctionnalités facultatives suivantes.

  • La date actuelle est affichée sur une ligne distincte en bas du contrôle. Il s'agit du style par défaut.
  • Le « cercle d’aujourd’hui » (en fait un rectangle dans cette version) s’affiche autour du jour actuel, et à côté de la ligne « Aujourd’hui » comme un signe visuel. Il s'agit du style par défaut.
  • Les numéros de semaine sont affichés à gauche de chaque ligne de jours. Ce style doit être spécifié.
  • Certaines dates sont affichées en gras, en fonction de l’état de jour défini par l’application. Par exemple, les dates qui ont planifié des réunions peuvent être affichées en gras. Ce style doit être spécifié.

Notes

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

Le contrôle mois-calendrier 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 qui était en usage avant 1753.

 

Sélection d’un jour

Par défaut, lorsqu’un utilisateur clique sur les flèches situées en haut à gauche ou en haut à droite du contrôle calendrier du mois, le contrôle met à jour son affichage pour afficher le mois précédent ou le mois suivant. L’utilisateur peut également effectuer la même action en cliquant sur les mois partiels affichés avant le premier mois et après le dernier mois.

Les commandes clavier suivantes peuvent également être utilisées pour déplacer la sélection. Le calendrier défile toujours selon les besoins pour afficher le jour sélectionné. (Les codes de clé virtuelle sont affichés dans le tableau.)

Commande Description
Flèche gauche (VK_LEFT) Sélectionnez le jour précédent.
Flèche droite (VK_RIGHT) Sélectionnez le jour suivant.
Flèche vers le haut (VK_UP) Sélectionnez le même jour de la semaine précédente.
Flèche vers le bas (VK_DOWN) Sélectionnez le même jour dans la semaine suivante.
PAGE UP (VK_PRIOR) Sélectionnez le même jour du mois précédent. (Si ce mois n’a pas le jour, le jour le plus proche est sélectionné ; par exemple, la sélection passe du 31 mars au 28 février ou au 29 février.)
PAGE DOWN (VK_NEXT) Sélectionnez le même jour dans le mois suivant.
ACCUEIL (VK_HOME) Sélectionnez le premier jour du mois en cours.
END (VK_END) Sélectionnez le dernier jour du mois en cours.
Ctrl + Accueil Faites défiler un mois vers l’arrière et sélectionnez un jour dans la colonne la plus à gauche.
Ctrl +Fin Faites défiler un mois vers l’avant et sélectionnez un jour dans la colonne la plus à droite.
CTRL + PAGE VERS LE HAUT Sélectionnez le même jour dans un mois précédent. Le nombre de mois par lesquels la sélection se déplace est le nombre de mois affichés dans le contrôle. Par exemple, si deux mois sont affichés, la sélection passe du 6 juin au 6 mai.
Ctrl + Page vers le bas Sélectionnez le même jour dans un mois précédent. Le nombre de mois par lesquels la sélection se déplace est le nombre de mois affichés dans le contrôle. Par exemple, si deux mois sont affichés, la sélection passe du 6 juin au 6 août.

 

Si un contrôle de calendrier de mois n’utilise pas le style MCS_NOTODAY , l’utilisateur peut revenir au jour en cours en cliquant sur le texte « Aujourd’hui » en bas du contrôle. Si le jour actuel n’est pas visible, le contrôle met à jour son affichage pour l’afficher.

Une application peut modifier le nombre de mois pendant lesquels le contrôle met à jour son affichage à l’aide du message MCM_SETMONTHDELTA ou de la macro correspondante , MonthCal_SetMonthDelta. Toutefois, les touches PAGE HAUT et PAGE BAS modifient le mois sélectionné d’un, quel que soit le nombre de mois affiché ou la valeur définie par MCM_SETMONTHDELTA.

Sélection d’un mois non adjacent

Lorsqu’un utilisateur clique sur le nom d’un mois affiché, tous les mois de l’année sont répertoriés (dans les versions antérieures, il s’agit d’un menu contextuel). L’utilisateur peut sélectionner un mois dans la liste. Si la sélection de l’utilisateur n’est pas visible, le contrôle calendrier du mois fait défiler son affichage pour afficher le mois choisi. Dans la capture d’écran suivante, un contrôle calendrier mensuel affiche les mois de deux années adjacentes.

capture d’écran d’une boîte de dialogue avec un contrôle calendrier de mois affichant tous les mois de 2007 et 2008

Sélection d’une autre année

Si l’utilisateur clique sur l’année, un groupe d’années est répertorié et l’utilisateur peut en sélectionner un autre, comme illustré dans la capture d’écran suivante.

capture d’écran d’un contrôle calendrier de mois montrant toutes les années de 1999 à 2020

Localisation

Le contrôle calendrier mensuel obtient son format et toutes les chaînes de LOCALE_USER_DEFAULT.

Heures dans le contrôle Calendrier du mois

Le contrôle calendrier du mois n’affiche pas l’heure. Toutefois, la structure SYSTEMTIME utilisée pour définir et récupérer la date sélectionnée ou la date du jour contient des champs d’heure. Lorsqu’une date est définie par programmation, le contrôle copie les champs d’heure tels qu’ils sont ou les valide d’abord, puis, s’ils ne sont pas valides, stocke les heures par défaut actuelles. Voici une liste des messages qui définissent une date et une description de la façon dont les champs d’heure sont traités.

Message Description
MCM_SETCURSEL Le contrôle copie les champs d’heure tels quels, sans validation ni modification.
MCM_SETRANGE Les champs de temps des structures passées sont validés. S’ils sont valides, les champs d’heure sont copiés sans modification. S’ils ne sont pas valides, le contrôle copie les champs de temps des données du jour.
MCM_SETSELRANGE Les champs de temps des structures passées sont validés. S’ils sont valides, les champs d’heure sont copiés sans modification. S’ils ne sont pas valides, le contrôle conserve les champs de temps des plages de sélection actuelles.
MCM_SETTODAY Le contrôle copie les champs d’heure tels quels, sans validation ni modification.

 

Lorsqu’une date est récupérée à partir du contrôle, les champs d’heure sont copiés à partir des heures stockées sans modification. La gestion des champs de temps par le contrôle est fournie à titre pratique pour le programmeur. Le contrôle n’examine ni ne modifie les champs de temps à la suite d’une opération autre que celles répertoriées ci-dessus.