Jump to content
Zedna

GUICtrlSetColor() on checkbox/radiobutton doesn't work on Windows 10

Recommended Posts

GUICtrlSetColor() on checkbox/radiobutton doesn't work on Windows 10.

On Windows 7 it works OK but on Windows 10 color of checkbox/radiobutton remains default black.

GUICtrlSetBkColor() is OK.

Other controls (label,button) are OK.

 

EDIT:

Testing on AutoIt 3.3.14.5, Windows 10 without Aero (Classic theme).

I'm about to write ticket to BugTrack, can somebody confirm this bug?

 

EDIT2:

The same problem is also with RadioButton

#include <GUIConstants.au3>

GUICreate("Test", 400, 300)

GUICtrlCreateLabel("Test", 10, 10, 50, 23)
GUICtrlCreateButton("Test", 10, 50, 50, 23)
GUICtrlCreateCheckbox("Test", 10, 100, 50, 23)
GUICtrlCreateRadio("Test", 10, 150, 50, 23)

GUICtrlCreateLabel("Test", 110, 10, 50, 23)
GUICtrlSetColor(-1, 0x00FF00)
GUICtrlCreateButton("Test", 110, 50, 50, 23)
GUICtrlSetColor(-1, 0x00FF00)
GUICtrlCreateCheckbox("Test", 110, 100, 50, 23)
GUICtrlSetColor(-1, 0x00FF00) ; --> here is problem
GUICtrlCreateRadio("Test", 110, 150, 50, 23)
GUICtrlSetColor(-1, 0x00FF00) ; --> here is problem

GUICtrlCreateLabel("Test", 210, 10, 50, 23)
GUICtrlSetBkColor(-1, 0x00FF00)
GUICtrlCreateButton("Test", 210, 50, 50, 23)
GUICtrlSetBkColor(-1, 0x00FF00)
GUICtrlCreateCheckbox("Test", 210, 100, 50, 23)
GUICtrlSetBkColor(-1, 0x00FF00)
GUICtrlCreateRadio("Test", 210, 150, 50, 23)
GUICtrlSetBkColor(-1, 0x00FF00)

GUISetState(@SW_SHOW)

While 1
    If GUIGetMsg() = $GUI_EVENT_CLOSE Then Exit
WEnd

image.png.ef1c2b00ea98760fc6f854aeb6a784a2.png

 

Edited by Zedna

Share this post


Link to post
Share on other sites
#include <GUIConstants.au3>
#include <WinAPITheme.au3>

GUICreate("Test", 400, 300)

GUICtrlCreateLabel("Test", 10, 10, 50, 23)
GUICtrlCreateButton("Test", 10, 50, 50, 23)
GUICtrlCreateCheckbox("Test", 10, 100, 50, 23)
GUICtrlCreateRadio("Test", 10, 150, 50, 23)

GUICtrlCreateLabel("Test", 110, 10, 50, 23)
GUICtrlSetColor(-1, 0x00FF00)
GUICtrlCreateButton("Test", 110, 50, 50, 23)
GUICtrlSetColor(-1, 0x00FF00)
$idCB = GUICtrlCreateCheckbox("Test", 110, 100, 50, 23)
 _WinAPI_SetWindowTheme (GUICtrlGetHandle($idCB), "0", "0")
GUICtrlSetColor(-1, 0x00FF00) ; --> NO problem
$idRB = GUICtrlCreateRadio("Test", 110, 150, 50, 23)
 _WinAPI_SetWindowTheme (GUICtrlGetHandle($idRB), "0", "0")
GUICtrlSetColor(-1, 0x00FF00) ; --> No problem

GUICtrlCreateLabel("Test", 210, 10, 50, 23)
GUICtrlSetBkColor(-1, 0x00FF00)
GUICtrlCreateButton("Test", 210, 50, 50, 23)
GUICtrlSetBkColor(-1, 0x00FF00)
GUICtrlCreateCheckbox("Test", 210, 100, 50, 23)
GUICtrlSetBkColor(-1, 0x00FF00)
GUICtrlCreateRadio("Test", 210, 150, 50, 23)
GUICtrlSetBkColor(-1, 0x00FF00)

GUISetState(@SW_SHOW)

While 1
    If GUIGetMsg() = $GUI_EVENT_CLOSE Then Exit
WEnd

Working for me on Win 10

Share this post


Link to post
Share on other sites

@Nine

Thanks for the FIX/WORKAROUND! Works for me.

Anyway I'm surprised as I use Classic theme so I thought theme shouldn't be problem ...

EDIT:

Now I checked my theme and it was Classic in Win7 and after update to Win 10 it's not Classic anymore and there is also Windows transparency ON

so I can understand why this fix is related to my problem (on my configuration)

EDIT2: Anyway mystery remains why only checkbox/radiobutton have this bug and label/button are OK. So some BUG is somewhere and this is only workaround ...

Edited by Zedna

Share this post


Link to post
Share on other sites

Just for the reference:

Here is the fix compatible with older versions of AutoIt (which I use) - derived from the mentioned above by Nine

#include <GUIConstants.au3>
;~ #include <WinAPITheme.au3>

GUICreate("Test", 400, 300)

GUICtrlCreateLabel("Test", 10, 10, 50, 23)
GUICtrlCreateButton("Test", 10, 50, 50, 23)
GUICtrlCreateCheckbox("Test", 10, 100, 50, 23)
GUICtrlCreateRadio("Test", 10, 150, 50, 23)

GUICtrlCreateLabel("Test", 110, 10, 50, 23)
GUICtrlSetColor(-1, 0x00FF00)
GUICtrlCreateButton("Test", 110, 50, 50, 23)
GUICtrlSetColor(-1, 0x00FF00)
$idCB = GUICtrlCreateCheckbox("Test", 110, 100, 50, 23)
;~ _WinAPI_SetWindowTheme (GUICtrlGetHandle($idCB), "0", "0")
DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", GUICtrlGetHandle($idCB), "wstr", "", "wstr", "")
GUICtrlSetColor(-1, 0x00FF00) ; --> NO problem
$idRB = GUICtrlCreateRadio("Test", 110, 150, 50, 23)
;~ _WinAPI_SetWindowTheme (GUICtrlGetHandle($idRB), "0", "0")
DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", GUICtrlGetHandle($idRB), "wstr", "", "wstr", "")
GUICtrlSetColor(-1, 0x00FF00) ; --> No problem

GUICtrlCreateLabel("Test", 210, 10, 50, 23)
GUICtrlSetBkColor(-1, 0x00FF00)
GUICtrlCreateButton("Test", 210, 50, 50, 23)
GUICtrlSetBkColor(-1, 0x00FF00)
GUICtrlCreateCheckbox("Test", 210, 100, 50, 23)
GUICtrlSetBkColor(-1, 0x00FF00)
GUICtrlCreateRadio("Test", 210, 150, 50, 23)
GUICtrlSetBkColor(-1, 0x00FF00)

GUISetState(@SW_SHOW)

While 1
    If GUIGetMsg() = $GUI_EVENT_CLOSE Then Exit
WEnd

 

Edited by Zedna

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

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...