Jump to content

GUICtrlCreatePic refresh issue


polihale
 Share

Recommended Posts

Hi everyone,

This is my first post. I've been using AutoIt for two years and never needed support until now (a credit to the authors). Glad I found this forum; didn't know until today it existed.

My issue is refreshing images that were created with GUICtrlCreatePic. I've search this site for an answer and found lots of related issues, but I still don't know what's going on.

I use GUICtrlCreatePic to draw an image. It works. Later on, I re-draw a new image over the old one, again using GUICtrlCreatePic. But the new image doesn't appear. If I minimize the application and then maximize it (forcing Windows XP to refresh it), the proper image appears.

How do I tell Windows to forcibly refresh the GUI?

Here is the .AU3 file along with some images for testing: test.zip package

I'm sure it's something simple. Thanks for the help.

Christopher

Link to comment
Share on other sites

#include <GUIConstants.au3>
GUICreate("Test",300,150,10,10)

$ChangeButton = GuiCtrlCreateButton("Change Color",50, 50, 125, 33)
$PanelColor = 1
$pic = GUICtrlCreatePic("",210,50,50,50)

GUISetState()

While 1
   $MSG = GUIGetMsg()
   Select

      Case $MSG = $GUI_EVENT_CLOSE
         Exit

      Case $MSG = $ChangeButton
          $PanelColor = $PanelColor + 1
          if $PanelColor = 4 then $PanelColor = 1
          if $PanelColor = 1 then
             GUICtrlSetImage($pic, @ScriptDir & "\red.jpg")
             GUICtrlCreateLabel('Red  ',220,110)
          endif
          if $PanelColor = 2 then
             GUICtrlSetImage($pic, @ScriptDir & "\grey.jpg")
             GUICtrlCreateLabel('Grey  ',220,110)
          endif
          if $PanelColor = 3 then
             GUICtrlSetImage($pic, @ScriptDir & "\yellow.jpg")
             GUICtrlCreateLabel('Yellow',220,110)
          endif

   EndSelect
Wend

SciTE for AutoItDirections for Submitting Standard UDFs

 

Don't argue with an idiot; people watching may not be able to tell the difference.

 

Link to comment
Share on other sites

#include <GUIConstants.au3>
GUICreate("Test",300,150,10,10)

$ChangeButton = GuiCtrlCreateButton("Change Color",50, 50, 125, 33)
$PanelColor = 1
           $pic=  GUICtrlCreatePic("red.jpg",210,50,50,50)

GUISetState()

While 1
   $MSG = GUIGetMsg()
   Select

      Case $MSG = $GUI_EVENT_CLOSE
         Exit

      Case $MSG = $ChangeButton
          $PanelColor = $PanelColor + 1
          if $PanelColor = 4 then $PanelColor = 1
          if $PanelColor = 1 then
             GUICtrlSetImage($pic,"red.jpg")
             GUICtrlCreateLabel('Red  ',220,110)
          endif
          if $PanelColor = 2 then
             GUICtrlSetImage($pic,"grey.jpg")
             GUICtrlCreateLabel('Grey  ',220,110)
          endif
          if $PanelColor = 3 then
             GUICtrlSetImage($pic,"yellow.jpg")
             GUICtrlCreateLabel('Yellow',220,110)
          endif

   EndSelect
Wend

You need to setimage not to recreate it :whistle:

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...