Désolé pour le titre qui n'est pas clair.
Mon but est d'intégrer un GUI dans un autre GUI sachant que ma GUI "Maîtresse" s'adapte automatiquement à la taille de l'écran et à la barre de tâche.
Je n'arrive pas à adapter ma GUI fille qui contient une ListView à la taille de ma GUI maîtresse.
Ci joint mon code, je pense que vous comprendrez mieux mon problème... qui est dans Func _CreateListView()
Edit du code le 29;09.2014 à 14:21
► Afficher le texte
Code : Tout sélectionner
#include <GuiStatusBar.au3>
#include <Timers.au3>
#include <Date.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <Color.au3>
#include <ListViewConstants.au3>
#include <GuiListView.au3>
#include <GuiMenu.au3>
#include <File.au3>
#include <ArrayEx.au3>
#include <Array.au3>
#include <WinAPI.au3>
#include <WinNet.au3>
Opt("GUIOnEventMode", 1)
;==[Variables globales & autres]====
Global $ApplicationName = "__________", $Version = "V1.0.0", $CreationDate = "23/07/2014", $NumberOfModification = "0", $LastModification = "Aucune", $Area
Global $hGui, $hStatus, $aParts[4] = [200, 450, 480, 200], $aGuiPos, $iMemo, $hFile, $g_idMemo, $ListView1, $IPCName, $e_idTest
Global $hGUI, $hFile, $hEdit, $hHelp, $hMain, $label,$child
Global Enum $e_idNew = 1000, $e_idOpen, $e_idSave, $e_idExit, $e_idCut, $e_idCopy, $e_idPaste, $e_idAbout, $e_idHowTo, $e_idCopyMachDat, $e_idReadMachineDat;, $iColorResult
_Main()
AdlibRegister("_ScreenAdaptation")
GUIRegisterMsg($WM_SIZE, "WM_SIZE")
GUIRegisterMsg($WM_TIMER, "WM_TIMER")
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
GUIRegisterMsg($WM_DRAWITEM, "_WM_DRAWITEM")
$iTimer = _Timer_SetTimer($hGUI, 1000)
While GUIGetMsg() <> -3
WEnd
Func _Main()
Global $iColorResult = 0x000FF0
$Couleur1 = 0x999999
$Couleur2 = 0xe5e5e5
$hGUI = GUICreate($ApplicationName & " Powered By __________. Version: " & $Version, @DesktopWidth - 100, @DesktopHeight - 100, -1, -1)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Quitter", $hGUI)
$hFile = _GUICtrlMenu_CreateMenu()
$New= GUICtrlCreateMenuItem("Nouveau" & @TAB & "Ctrl+N", $hFile)
_GUICtrlMenu_AddMenuItem($hFile, "Fermer l'application", $e_idExit)
$hEdit = _GUICtrlMenu_CreateMenu()
_GUICtrlMenu_InsertMenuItem($hEdit, 0, "&Lire *.dat", $e_idReadMachineDat)
$hHelp = _GUICtrlMenu_CreateMenu()
_GUICtrlMenu_AddMenuItem($hHelp, "&A propos", $e_idAbout)
_GUICtrlMenu_AddMenuItem($hHelp, "&Comment utiliser " & $ApplicationName & "?", $e_idHowTo)
; Create Main menu
$hMain = _GUICtrlMenu_CreateMenu()
_GUICtrlMenu_AddMenuItem($hMain, "&Fichier", 0, $hFile)
_GUICtrlMenu_AddMenuItem($hMain, "&Edition", 0, $hEdit)
_GUICtrlMenu_AddMenuItem($hMain, "&?", 0, $hHelp)
$hStatus = _GUICtrlStatusBar_Create($hGUI, -1, "", $SBARS_SIZEGRIP)
;==[StatusBar]==============================
_GUICtrlStatusBar_SetParts($hStatus, $aParts)
DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", $hStatus, "wstr", 0, "wstr", 0)
$hIcons = _WinAPI_LoadShell32Icon(265)
_GUICtrlStatusBar_SetIcon($hStatus, 0, $hIcons)
$hIcons2 = _WinAPI_LoadShell32Icon(160)
_GUICtrlStatusBar_SetIcon($hStatus, 1, $hIcons2)
_GUICtrlStatusBar_SetText($hStatus, "Utilisateur: " & StringUpper(@UserName) & " " & "Poste: " & @ComputerName, 1)
_GUICtrlMenu_SetMenu($hGUI, $hMain)
$size = WinGetClientSize($aGuiPos)
GUISetState(@SW_SHOW)
EndFunc
Func _Quitter()
Exit
EndFunc
Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
#forceref $hWnd, $iMsg, $lParam
Switch $wParam
Case $e_idExit
Exit
Case $e_idAbout
_WinAPI_ShowMsg($ApplicationName & " - " & $Version & @CRLF & @CRLF & "Créé et développé le " & $CreationDate & " par __________" &@CRLF & @CRLF _
& "Nombre de modification: " & $NumberOfModification & @CRLF & @CRLF & "Dernière modification: " & $LastModification )
Case $e_idHowTo
_WinAPI_ShowMsg("Pour utiliser " & $ApplicationName & ", vous devez...")
Case $e_idReadMachineDat
_CreateListView()
EndSwitch
EndFunc ;==>WM_COMMAND
Func _CreateListView()
$aGuiPos_Calc = WinGetPos($hGui)
$child = GUICreate("MachDatListView1", $aGuiPos_Calc[2] - 6, $aGuiPos_Calc[3] - (_GUICtrlMenu_GetMenuHeight($hMain) + _GUICtrlStatusBar_GetHeight($hStatus)), 0, 0, $WS_POPUP, BitOR($WS_EX_MDICHILD, $WS_EX_LAYERED, $WS_EX_COMPOSITED), $hGUI)
GUISetBkColor(0xABCDEF, $child)
_WinAPI_SetLayeredWindowAttributes($child, 0xABCDEF)
$ListView1 = GUICtrlCreateListView("", 0, 0, $aGuiPos_Calc[2] - 6, $aGuiPos_Calc[3] - (_GUICtrlMenu_GetMenuHeight($hMain) + _GUICtrlStatusBar_GetHeight($hStatus)), BitOR($GUI_SS_DEFAULT_LISTVIEW, $LVS_NOCOLUMNHEADER), BitOR($WS_EX_CLIENTEDGE, $LVS_EX_FULLROWSELECT))
_GUICtrlListView_SetExtendedListViewStyle($ListView1, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))
_GUICtrlListView_AddColumn($Listview1, "Section", 100)
_GUICtrlListView_AddColumn($Listview1, "Commentaire", 100)
GUICtrlSetFont($Listview1, 9, 400, 0, "Courier New")
GUISetState(@SW_SHOW)
EndFunc
Func _WM_DRAWITEM($hWnd, $Msg, $wParam, $lParam)
#forceref $Msg, $wParam, $lParam
Local $tDRAWITEMSTRUCT = DllStructCreate("uint CtlType;uint CtlID;uint itemID;uint itemAction;uint itemState;HWND hwndItem;HANDLE hDC;long rcItem[4];ULONG_PTR itemData", $lParam)
Local $itemID = DllStructGetData($tDRAWITEMSTRUCT, "itemID")
Local $hDC = DllStructGetData($tDRAWITEMSTRUCT, "hDC")
Local $tRect = DllStructCreate("long left;long top;long right; long bottom", DllStructGetPtr($tDRAWITEMSTRUCT, "rcItem"))
Local $iTop = DllStructGetData($tRect, "top")
Local $iLeft = DllStructGetData($tRect, "left")
Local $hBrush
Switch $itemID
Case 2
$hBrush = _WinAPI_CreateSolidBrush($iColorResult)
_WinAPI_FillRect($hDC, DllStructGetPtr($tRect), $hBrush)
_WinAPI_SetBkMode($hDC, $TRANSPARENT)
DllStructSetData($tRect, "top", $iTop + 1)
DllStructSetData($tRect, "left", $iLeft + 1)
;_WinAPI_DrawText($hDC, "Part 3", $tRect, $DT_LEFT)
_WinAPI_DeleteObject($hBrush)
EndSwitch
$tDRAWITEMSTRUCT = 0
Return $GUI_RUNDEFMSG
EndFunc ;==>_WM_DRAWITEM
Func _ScreenAdaptation()
$WorkAera = _GetWorkArea()
Local $aGuiPos = WinGetPos($hGui)
If $aGuiPos[0] <> $WorkAera[0] OR $aGuiPos[1] <> $WorkAera[1] OR $aGuiPos[2] <> $WorkAera[4] OR $aGuiPos[3] <> $WorkAera[5] Then WinMove($hGui, "", $WorkAera[0]+4, $WorkAera[1]+4, $WorkAera[4] - 8, $WorkAera[5] - 8)
EndFunc
Func _GetWorkArea()
global $Area[6]
Local $StartRect = DllStructCreate("int[4]")
Local $PStartRect = DllStructGetPtr($StartRect)
DllCall("user32.dll", "int", "SystemParametersInfo", "int", 48, "int", 0, "ptr", $PStartRect, "int", 0)
$Area[0] = DllStructGetData($StartRect,1,1)
$Area[1] = DllStructGetData($StartRect,1,2)
$Area[2] = DllStructGetData($StartRect,1,3)
$Area[3] = DllStructGetData($StartRect,1,4)
$Area[4] = $Area[2] - $Area[0]
$Area[5] = $Area[3] - $Area[1]
Return $Area
EndFunc
Func WM_TIMER($hWnd, $iMsg, $iwParam, $ilParam)
#forceref $hWnd, $iMsg, $ilParam
Switch _Timer_GetTimerID($iwParam)
Case $iTimer
_UpdateStatusBarClock()
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_TIMER
Func _UpdateStatusBarClock()
_GUICtrlStatusBar_SetText($hStatus, @TAB & StringFormat(_NowDate() & " " & "%02d:%02d:%02d", @HOUR, @MIN, @SEC), 0)
EndFunc
Func WM_SIZE($hWnd, $iMsg, $iwParam, $ilParam)
#forceref $hWnd, $iMsg, $iwParam, $ilParam
_GUICtrlStatusBar_Resize($hStatus)
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_SIZE