puis-je redimensionner une fenêtre de programme dans Windows pour qu’elle soit arbitrairement grande?

il semble que la taille de la fenêtre, par exemple celle d’un navigateur ouvert, soit limitée en fonction de la taille de l’écran, de la résolution de l’écran ou de quelque chose du genre. Y a-t-il un moyen de contourner cela et de rendre la fenêtre arbitrairement grande?

Si vous parlez de votre propre application, vous pouvez probablement afficher les coordonnées 16 bits utilisées pour le dimensionnement GDI. Répondez de manière appropriée à WM_GETMINMAXINFO et autres.

Si vous parlez de quelqu’un d’autre, il n’y a aucune promesse de rendre l’image plus grande que l’écran, car il serait sage de découper sa peinture à ce qui est visible, et d’autres facteurs peuvent l’empêcher (comme la taille d’un DirectX). surface inférieure à la limite GDI).

Si vous grattez, il est préférable d’utiliser MSAA ou UIA pour manipuler la fenêtre depuis l’extérieur et obtenir son texte.

Martyn

Oui il y a. Vous devez remplacer WM_GETMINMAXINFO. Dans votre procédure de raccordement, vous pouvez définir le maximum x / y:

MINMAXINFO* pmmi = (MINMAXINFO*)lParam; pmmi->ptMaxTrackSize.x = desiredY; pmmi->ptMaxTrackSize.y = desiredX; 

Pour ce faire sur un autre processus, vous pouvez utiliser SetWindowsHookEx () avec WH_GETMESSAGE.

 #include  #include  $hGUI = GUICreate("", 250, 100, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_THICKFRAME)) GUICtrlCreateLabel("", 0, 0, 250, 100, -1, $GUI_WS_EX_PARENTDRAG) GUISetState(@SW_SHOW) GUIRegisterMsg($WM_GETMINMAXINFO, "WM_GETMINMAXINFO") While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE GUIRegisterMsg($WM_GETMINMAXINFO, "") Exit EndSwitch WEnd Func WM_GETMINMAXINFO($hWnd, $Msg, $wParam, $lParam) #forceref $hWnd, $Msg, $wParam, $lParam Local $minmaxinfo = DllStructCreate("int;int;int;int;int;int;int;int;int;int", $lParam) DllStructSetData($minmaxinfo, 7, 250) ; min width DllStructSetData($minmaxinfo, 8, 100) ; min height DllStructSetData($minmaxinfo, 9, 3000) ; max width DllStructSetData($minmaxinfo, 10, 3000) ; max height Return "GUI_RUNDEFMSG" EndFunc ;==>WM_GETMINMAXINFO 

répondra (partiellement) à ma propre question. Il se trouve que pour le cas spécifique de mon application WinForms, il suffit de définir Form.MaximumSize sur une valeur suffisamment grande, puis d’augmenter Form.ClientSize. Je suppose que cette propriété MaximumSize est un wrapper autour du hook WM_GETMINMAXINFO mentionné dans les autres réponses.