Windows peut cartographier plusieurs moniteurs dans des bureaux virtuels, ce qui nous permet de l'utiliser pour concevoir des applications faciles à travailler. Par exemple, PowerPoint utilise pleinement les avantages de deux moniteurs (la plupart des ordinateurs portables le prennent en charge). . Alors, comment développer une telle application? Cet article vous montrera si vous implémentez des applications à l'aide de plusieurs moniteurs à l'aide de Delphi.
Windows prend également en charge les méthodes d'affichage de clonage, et chaque moniteur sort le même contenu, ce qui a du sens pour certaines applications. Bien que certaines cartes graphiques prennent également en charge deux moniteurs, ils ne sont pas vraiment des modes d'affichage à haute résolution virtuels (tels que 2048 × 768 ou 1024 × 1536), qui affiche l'écran à deux moniteurs via la carte graphique. Aucun de ces deux modes d'affichage n'est introduit par Zhongdian dans cet article, et ils sont également très simples, nous ne les répéterons donc pas.
Windows prend en charge jusqu'à 10 moniteurs et Windows mappe tous les moniteurs dans un grand bureau virtuel. L'affichage peut être compris comme une vue partielle du bureau. Ces écrans peuvent être organisés arbitrairement dans les propriétés d'affichage en fonction de l'emplacement physique de l'écran. Si le moniteur est organisé de manière irrégulière, certaines parties du bureau virtuel peuvent ne pas être affichées sur l'un ou l'autre moniteur. Afin de ne pas faire apparaître un formulaire entre deux moniteurs, Windows utilise un affichage comme moniteur principal. Lorsque l'ordinateur est démarré, la boîte de dialogue de connexion s'affiche dans le moniteur principal. La plupart des écrans de démarrage du programme seront affichés dans le moniteur principal.
Selon l'introduction ci-dessus, il n'est pas difficile de trouver plusieurs concepts importants: bureau, moniteur, moniteur principal, etc. Tout d'abord, nous devons d'abord trouver ces concepts et leur relation précédente. Il s'agit de la clé pour maîtriser la méthode de développement de l'application multi-display. Une fois que vous comprenez ces concepts, les autres parties seront très faciles à comprendre.
Un bureau fait référence à la zone logique que les fenêtres peuvent afficher. En fait, un formulaire peut être affiché à l'extérieur du bureau. Cependant, cela ne signifie pas que toutes les parties du bureau seront affichées sur un certain moniteur (la raison est comme mentionnée précédemment);
Un bureau est une zone rectangulaire qui décrit la taille du bureau par ses coordonnées de sommet (en haut, à gauche) et la largeur et la hauteur. Pourquoi avez-vous encore besoin de coordonnées de sommet? Parce que les coordonnées du sommet ne sont pas prises pour acquises (0,0). Alors, où est (0,0)? C'est une longue histoire, alors passons d'abord le concept mentionné à l'heure - le moniteur principal. Windows souhaite que le programme général soit affiché sur le moniteur principal au début, car les gens ont l'habitude de prêter attention à un moniteur le plus proche d'eux. Windows ne peut pas forcer les utilisateurs à utiliser le moniteur le plus à gauche comme moniteur principal, afin que les applications doivent s'inquiéter des calculs afin de s'afficher sur le moniteur principal. Cependant, la plupart des utilisateurs n'ont qu'un seul moniteur (deux moniteurs prennent trop de place) et les applications ordinaires ne veulent pas dépenser beaucoup d'efforts pour calculer où se trouve le moniteur principal et où ils doivent être affichés. Ainsi, Windows propose une solution raisonnable: utilisez les coordonnées du sommet de l'affichage principal comme origine du système de coordonnées. De cette façon, les programmes ordinaires doivent prendre en compte les problèmes dans un seul environnement de moniteur.
Le moniteur est une vue partielle du bureau. C'est comme regarder le paysage à l'extérieur de la fenêtre par la fenêtre, debout devant différentes fenêtres, vous pouvez voir différentes images. De même, l'affichage est également une zone rectangulaire, et ses dimensions peuvent également être décrites par les coordonnées du sommet (en haut, à gauche) et la largeur et la hauteur. Les coordonnées du sommet sont relatives à l'origine du système de coordonnées de bureau, c'est-à-dire aux sommets de l'affichage principal.
Le concept d'un espace de travail est relativement simple.
Windows fournit un ensemble d'API pour le développement d'applications multi-effichage. VCL résume ces API et les intègre très naturellement dans l'ensemble du cadre, ce qui facilite le développement d'applications multi-affichage. Ce qui suit est un contenu connexe.
Le VCL le plus familier est probablement TCustomForm, qui est la classe de base de toutes les formes. La propriété de position de TCustomForm est utilisée pour définir la position réelle du formulaire. de l'affichage principal; on est PodeskTopCenter. Si cette propriété est définie sur PodeskTopCenter et que le programme s'exécute sur un système avec plusieurs moniteurs, cette fenêtre sera affichée entre les deux moniteurs, causant des problèmes inutiles à l'utilisateur. Par conséquent, même si notre programme n'est pas conçu pour le multi-diffusion, cette valeur doit être gérée avec soin. Une autre propriété est DefaultMonitor, qui a une fonction similaire à la position, qui détermine quel moniteur la fenêtre est initialement affichée. Il a quatre valeurs alternatives: DMDESKTOP, DMPRIMARY, DMMAINFORM et DMACTIF. Leurs significations sont les suivantes:
Valeur | Signification |
dmdesktop | Pas de traitement spécial |
dmprimary | Affichez le formulaire sur le premier moniteur. Il s'agit d'un autre piège, littéralement le moniteur principal, et en fait il fait référence au moniteur Screen.Monitor [0]. |
dmmainform | Affichez le formulaire au moniteur où se trouve le formulaire principal |
dmactiveform | Affichez le formulaire au moniteur où se trouve le formulaire actif sur le bureau |
TCustomForm propose également une propriété commune en lecture seule (sans publication), qui fournit une référence pour accéder à l'instance d'affichage où le formulaire est situé.
Alors, comment déplacez-vous la forme entre les différents écrans? Ce n'est pas difficile, vous y avez probablement pensé aussi. Voici deux méthodes:
Tout d'abord, vous pouvez définir le haut et la gauche de TCustomForm pour afficher le formulaire n'importe où sur le bureau. Comme mentionné précédemment, le bureau est composé de tous les moniteurs. Ils ont un système de coordonnées commun, de sorte que la position de la forme peut être déterminée en fonction de la position logique de l'affichage. La question est maintenant de savoir comment obtenir la position logique et la taille de chaque moniteur, qui sera introduite plus tard.
Deuxièmement, vous pouvez appeler la méthode de renouvellement visible de TCustomForm pour afficher pleinement le formulaire à l'affichage spécifié. Cette méthode peut être utilisée pour empêcher la fenêtre d'afficher une partie de chacun des deux moniteurs.
Nous avons juste posé une question: comment obtenir la position logique et la taille de chaque moniteur. Afin de répondre à cette question, nous devons introduire une autre catégorie: Tscreen et Tmonitor.
TScreen décrit certaines informations liées aux dispositifs d'affichage, et nous nous préoccupons principalement des informations liées à la position logique et à la taille de l'écran. D'autres aspects peuvent être trouvés dans la documentation de Delphi. Lorsque le programme est en cours d'exécution, VCL crée automatiquement une instance de TSCREEN - une variable globale, donc généralement le programme n'a pas besoin d'instancier TSCREEN.
Tscreen a un ensemble de propriétés en forme de bureau *, qui décrivent la taille de l'ensemble du bureau et les coordonnées de chaque sommet. Il existe également un certain nombre de propriétés qui sont d'une grande importance pour le développement d'applications multi-moniteurs: MonitorCount et moniteurs. Grâce à ces deux propriétés, nous pouvons énumérer toutes les instances des moniteurs (tmoniteurs) dans le système.
Parmi les nombreuses propriétés de TScreen, nous trouverons les deux propriétés: hauteur et largeur. Méfiez-vous particulièrement de ne pas se référer à la taille de l'ensemble du bureau, mais à la hauteur et à la largeur de l'affichage principal. Ceci est très facile de faire en sorte que les gens se sentent illustrés de ne pas penser à la taille de tout le bureau. De même, il existe un ensemble de propriétés en forme de travail *, qui décrivent la taille de la zone de travail de l'affichage principal et les coordonnées de chaque sommet. Pensez-vous que quelque chose manque? Pourquoi les propriétés de la position relative du moniteur principal n'obtiennent-elles pas? La raison est comme mentionné précédemment: Windows utilise le coin supérieur gauche du moniteur principal comme l'origine du système de coordonnées, de sorte que la position relative du moniteur principal doit être (0, 0).
En plus de ces propriétés, nous introduirons également trois fonctions membres de TScreen: MonitorFrackPoint, MonitorFromrect et MonitorFromWindow. Comme son nom l'indique, ce sont des instances de l'écran où une coordonnée, une certaine zone et une certaine fenêtre se trouvent. Il peut également être utilisé dans le développement réel.
Mieux, jetons un coup d'œil à la classe Tmonitor. Il résume les propriétés pertinentes de l'affichage physique, toutes en lecture seule. Le tableau suivant décrit brièvement la signification de ces propriétés, qui sont très utiles pour rédiger des applications multi-effichage:
propriété | illustrer |
Poignée | Obtenez la poignée Windows de ce moniteur |
Monitornum | Obtenez le numéro de moniteur |
Primaire | Obtient si le moniteur est le moniteur principal. Et le primaire avec un seul moniteur est vrai. |
Haut | Obtenez la limite supérieure du moniteur |
Gauche | Obtenez la bordure gauche du moniteur |
Hauteur | Obtenez la hauteur du moniteur |
Largeur | Obtenez la largeur du moniteur |
Limiter | Obtenez la zone de bureau correspondante du moniteur, ce qui équivaut aux quatre propriétés ci-dessus |
Workerarecter | Obtenez la zone correspondant au bureau de l'espace de travail du moniteur. |
Après une compréhension claire de Tscreen et Tmonitor, les problèmes précédents seront naturellement résolus. À ce stade, cet article a couvert toutes les connaissances nécessaires pour développer des applications multi-effichage. Je crois que vous pouvez utiliser ces connaissances pour développer des produits logiciels très pratiques.
Annexe: Vous pouvez télécharger une démo pour aider à comprendre cet article.