Plein écran de gestion avec WinAPI
Comment bien utiliser la WinAPI pour gérer le mode plein écran sur windows de la fenêtre ?
Voici mon problème :
J'ai une application qui doit être en plein écran.
J'utilise ChangeDisplaySettings() fonction (winuser.h) à l'CDS_FULLSCREEN la valeur à mettre ma fenêtre en mode plein écran lors de la réception d'un WM_ACTIVATE
avec (wParam == WA_ACTIVE || wParam == WA_CLICKACTIVE)
:
DEVMODE dmScreenSettings;
memset (&dmScreenSettings, 0, sizeof (dmScreenSettings));
dmScreenSettings.dmSize = sizeof (dmScreenSettings);
dmScreenSettings.dmPelsWidth = 1280;
dmScreenSettings.dmPelsHeight = 720;
dmScreenSettings.dmBitsPerPel = 32;
dmScreenSettings.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN);
- Je utiliser la même fonction avec le CDS_RESET valeur pour le mettre en mode "normal" lors de la réception d'un WM_ACTIVATE
avec (wParam == WA_INACTIVE)
:
ChangeDisplaySettings(&dmScreenSettings, CDS_RESET);
Quand j'ai lancer mon application, il est en plein écran.
J'utilise ALT+TAB pour basculer vers une autre application sur mon ordinateur. Mon application minimisée lui-même. Il fonctionne bien.
Ensuite, je passe à ma demande, et elle revient en mode plein écran. Encore une fois, il fonctionne bien.
Mais si je veux revenir à une autre application, une fois de plus, ma demande statys en mode plein écran, masquant toutes les autres applications sur mon ordinateur.
NB : Ma fenêtre est créée à l'aide de CreateWindowEx() la fonction avec les paramètres suivants :
DWORD dwExStyle = WS_EX_TOPMOST;
DWORD dwStyle = WS_VISIBLE | WS_POPUP;
1) Est-il un autre moyen que d'utiliser ChangeDisplaySettings() pour changer le mode plein écran ?
2) Suis-je utiliser les bonnes valeurs ?
3) il n'y a rien à faire que j'ai oublié ?
Merci d'avance pour toutes vos réponses.
Meilleures salutations,
- Juste pour le plaisir, ce qui se passe lorsque vous appuyez sur la touche F11 de votre clavier?
- tout simplement rien... Mon objectif est de forcer ma demande pour être en plein écran depuis qu'il est activé. Si j'appuie sur F11 lorsque mon application est... Il est déjà en plein écran... Donc la touche F11 n'a aucun effet.
- Voir la nouvelle édition ci-dessous. Cela devrait vous permettre de voir quel est l'état de la fenêtre est actuellement en et de réglage (réduire) en conséquence. Avec de la chance.
Vous devez vous connecter pour publier un commentaire.
Ces gars-là semblent pour couvrir toutes les options.
Win32: plein écran et le masquage de la barre des tâches
Nouvelle Edit: Basé sur un nouveau commentaire, essayez ceci.
Piège de la WM_ACTIVATE événement en vous app pour cette fenêtre. Dans ce cas, appelez le GetWindowPlacement Fonction et j'espère que vous serez sur votre chemin. Remarque le lien "SetWindowPlacement" en bas.
Essayer sans
WS_EX_TOPMOST
.Chaque fois que vous avez activé, vous aurez la fenêtre de premier plan automatiquement.
Si vous êtes un Kiosque d'applications, puis l'écran est déjà configuré pour la résolution correcte.
Si vous n'êtes pas un Kiosque d'applications, alors vous n'avez rien à f*****g avec les utilisateurs de résolution. Au lieu de cela: GetSystemMetrics pour obtenir la taille de l'affichage par défaut, et de créer votre fenêtre sans bordure exactement que les grandes. La barre des tâches pour cacher automatiquement et votre application sera "plein écran".
Surtout maintenant que les panneaux LCD sont populaires, la résolution de l'écran doit correspondre à la résolution du panneau de commande de sous-pixels anti aliasing de travail - ala ClearType. Il est de votre applications responsabilité de rédiger correctement à la résolution de l'écran, et non pas l'inverse.