IShellBrowser/ICommDlgBrowser Theme draw problem

Kenneth Robinette support at securenetterm.com
Sun Feb 21 17:12:24 CST 2010


I am testing a SSH file transfer program which makes use of the Microsoft IShellBrowser and ICommDlgBrowser interfaces for the "local" file system view.  The interface listview header (detail view) does not get painted correctly when a theme is enabled under Wine.  If a theme is not selected, the problem does not happen.  This can be seen using an example program available for general public download at:

http://www.codeproject.com/KB/shell/explorer.aspx?df=100&forumid=2239&exp=0&select=583589&tid=583589

I traced the problem through the comctl32 listview.c module:

LISTVIEW_NCPaint()
which then calls
DrawThemeBackground (theme, dc, 0, 0, &r, 0);

located in the uxtheme.dll draw.c module.

If I replace the uxtheme.dll with the native version, the problem goes away.

In reviewing the DrawThemeBackground() fuction, it calls:

DrawThemeBackgoundEx()

which then calls:

UXTHEME_DrawBorderBackground()

when the bgtype is BT_BORDERFILL

The UXTHEME_DrawBorderBackgound() calls two internal functions:

UXTHEME_DrawBorderRectangle()
and 
UXTHEME_DrawBackgroundFill()

The problem seems related to UXTHEME_DrawBackgroundFill().  If I comment this call out, everything appears to work correctly.  It would appear that the UXTHEME_DrawBackgroundFill() is being called incorrectly.

Suggestions?



More information about the wine-devel mailing list