Retour des modes d’affichage : DrvGetModes
Le pilote d’affichage doit également prendre en charge DrvGetModes. Cette fonction donne à GDI un pointeur vers un tableau de structures DEVMODEW . Les structures définissent les attributs de l’affichage pour les différents modes qu’il prend en charge, notamment la dimension (en pixels et en millimètres), le nombre de plans, les bits par plan, les informations de couleur, etc.
L’ordre dans lequel un pilote écrit les modes d’affichage disponibles en mémoire lorsque la fonction DrvGetModes est appelée peut affecter le mode d’affichage final choisi par Windows. En général, si une application ne spécifie pas de mode par défaut, le système sélectionne le premier mode correspondant dans la liste fournie par le pilote.
Par exemple, supposons que le mode d’affichage actuel soit
800x600x32bpp@60Hz DMDO_DEFAULT DMDFO_CENTER
et le pilote spécifie la liste des modes d’affichage disponibles comme suit :
Mode | Détails du mode |
---|---|
A | 600x800x32bpp@60Hz DMDO_270 DMDFO_STRETCH |
B | 600x800x32bpp@60Hz DMDO_90 DMDFO_STRETCH |
C | 600x800x32bpp@60Hz DMDO_90 DMDFO_CENTER |
D | 600x800x32bpp@60Hz DMDO_270 DMDFO_CENTER |
Cas 1
Si une application tente de définir le moniteur sur 600x800x32bpp@60Hz, mais que les indicateurs DM_DISPLAYORIENTATION et DM_DISPLAYFIXEDOUTPUT ne sont pas définis dans le membre dmFields de DEVMODEW, le système doit choisir l’orientation et les modes de sortie fixes. Dans ce cas, le système choisit le mode d’affichage C , car il s’agit du premier mode répertorié qui correspond au paramètre de DMDFO_CENTER actuel.
Cas 2
Si l’application tente de définir le moniteur sur 600x800x32bpp@60Hz DMDFO_STRETCH, le système choisit le mode d’affichage A.
Cas 3
Si l’application tente de définir le moniteur sur 600x800x32bpp@60Hz DMDO_270, le système choisit le mode d’affichage D.
Cas 4
Si l’application tente de définir le moniteur sur 600x800x32bpp@60Hz DMDO_DEFAULT, le système ne trouve pas de correspondance acceptable.
Une exception s’applique à ces règles : lorsque le système recherche une correspondance pour l’orientation de l’affichage, que l’orientation n’est pas spécifiée et que le mode actuel ne peut pas être mis en correspondance, le système donne DMDO_DEFAULT priorité sur les autres orientations d’affichage.
Par exemple, supposons que le mode d’affichage actuel soit
600x800x32bpp@60Hz DMDO_90 DMDFO_STRETCH
et le pilote spécifie la liste des modes d’affichage disponibles comme suit :
Mode | Détails du mode |
---|---|
A | 800x600x32bpp@60Hz DMDO_180 DMDFO_CENTER |
B | 800x600x32bpp@60Hz DMDO_180 DMDFO_STRETCH |
C | 800x600x32bpp@60Hz DMDO_DEFAULT DMDFO_CENTER |
D | 800x600x32bpp@60Hz DMDO_DEFAULT DMDFO_STRETCH |
Dans ce cas, si l’application tente de définir le moniteur sur 800x600x32bpp@60Hz, le système choisit le mode d’affichage D.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour