#414 ooDialog - buttonControl~style= is incorrect

v4.0
closed
Mark Miesfeld
5
2012-08-14
2007-09-18
Mark Miesfeld
No

In ooDialog the ButtonControl class has the method style= If you look at the implementation for this method, you can see it is sending the BM_SETSTLYE message to the button control to change the style to what the user specifies.

The whole thing has a number of problems.

(I don't intend to fix this for 3.2.0, just making a note so I don't forget it.)

  • Looking at the code you see that the method accepts and tries to set a number of button styles like: BS_MULTILANE, BS_TOP, BS_LEFTTEXT, etc.. These types of button stles can not be changed / set using the BM_SETSTYLE message.

  • The doc does not mention these other styles (which is probably okay, the method does not work for most of them.) However, the method does work for some of the un-mentioned styles, like BS_PUSHLIKE

  • The styles changes that don't work using the BM_SETSTYLE message, can be changed after the button is created. But it needs to be done by changing the style Window word for the button.

  • The BM_SETSTYLE message is intended to change the style within a class of buttons. So this should be documented and maybe a check put into the method to enforce it. From MSDN:

The BM_SETSTYLE message changes the style of a button. It is designed for changing button styles within a type (for example, changing a check box to an automatic check box). It is not designed for changing between types (for example, changing a check box to a radio button). An application should not change a button from one type to another.

Discussion

  • Mark Miesfeld
    Mark Miesfeld
    2008-07-31

    Logged In: YES
    user_id=191588
    Originator: YES

    Committed revision 2804.

    This commit fixes the style= method so that it behaves as expected.

     


Anonymous


Cancel   Add attachments