Codejock Forums Homepage
Forum Home Forum Home > Codejock Products > Visual C++ MFC > Skin Framework
  New Posts New Posts RSS Feed - OS common file open dialog partially skinned
  FAQ FAQ  Forum Search   Events   Register Register  Login Login

OS common file open dialog partially skinned

 Post Reply Post Reply
Author
Message
rdhd View Drop Down
Senior Member
Senior Member
Avatar

Joined: 13 August 2007
Location: United States
Status: Offline
Points: 915
Post Options Post Options   Thanks (0) Thanks(0)   Quote rdhd Quote  Post ReplyReply Direct Link To This Post Topic: OS common file open dialog partially skinned
    Posted: 26 March 2025 at 12:15pm
I'm seeing this in our product. When skinning is disabled the OS File Open dialog has the command bar a the top that has "Orginaize", "New Folder" and other buttons like the Help button on it. That part of the dialog is skinned.

Run the CJ SkinSDISample to duplicate the issue. Click the Open Dialog button with iTunes or Le5 enabled. Choose to not skin the dialog. You will see the issue then. I don't know how this is occurring as the window is a DirectUIHWND class and it is created each time the dialog is.

It appears that the OS is detecting system color changes introduced by the skin. Disabling skinning using the API calls made in the sample appears to only avoid hooking windows. We have customers complaining that this part of the open dialog is skinned.

What's the work around? I suspect changing system colors will result in WM_SYSCOLORCHANGE being broadcast to all windows which may then redraw without the expected skin colors.
Back to Top
rdhd View Drop Down
Senior Member
Senior Member
Avatar

Joined: 13 August 2007
Location: United States
Status: Offline
Points: 915
Post Options Post Options   Thanks (0) Thanks(0)   Quote rdhd Quote  Post ReplyReply Direct Link To This Post Posted: 3 hours 6 minutes ago at 2:00pm
Just in case I implemented IXTPSkinManagerWindowFilter and set a filter. The file open dialog contains a DirectUIHWND class and I filtered that out. Though I see the class name passed in as I open the dialog the top of that window that has "Organize ... Help" still is skinned.

So whether I disable skinning before bringing the dialog up or try to filter out the window the skin persists.

I'm debugging and I see that even though I turned off skinning the CXTPSkinManagerDetoursApiHook::OnHookGetSysColor is still active and there is no check for disabled skinning. The OS file open dialog is making calls to get system colors and CJ is returning system colors. I see calls to that api to get CLR_BTNFACE and CLR_HOTLIGHT when I move over "Organize" which is why this OS dialog is "partially skinned".

How do I avoid this problem? Modify CJ code seems to be the only option I have unless I haven't found a way to unhook the hook when I turn off apply new windows/threads.
Back to Top
 Post Reply Post Reply
  Share Topic   

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 12.04
Copyright ©2001-2021 Web Wiz Ltd.

This page was generated in 0.031 seconds.