Sign in to follow this  
Followers 0
RickyMartin

GUICtrlCreateGraphic behaving irationally or is it me?

7 posts in this topic

#1 ·  Posted (edited)

I just want to make a simple drawing.... Two lines that's it, but I am completely dumbfounded by how GUICtrlCreateGraphic and associated drawing commands (do not) work as I want it to.

my very simple redraw function:

Func Redraw()
If $a Then
GUICtrlDelete($a)
GUICtrlDelete($b)
EndIf

Global $a = GUICtrlCreateGraphic(40,40)
Global $b = GUICtrlCreateGraphic(40,40)

GUICtrlSetGraphic($a, $GUI_GR_PENSIZE, $pensize)
GUICtrlSetGraphic($a, $GUI_GR_COLOR,$Pencolor[$Pencolorcounter])
GUICtrlSetGraphic($a, $GUI_GR_LINE, 60, 10)
GuiCtrlSetState($a,$GUI_DISABLE)

GUICtrlSetGraphic($b, $GUI_GR_PENSIZE, $pensize)
GUICtrlSetGraphic($b, $GUI_GR_COLOR,$Pencolor[$Pencolorcounter+1])
GUICtrlSetGraphic($b, $GUI_GR_LINE, 10, 80)

GuiCtrlSetState($b,$GUI_DISABLE)

EndFunc

When I change an X GUICtrlSetGraphic($b, $GUI_GR_LINE, 10, 80) it changes $a ?!?!?!?

When I change an Y GUICtrlSetGraphic($a, $GUI_GR_LINE, 10, 80) it changes $b ?!?!?!?

why oh why does it mix up the two controls?!?

Also, sometimes it produces a line, sometimes just a dot... very strange

Edited by RickyMartin

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

I just want to make a simple drawing.... Two lines that's it, but I am completely dumbfounded by how GUICtrlCreateGraphic and associated drawing commands (do not) work as I want it to.

my very simple redraw function:

Func Redraw()
If $a Then
GUICtrlDelete($a)
GUICtrlDelete($b)
EndIf

Global $a = GUICtrlCreateGraphic(40,40)
Global $b = GUICtrlCreateGraphic(40,40)

GUICtrlSetGraphic($a, $GUI_GR_PENSIZE, $pensize)
GUICtrlSetGraphic($a, $GUI_GR_COLOR,$Pencolor[$Pencolorcounter])
GUICtrlSetGraphic($a, $GUI_GR_LINE, 60, 10)
GuiCtrlSetState($a,$GUI_DISABLE)

GUICtrlSetGraphic($b, $GUI_GR_PENSIZE, $pensize)
GUICtrlSetGraphic($b, $GUI_GR_COLOR,$Pencolor[$Pencolorcounter+1])
GUICtrlSetGraphic($b, $GUI_GR_LINE, 10, 80)

GuiCtrlSetState($b,$GUI_DISABLE)

EndFunc

When I change an X GUICtrlSetGraphic($b, $GUI_GR_LINE, 10, 80) it changes $a ?!?!?!?

When I change an Y GUICtrlSetGraphic($a, $GUI_GR_LINE, 10, 80) it changes $b ?!?!?!?

why oh why does it mix up the two controls?!?

Also, sometimes it produces a line, sometimes just a dot... very strange

Funny thing:

Func Redraw()
If $a Then
GUICtrlDelete($a)

EndIf

Global $a = GUICtrlCreateGraphic(40,40)

GUICtrlSetGraphic($a, $GUI_GR_PENSIZE, $pensize)
GUICtrlSetGraphic($a, $GUI_GR_COLOR,$Pencolor[$Pencolorcounter])
GUICtrlSetGraphic($a, $GUI_GR_LINE, 40, 40)

GUICtrlSetGraphic($a, $GUI_GR_PENSIZE, $pensize)
GUICtrlSetGraphic($a, $GUI_GR_COLOR,$Pencolor[$Pencolorcounter+1])
GUICtrlSetGraphic($a, $GUI_GR_LINE, 0, 40)

GuiSetState()

EndFunc

Produces absolutely nothing?!?

Change it to

GUICtrlSetState(-1,$GUI_SHOW)

And it appears......... The first time..... Next update, nothing

Edited by RickyMartin

Share this post


Link to post
Share on other sites

Why you using Global inside a function? Global variables should be declared at the top of the script.


_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 04/09/2015

Share this post


Link to post
Share on other sites

Why you using Global inside a function? Global variables should be declared at the top of the script.

does it matter?

Share this post


Link to post
Share on other sites

does it matter?

Yes, it can cause 'variable not declared' problems, it's also bad coding practice to do so.

As Jos said, produce some workable code, as right now we (those who help) have to code quite a bit to try and reproduce the problem.


_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 04/09/2015

Share this post


Link to post
Share on other sites

#7 ·  Posted (edited)

I think I solved it.... The Help file on GUICtrlCreateGraphic and the associated GUICtrlSetGraphic is very short and could use some elaboration IHMO.

I did not get that no matter what, GUICtrlSetGraphic used the last cursor position for the next draw, even though it was two different controls.

Anyway, I have a new one for you guys:

Can I have a GUI that does not "take" focus no matter what? Like a transparent GUI that you cannot click on?

I am guessing I have to somehow catch Windows Message Codes maybe? Using GUIRegisterMsg? Or?

I am using the very nice Transparent Clock that someone in here did, to make me some Windows widgets (clocks etc.) but it's really hard using low level calls.

Edited by RickyMartin

Share this post


Link to post
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
Sign in to follow this  
Followers 0