Jump to content
Sign in to follow this  
RickyMartin

GUICtrlCreateGraphic behaving irationally or is it me?

Recommended Posts

RickyMartin

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
RickyMartin

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
guinness

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


UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_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: 22/04/2018

Share this post


Link to post
Share on other sites
RickyMartin

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
guinness

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.


UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_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: 22/04/2018

Share this post


Link to post
Share on other sites
RickyMartin

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  

×