UDF > GUI > GuiMenu >


_GUICtrlMenu_CalculatePopupWindowPosition

Calcule la position appropriée de la fenêtre déroulante et retourne une structure rectangle

#include <GuiMenu.au3>
_GUICtrlMenu_CalculatePopupWindowPosition ( $iX, $iY, $iWidth, $iHeight [, $iFlags = 0 [, $tExclude = 0]] )

Paramètres

$iX La coordonnée x, en unités logiques, du point d'ancrage spécifié.
$iY La coordonnée y, en unités logiques, du point d'ancrage spécifié.
$iWidth La largeur, en unités logiques, de la fenêtre spécifiée.
$iHeight La hauteur, en unités logiques, de la fenêtre spécifiée.
$iFlags [optionnel] Les flags qui spécifient comment la fonction positionne la fenêtre pop-up horizontalement et verticalement.
    $TPM_CENTERALIGN
    $TPM_LEFTALIGN (par défaut)
    $TPM_RIGHTALIGN

    $TPM_BOTTOMALIGN
    $TPM_TOPALIGN (par défaut)
    $TPM_VCENTERALIGN

    $TPM_HORIZONTAL (par défaut)
    $TPM_VERTICAL

    $TPM_WORKAREA
$tExclude [optionnel] Structure $tagRECT qui spécifie le rectangle à exclure.

Valeur de retour

Succès: Retourne une structure $tagRECT qui contient la position de la fenêtre déroulante.
Échec: Définit @error <> 0 et appelle la fonction _WinAPI_GetLastError() pour obtenir des informations sur l'erreur.

Remarque

Cette fonction nécessite Windows 7 ou une version ultérieure.

Voir aussi

Consultez CalculatePopupWindowPosition dans la librairie MSDN.

Exemple

#include <GUIConstantsEx.au3>
#include <GuiMenu.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIConv.au3>
#include <WinAPISysWin.au3>

Local $hForm = GUICreate('Test '& StringReplace(@ScriptName, '.au3', '()'), 400, 400)
Local $idButton = GUICtrlCreateButton('New Window', 145, 366, 110, 23)
GUISetState(@SW_SHOW)

Global $iMsg
Do
    $iMsg = GUIGetMsg() 
    If $iMsg = $idButton Then
        _PopupDlg($hForm)
    EndIf
Until $iMsg = $GUI_EVENT_CLOSE


Func _PopupDlg($hParent)
    GUISetState(@SW_DISABLE, $hParent)

    Local $tPOINT = DllStructCreate($tagPOINT)
    For $i = 1 To 2
        DllStructSetData($tPOINT, $i, 0)
    Next
    _WinAPI_ClientToScreen($hParent, $tPOINT)
    Local $hDlg = GUICreate('New Window', 400, 400)
    Local $idButton = GUICtrlCreateButton('Close', 165, 366, 70, 23)
    Local $tRECT = _GUICtrlMenu_CalculatePopupWindowPosition(DllStructGetData($tPOINT, 1), DllStructGetData($tPOINT, 2), _WinAPI_GetWindowWidth($hDlg), _WinAPI_GetWindowHeight($hDlg))
    If @error Then
        MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Error', 'Require Windows 7 or later.')
        Exit
    EndIf
    WinMove($hDlg, '', DllStructGetData($tRECT, 1), DllStructGetData($tRECT, 2))
    GUISetState(@SW_SHOW, $hDlg)

    Do
        $iMsg = GUIGetMsg() 
    Until $iMsg = $GUI_EVENT_CLOSE Or $iMsg = $idButton

    GUISetState(@SW_ENABLE, $hParent)
    GUIDelete($hDlg)
EndFunc   ;==>_PopupDlg