J'ai créé une petite application en C# qui supprime la bordure et la légende de la fenêtre, puis elle définit la taille de la résolution de l'utilisateur et la centre. C'est un utilitaire que j'utilise lorsque je veux jouer à des jeux en mode fenêtré sans être contrarié par les bordures. Tout fonctionne bien avec la plupart des jeux, mais j'ai essayé de l'utiliser sur un jeu Alpha Protocol récemment publié et cela ne fonctionne pas. Je pourrais presque dire que le jeu rétablit mes changements, mais je ne suis pas sûr de savoir si c'est vrai ou non. J'utilise les fonctions API importées MoveWindow, SetWindowLong et SetWindowPos.Supprimer WS_BORDER et WS_CAPTION de styles Windows ne fonctionne pas
Snippet:
Win32.MoveWindow(hWnd, 0, 0, Convert.ToInt32(sizeXText.Text), Convert.ToInt32(sizeYText.Text), true);
Win32.SetWindowLong(hWnd, GWL_STYLE, Win32.GetWindowLong(hWnd, GWL_STYLE) & ~WS_CAPTION & ~WS_BORDER);
Win32.SetWindowPos(hWnd, 0, 0, 0, 0, SWP_NOZORDER|SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE|SWP_DRAWFRAME);
J'ai trouvé: const UInt32 SWP_NOSENDCHANGING = 0x0400;/* Ne pas envoyer WM_WINDOWPOSCHANGING */ L'ajouter à SetWindowPos n'a cependant rien changé. Je suppose que SWP_DRAWFRAME est la partie cruciale de la fonction qui doit être exécutée afin de mettre à jour le cadre? Je pourrais essayer d'envoyer uniquement SendMessage sans SetWindowPos ... – JStrange
Hm, on dirait que MoveWindow envoie aussi 'WM_WINDOWPOSCHANGING', donc si c'est vraiment le cas, le jeu intercepte le message, c'est ma seule chance de supprimer manuellement la bordure (via certaines fonctions de peinture)? – JStrange
Presque n'importe quelle fonction qui est capable de déplacer ou de redimensionner ou de modifier la visibilité ou l'ordre z d'une fenêtre est finalement un wrapper autour de SetWindowPos. SetWindowPos envoie 'WM_WINDOWPOSCHANGING' et' WM_WINDOWPOSCHANGED' - qui sont gérés par la procédure de fenêtre par défaut qui les renvoie comme messages 'WM_GETMINMAXINFO',' WM_MOVE' et 'WM_SIZE'. Je m'attends à ce que le jeu traite au moins un de ces messages pour réinitialiser ses styles de trame. Si le message de changement est inhibé correctement, alors il est dans l'une des notifications modifiées. –