Page 1 sur 1
[R][..] GDI + d'une Tab à l'autre
Posté : mer. 30 oct. 2024 03:22
par Anthony
Bonjour à tous,
Je me heurte à un petit problème, en allant sur l'onglet Tab 2 mon image est bien là, çà c'est bon.
Si on clique dessus, çà le ferme, çà c'est cool

OK
Si je ferme la fenêtre "Message" là c'est moins cool, l'image reapparait par dessus les onglets alors que le but est de rester dans la Tab 2.
Ma question est comment arriver sur la Tab 2 directement sans que l'image ne disparaisse ou se retrouve par dessus tout mais dans l'onglet Tab 2 uniquement ?
Merci.
Au cas où

► Afficher le texte
;coded by UEZ 2011 UpDate Anthony72#include <GUIConstantsEx.au3>#include <GDIPlus.au3>#include <GuiTab.au3>Global Const $hGUI = GUICreate("Display PNG Image in picture control update", 600, 250)Local $X = 15, $Y = 35, $W = 565, $H = 200, $pngFile = "Image.png"Global $id_Tab = GUICtrlCreateTab(5, 5, 590, 240) Global $id_Tab_Sheet_1 = GUICtrlCreateTabItem("Tab 1") _GUICtrlTab_SetBkColor
( $hGui, $id_Tab , 0xCCCCFF) Global $id_Tab_Sheet_2 = GUICtrlCreateTabItem("Tab 2") _GUICtrlTab_SetBkColor
( $hGui, $id_Tab , 0xCCCCFF) Local $idGUICtrlCreatePic = _PNG_To_GUICtrlCreatePic
( $X, $Y, $W, $H, $pngFile) Global $id_Tab_Sheet_3 = GUICtrlCreateTabItem("Tab 3") _GUICtrlTab_SetBkColor
( $hGui, $id_Tab , 0xCCCCFF) GUICtrlCreateTabItem("")GUISetState()Sleep( 1000)_GUICtrlTab_SetCurSel( $id_Tab, 1)MsgBox($MB_SYSTEMMODAL, "Information", "Selection sur : " & _GUICtrlTab_GetCurSel( $id_Tab) & ", Mais pas d'image")While True $msg = GUIGetMsg() Switch $msg Case $idGUICtrlCreatePic GUICtrlDelete ( $idGUICtrlCreatePic) MsgBox(0, "Information", "OK, l'image à été cliquée, maintenant changez de Tab (1,2,3) l'image reste au dessus des 3 Tab, comment résoudre ce problème pour qu'il reste uniquement sur le Tab 2") _PNG_To_GUICtrlCreatePic
( $X, $Y, $W, $H, $pngFile) Case $GUI_EVENT_CLOSE GUIDelete( $hGUI) Exit EndSwitchWEndFunc _PNG_To_GUICtrlCreatePic
( $X="", $Y="", $W="", $H="", $pngFile="") Local $idPic = GUICtrlCreatePic("", $X, $Y) _GDIPlus_Startup() Local $hImage = _GDIPlus_ImageLoadFromFile( $pngFile) Local $hBitmap_Scaled = _GDIPlus_ImageResize( $hImage, $W, $H) ;resize image Local $Bmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap( $hBitmap_Scaled) _WinAPI_DeleteObject(GUICtrlSendMsg( $idPic, 0x0172, $IMAGE_BITMAP, $Bmp)) _WinAPI_DeleteObject( $Bmp) _GDIPlus_ImageDispose( $hImage) _GDIPlus_Shutdown() Return $idPicEndFuncFunc _GUICtrlTab_SetBkColor
($hWnd, $hSysTab32, $sBkColor) Local $aTabPos = ControlGetPos($hWnd, "", $hSysTab32) Local $aTab_Rect = _GUICtrlTab_GetItemRect($hSysTab32, -1) GUICtrlCreateLabel("", $aTabPos[0]+2, $aTabPos[1]+$aTab_Rect[3]+4, $aTabPos[2]-6, $aTabPos[3]-$aTab_Rect[3]-7) GUICtrlSetBkColor( -1, $sBkColor) GUICtrlSetState( -1, $GUI_DISABLE)EndFunc
Re: [..] GDI + d'une Tab à l'autre
Posté : mer. 30 oct. 2024 11:29
par walkson
Bonjour,
Code : Tout sélectionner
Case $idGUICtrlCreatePic
GUICtrlDelete ( $idGUICtrlCreatePic)
MsgBox(0, "Information", "OK, l'image à été cliquée, maintenant changez de Tab (1,2,3) l'image reste au dessus des 3 Tab, comment résoudre ce problème pour qu'il reste uniquement sur le Tab 2")
GUISwitch($hGui, $id_Tab_Sheet_2)
_PNG_To_GUICtrlCreatePic( $X, $Y, $W, $H, $pngFile)
GUICtrlCreateTabItem("")
[R][..] GDI + d'une Tab à l'autre
Posté : mer. 30 oct. 2024 18:40
par Anthony
walkson a écrit : ↑mer. 30 oct. 2024 11:29
Bonjour,
Code : Tout sélectionner
Case $idGUICtrlCreatePic
GUICtrlDelete ( $idGUICtrlCreatePic)
MsgBox(0, "Information", "OK, l'image à été cliquée, maintenant changez de Tab (1,2,3) l'image reste au dessus des 3 Tab, comment résoudre ce problème pour qu'il reste uniquement sur le Tab 2")
GUISwitch($hGui, $id_Tab_Sheet_2)
_PNG_To_GUICtrlCreatePic( $X, $Y, $W, $H, $pngFile)
GUICtrlCreateTabItem("")
Bonjour walkson,
Tiens d'ailleur, je me posais la question, pourquoi il n'y à pas de majuscule à ton nom ?
çà fait un bout que je me posais la question, voilà c'est fait
Bon fini le hors sujet, et voilà une mise à jour ou j'ai mis dans une fonction la résolution du problème pour que ce soit plus simple.
En éspérant que ce bout de code serve à d'autres personnes avec le même soucis que moi.
Merci à toi
Je laisse en non résolu car GDI+ est ma grosse bête noire
► Afficher le texte
;coded by UEZ 2011 UpDate Anthony72#include <GUIConstantsEx.au3>#include <GDIPlus.au3>#include <GuiTab.au3>Global Const $hGUI = GUICreate("Display PNG Image in picture control update", 600, 250)Local $X = 15, $Y = 35, $W = 565, $H = 200, $pngFile = "Image.png"Global $id_Tab = GUICtrlCreateTab(5, 5, 590, 240) Global $id_Tab_Sheet_1 = GUICtrlCreateTabItem("Tab 1") _GUICtrlTab_SetBkColor
( $hGui, $id_Tab , 0xCCCCFF) Global $id_Tab_Sheet_2 = GUICtrlCreateTabItem("Tab 2") _GUICtrlTab_SetBkColor
( $hGui, $id_Tab , 0xCCCCFF) Local $idGUICtrlCreatePic = _PNG_To_GUICtrlCreatePic
( $X, $Y, $W, $H, $pngFile) Global $id_Tab_Sheet_3 = GUICtrlCreateTabItem("Tab 3") _GUICtrlTab_SetBkColor
( $hGui, $id_Tab , 0xCCCCFF)GUICtrlCreateTabItem("")GUISetState()$vRet = _Set_Tab_id
( $id_Tab_Sheet_2)ConsoleWrite( $vRet & @CRLF)Sleep( 300)$vRet = _Set_Tab_id
( $id_Tab_Sheet_3)ConsoleWrite( $vRet & @CRLF)Sleep( 300)$vRet = _Set_Tab_id
( $id_Tab_Sheet_1)ConsoleWrite( $vRet & @CRLF)Sleep( 300)$vRet = _Set_Tab_id
( $id_Tab_Sheet_2)ConsoleWrite( $vRet & @CRLF)MsgBox($MB_SYSTEMMODAL, "Information", "Selection de l'onglet " & _GUICtrlTab_GetItemText( $id_Tab, _GUICtrlTab_GetCurSel( $id_Tab)) & ", son ID est " & _GUICtrlTab_GetCurSel( $id_Tab))While True $msg = GUIGetMsg() Switch $msg Case $idGUICtrlCreatePic GUICtrlDelete ( $idGUICtrlCreatePic) MsgBox(0, "Information", "L'image cliquée de l'onglet " &Chr(34)& "Tab " &Chr(34)& _GUICtrlTab_GetCurSel( $id_Tab)+1 & " est de nouveau sur l'onglet " &Chr(34)& "Tab " & _GUICtrlTab_GetCurSel( $id_Tab)+1 & Chr(34) & " et son ID est " & _GUICtrlTab_GetCurSel( $id_Tab)) _Set_Tab_id
( $id_Tab_Sheet_2, 1) _PNG_To_GUICtrlCreatePic
( $X, $Y, $W, $H, $pngFile) _Set_Tab_id
( $id_Tab_Sheet_2) Case $GUI_EVENT_CLOSE GUIDelete( $hGUI) Exit EndSwitchWEndFunc _Set_Tab_id
( $_idTabSheet = "", $_MemTab = "") If Not IsDeclared( "_MemTab") Then Global $_MemTab If $_MemTab = "" Then GUISwitch($hGui, $_idTabSheet) GUICtrlCreateTabItem("") ElseIf $_MemTab <> "" Then GUISwitch($hGui, $_idTabSheet) $_MemTab = "Open" ElseIf $_MemTab = "Open" Then GUICtrlCreateTabItem("") $_MemTab = "" EndIf Return _GUICtrlTab_GetCurSel( $id_Tab) &","& _GUICtrlTab_GetItemText( $id_Tab, _GUICtrlTab_GetCurSel( $id_Tab))EndFuncFunc _PNG_To_GUICtrlCreatePic
( $X="", $Y="", $W="", $H="", $pngFile="") Local $idPic = GUICtrlCreatePic("", $X, $Y) _GDIPlus_Startup() Local $hImage = _GDIPlus_ImageLoadFromFile( $pngFile) Local $hBitmap_Scaled = _GDIPlus_ImageResize( $hImage, $W, $H) ;resize image Local $Bmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap( $hBitmap_Scaled) _WinAPI_DeleteObject(GUICtrlSendMsg( $idPic, 0x0172, $IMAGE_BITMAP, $Bmp)) _WinAPI_DeleteObject( $Bmp) _GDIPlus_ImageDispose( $hImage) _GDIPlus_Shutdown() Return $idPicEndFuncFunc _GUICtrlTab_SetBkColor
($hWnd, $hSysTab32, $sBkColor) Local $aTabPos = ControlGetPos($hWnd, "", $hSysTab32) Local $aTab_Rect = _GUICtrlTab_GetItemRect($hSysTab32, -1) GUICtrlCreateLabel("", $aTabPos[0]+2, $aTabPos[1]+$aTab_Rect[3]+4, $aTabPos[2]-6, $aTabPos[3]-$aTab_Rect[3]-7) GUICtrlSetBkColor( -1, $sBkColor) GUICtrlSetState( -1, $GUI_DISABLE)EndFunc