[Bug 25790] New: WM_SETTEXT handler for the user32 buttons generates WM_CTLCOLOR* inconsistent with Windows user32

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Jan 16 03:36:16 CST 2011


http://bugs.winehq.org/show_bug.cgi?id=25790

           Summary: WM_SETTEXT handler for the user32 buttons generates
                    WM_CTLCOLOR* inconsistent with Windows user32
           Product: Wine
           Version: 1.3.11
          Platform: x86
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: user32
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: exclusion at gmail.com


Created an attachment (id=32868)
 --> (http://bugs.winehq.org/attachment.cgi?id=32868)
Test source

Wine behavior when processing SetWindowText (WM_SETTEXT) doesn't exactly
replicate Windows regarding WM_CTLCOLOR* messages.
I found two inconsistencies and made the test (see attachments).
First inconsistency:
Windows doesn't generate WM_CTLCOLORSTATIC when WM_SETTEXT invoked for a
PushButton and alike. Instead it generate WM_CTLCOLORBTN.
In Windows I get:
DialogBox.WindowProc: before SetWindowText
DialogBox.WindowProc(WM_CTLCOLORBTN)
DialogBox.WindowProc(WM_CTLCOLORBTN)
DialogBox.WindowProc: after SetWindowText

In Wine:
DialogBox.WindowProc: before SetWindowText
DialogBox.WindowProc(WM_CTLCOLORSTATIC)
DialogBox.WindowProc(WM_CTLCOLORBTN)
DialogBox.WindowProc: after SetWindowText

Looking at http://msdn.microsoft.com/en-us/library/bb761849%28VS.85%29.aspx
(WM_CTLCOLORBTN Message) and http://support.microsoft.com/kb/130952/en-us?fr=1
I believe that the WM_SETTEXT handler for BS_PUSHBUTTON, BS_DEFPUSHBUTTON and
BS_PUSHLIKE should get the hbrush with the WM_CTLCOLORBTN message.


Second inconsistency:
Windows doesn't generate WM_CTLCOLOR* when WM_SETTEXT invoked for the invisible
controls.
My test in Windows shows:
DialogBox.WindowProc: before SetWindowText
DialogBox.WindowProc: after SetWindowText

In Wine:
DialogBox.WindowProc: before SetWindowText
DialogBox.WindowProc(WM_CTLCOLORBTN)
DialogBox.WindowProc: after SetWindowText

These inconsistencies can be critical when an application doesn't expect to get
these WM_CTLCOLOR* and tries to handle it before doing some initialization. In
particular, Trillian 3.1 crashes when opening Trillian Preferences, Message
Windows.

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list