On Sun, Dec 13, 2009 at 11:48 AM, Nikolay Sivov bunglehead@gmail.com wrote:
On 12/13/2009 13:08, Roderick Colenbrander wrote:
On Sun, Dec 13, 2009 at 10:40 AM, Nikolay Sivovbunglehead@gmail.com wrote:
Hi.
Yesterday I looked at XP introduced messages for Edit controls (EM_SETCUEBANNER/EM_GETCUEBANNER). This definitely doesn't work without v6 module loaded.
Does someone have any idea how this supposed to work? Any comments are welcome as usual.
P.S. Yes, I know that comctl32 does subclass user32 control but only if theming is active (I mean Wine behavior), anyway this subclass procedure only cares about painting messages, control specific messages require control data manipulation, and this isn't a preferable of course.
From what I understood comctl32 doesn't subclass user32 controls but
it has its own implementations. Upon loading user32 calls RegisterClassNameW when a manifest is around to have comctl32 register the classes. Perhaps it is possible to verify this behavior using a test but I really believe no subclassing is performed.
So current theming code doesn't fit and all theme painting should be integrated in 'its own implementation'. This is something new to me, but it's better to start to test it cause we know enough.
Also I'd like to invite Andre to this thread cause it wrote a test for that some months ago.
Correct the current theming code is broken like hell and needs to be rewritten.
It is possible to write some tests but it will mostly be tests that won't make it into Wine itself. The easy test is just to test whether a control is redirected or not for a specific version of comctl32 v6.x (in newer versions more controls are implemented in comctl32).
The main test which AJ suggested would be to 'force' native user32 to call RegisterClassNameW. There would be a dummy dll containing a RegisterClassNameW to which lets say the Button control would be redirected using a manifest. Myself I didn't have time to look at this but Andre tried to do this but had some issues, so this is not done.
Roderick