So are you interested in helping to implement this? The WINE project
has started a uxtheme.dll It would be nice if we could agree on a
common theme system for both projects.

Thanks
Steven

Note: forwarded message attached.


__________________________________
Do you Yahoo!?
The New Yahoo! Shopping - with improved product search
http://shopping.yahoo.com
--- Begin Message --- At 21.34 17/10/2003, you wrote:
1. Windows XP (TM) ships with 2 comctl32.dll, the classic old style one (version 5), and the new 'Visual Styled' (but non redistributable) one (version 6), so we need to handle this situation because the whole ROS will be '(freely) redistributable', then there is no need to have 2 different comctl32.dll.

well, Windows XP has two versions of the common controls because most programs need to be tested against visual styles, first. Some programs draw their own buttons, or modify the behavior of other standard controls in ways that are incompatible with visual styles, so there should be a way to conditionally disable visual styles. Since visual styles are "forced" onto standard controls by Common Controls v6 through subclassing, not loading Common Controls v6 is enough to disable them


2. Having in mind we should provide a new api (uxtheme.dll) to implement themes and that we MUST make use of it if we want themed stuff, comctl32.dll should be writen from scratch using uxtheme's api (having uxtheme previously implemented, obviously)

my idea was to implement a "dummy" uxtheme.dll, drawing in the classic Windows look-and-feel with simple GDI calls (DrawFrameControl, DrawFocusRect, etc.). This would allow us to keep a single codebase (and even a single executable) for our Common Controls. user32.dll too could always fall back on uxtheme.dll, and our uxtheme.dll could have a function that tells it to switch into styled mode, called by the dummy Common Controls v6 DLL


To sum up, the flow of drawing operations will be like this in non-styled mode:

+------------+  calls  +-------------+  calls  +--------------+
|            |-------->| uxtheme.dll |<--------|              |
|            |         +-------------+         | comclt32.dll |
| user32.dll |                | thunks to      |              |
|            |                |                +--------------+
|            |<---------------/
+------------+

(the dummy uxtheme.dll is implemented by user32.dll. To eliminate uxtheme.dll from the picture you just make user32.dll link back to itself - the Microsoft user32.dll already does this for several other extensions, like the IME manager) and like this with visual styles enabled:

+-----------------+ thunks to
|                 |-----------------------------------\
| comclt32.dll v6 |                                   |
|                 |-----------\                       |
+-----------------+           | initializes           |
                              |                       |
                              V                       V
+------------+  calls  +-------------+  calls  +--------------+
|            |-------->| uxtheme.dll |<--------|              |
|            |         +-------------+         | comclt32.dll |
| user32.dll |                | thunks to      |              |
|            |                |                +--------------+
|            |                |
+------------+                V
                      +----------------+
                      | <visual style> |
                      +----------------+

_______________________________________________
Ros-kernel mailing list
[EMAIL PROTECTED]
http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel

--- End Message ---

Reply via email to