Edit control messages through Comctl32 v6 module

Roderick Colenbrander thunderbird2k at gmail.com
Sun Dec 13 05:27:33 CST 2009


On Sun, Dec 13, 2009 at 11:48 AM, Nikolay Sivov <bunglehead at gmail.com> wrote:
> On 12/13/2009 13:08, Roderick Colenbrander wrote:
>>
>> On Sun, Dec 13, 2009 at 10:40 AM, Nikolay Sivov<bunglehead at 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



More information about the wine-devel mailing list