2009-12-02 3 views

Répondre

7

Oui, par les arguments "x" et "y". Utilisez EnumDisplayMonitors (passez deux valeurs NULL) pour énumérer les moniteurs. Votre rappel MonitorEnumProc obtient un RECT * sur le rectangle d'affichage du moniteur. Vous obtiendrez un RECT.right négatif si un moniteur est situé à gauche de votre principal.

4

Chaque moniteur affiche simplement une partie du bureau, ainsi l'affichage de la fenêtre sur un moniteur particulier consiste à déplacer la fenêtre sur la partie du bureau affichée par ce moniteur. Lorsque vous appelez CreateWindowEx (ou CreateWindow), vous pouvez spécifier les coordonnées x et y pour la fenêtre. L'afficher sur un moniteur particulier signifie simplement spécifier les coordonnées qui se trouvent dans la zone affichée par ce moniteur.

Vous pouvez trouver les zones de travail pour les moniteurs sur un système avec GetMonitorInfo.

0

Les paramètres x et y spécifient l'emplacement de la nouvelle fenêtre. Ce point peut être n'importe où sur l'écran virtuel (tous les rectangles du moniteur combinés).

Si vous souhaitez créer la fenêtre sur le même écran qu'une autre fenêtre, vous pouvez appeler MonitorFromWindow. Sinon, vous pouvez énumérer tous les moniteurs avec EnumDisplayMonitors.

De toute façon, une fois que vous avez un handle HMONITOR, vous devez alors appeler GetMonitorInfo. Vos paramètres x et y doivent être une valeur à l'intérieur des limites du membre rcWork dans la structure d'informations du moniteur. Vous devez normalement choisir des valeurs qui placent votre fenêtre au centre de ce rectangle.

Il est important d'utiliser le rectangle de la zone de travail et non le rectangle du moniteur complet, car vous ne souhaitez pas que votre fenêtre apparaisse sous la barre des tâches et d'autres barres d'outils toujours visibles.

Questions connexes