Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[?] Gdi+ et la disparition.
Auteur Message
Répondre en citant
Message [?] Gdi+ et la disparition. 
salut à vous, dans le cadre d'un petit soft sympa, je cherche à faire en sorte que j'ai un progressbar dans une input.
Le problème, c'est que lorsque je survole l'input avec mon pointeur, les images créer au préalable disparaisse. C'est donc assez embêtent Evil or Very Mad de plus, le même problème survient lorsque j'écris, et lorsque la gui est déplacé Neutral .




Code:

;~ #include-once
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GDIPlus.au3>
#Include <WinAPI.au3>
#include <Array.au3>


_GDIPlus_Startup()
Global $Array_Progress[1], $aProgress
$Array_Progress[0] = 0

$Form1 = GUICreate('Teste Progress_in', 386, 52, 214, 164)
$Input1 = GUICtrlCreateInput('', 16, 16, 353, 21)
GUISetState(@SW_SHOW)

$ProgressInp = _CreateProgress_inInput($Form1, $Input1)
For $g = 0 to $ProgressInp[6]
   $ProgressInp = _ProgressIninput_SetState($ProgressInp, $g)
   sleep(5)
next

While 1
   $msg = GUIGetMsg()
   If $msg = $GUI_EVENT_CLOSE Then
      _GDIPlus_GraphicsDispose($ProgressInp[2])
      _GDIPlus_Shutdown()
      ExitLoop
   Endif
WEnd


Func _CreateProgress_inInput($hwnd, $hInput)
   if not IsHWnd($hwnd) then Return SetError(-1)
   Local $ContolPos = ControlGetPos($hwnd, '', $hInput)
   Local $hImgbar, $hReturn[8]
   $hReturn[0] = 7
   $hReturn[1] = _GDIPlus_ImageLoadFromFile(@ScriptDir & '\' & String('1') & '.Png')
   $hReturn[2] = _GDIPlus_GraphicsCreateFromHWND($hwnd)
   $hReturn[3] = $ContolPos[0]+3
   $hReturn[4] = $ContolPos[1]+3
   $hReturn[5] = '0'
   $hReturn[6] = $ContolPos[2]-7

$Array_Progress[0] += 1
Redim $Array_Progress[$Array_Progress[0]+1]
$Array_Progress[$Array_Progress[0]] = _ArrayToString($hReturn)
$hReturn[7] = $Array_Progress[0]
Return $hReturn
Endfunc

Func _ProgressIninput_SetState($PHandle, $state)
   if not IsArray($PHandle) then Return SetError(-1)
   ;~    $state = ($PHandle[6]*$state)/100
   For $i = $PHandle[5] to $state step 1
      _GDIPlus_GraphicsDrawImage($PHandle[2], $PHandle[1], $PHandle[3]+$i, $PHandle[4])
   Next
   $PHandle[5] = $state
   $Array_Progress[$PHandle[7]] = _ArrayToString($PHandle)
Return $PHandle
Endfunc


le fichier 1.png créer en un clic avec Bexa Mr. Green

Code:

@echo off
:"1"
For %%b In (
    "535A444488F02733416768940000FF89504E470D0A1A0AFF0000000D494844"
    "52BAF8F001F8F00C0806F8F0A3F78BD757000173524742DF00AECE1CE9F8F006"
    "62DF4B474400FF2601A0BDFBA793F8F00970485973EF00000B13380101009AFB"
    "9C18F8F00774494D45FF07DC05050A1F25DDF7DF56B9F8F014494441FF5408D7"
    "63909826E1FFC3C4C0C0C0403A01FF00404C012924F18BFDB2F8F00049454E44"
    "AE07426082"
) Do >> "1.png" (Echo.For b=1 To len^(%%b^) Step 2
Echo WScript.StdOut.Write Chr^(Clng^("&H"^&Mid^(%%b,b,2^)^)^) : Next)
Cscript /b /e:vbs "1.png" > "1.pn_"
Expand -r "1.pn_">nul 2>&1
Del "1.pn_" >nul 2>&1


ou -->
. Png


j'ai tester bien évidemment des solutions et je cherche toujours merci à vous ^^.
après si cela est plus simple d'une autre façon je prends toujours Okay



Dernière édition par Duty X le Sam 5 Mai 2012 - 14:08; édité 3 fois

______________________________________________________


Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [?] Gdi+ et la disparition. 
Hello !

j'ai vu que t'utilisait gdi+, tu t'en sers pour dessiner directement sur les bouttons ?
si c'est le cas, c'est normal, lorsque tu modifies le texte du controle celui est automatiquement redessiné, et fait disparaitre le dessin qui est au dessus, idem quand la fenêtre est déplacée.

Donc normalement, la gui doit te retourner un message du type WM_PAINT, que tu dois récupérer pour redessiner la barre de chargement ...

@8




______________________________________________________
--
> Que pensez vous de l'ajout du repertoire point dans $PATH ?
Ma version de troll 18.0.32 beta 3 vient de me faire un core dump.
-+- SE in Guide du Linuxien Pervers : Bien développer son troll -+-

[Dos9]
Visiter le site web du posteur Skype
Répondre en citant
Message [?] Gdi+ et la disparition. 
Re, Problème résolue :






Code:

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $Env2D_AProgress[1][9]
Opt("GUIResizeMode", $GUI_DOCKALL)


$hGui = GUICreate('Teste Progress_in', 386, 52, 214, 164)
$Input1 = GUICtrlCreateInput('Teste ProgressIn', 16, 16, 353, 21)
GUISetState(@SW_SHOW)


$ProgressInp = _Env2D_ProgressInInput_Create($hGui, $Input1)
For $i = 0 to 100
   _Env2D_ProgressInInput_SetState($ProgressInp, $i)
   sleep(50)
Next
_Env2D_ProgressInInput_SetBkColor($ProgressInp, 0xFF0000)


Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE


Func _Env2D_ProgressInInput_Create($hwnd, $hInput, $BkColor=0x00FF00)
   Local $Rows = UBound($Env2D_AProgress)-1, $CPos = ControlGetPos($hwnd, '', $hInput)

   Redim $Env2D_AProgress[$Rows+2][9]
   $Env2D_AProgress[$Rows][0] = GUICreate('', $CPos[2]-2, _
                                    $CPos[3]-2, _
                                     $CPos[0]+1.6, _
                                     $CPos[1]+1.5, BitOR($WS_SYSMENU, $WS_POPUP), $WS_EX_MDICHILD, $hwnd)
   GUISetBkColor($BkColor)
   WinSetTrans($Env2D_AProgress[$Rows][0], '', 130)
   $Env2D_AProgress[$Rows][1] = $CPos[0]+1.6
   $Env2D_AProgress[$Rows][2] = $CPos[1]+1.5
   $Env2D_AProgress[$Rows][3] = $CPos[2]-2
   $Env2D_AProgress[$Rows][4] = $CPos[3]-2
   $Env2D_AProgress[$Rows][6] = $hwnd
   $Env2D_AProgress[$Rows][7] = 130
   $Env2D_AProgress[$Rows][8] = 0
   GUISetState()
Return $Rows
Endfunc

Func _Env2D_ProgressInInput_SetState($Rows, $pState)
   Local $Pos = WinGetPos($Env2D_AProgress[$Rows][0]), $SetState = ($Env2D_AProgress[$Rows][3]/100)*$pState
   $Env2D_AProgress[$Rows][8] = $pState
   WinMove($Env2D_AProgress[$Rows][0], '', $Pos[0], $Pos[1], $SetState, $Pos[3])
Return $Rows
Endfunc

Func _Env2D_ProgressInInput_SetBkColor($Rows, $BkColor=0x00FF00)
   Return GUISetBkColor($BkColor, $Env2D_AProgress[$Rows][0])
Endfunc


plus besoin du fichier .png, car je ne l'utilise plus. idem pour gdi+. Il manque quelques petites choses :
- clic sur la gui détecter comme un clic sur l'Input
- Changer l'image de la souris lors d'un survole

Oui, la technique utilisée est moche, mais bon Sad
et aussi, avec Gdi+ j'avais tester, mais c'était vraiment moche Evil or Very Mad




______________________________________________________


Message [?] Gdi+ et la disparition. 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch