Glenn Linderman wrote:

     -remstyle  => BS_AUTOCHECKBOX,
     -addstyle  => BS_CHECKBOX,

Is there a better way to do this operation?

There are no 'options' to do this, if that's what you mean.

Not only does it require BS_ constants, the order matters... the code shown works in the test program, but not in my "real" program which runs the parameters through a hash, which reorders the parameters :( Causing the checkboxes to actually come out as buttons!

The button's 'type' is the bottom 4 bits of the style (see BS_TYPEMASK).

A Win32::GUI::Checkbox is type BS_AUTOCHECKBOX (=3) and you want BS_CHECKBOX (=2).

(3 & ~3) | 2 = 2 (BS_CHECKBOX)
but
(3 | 2) & ~3 = 0 (0 = BS_PUSHBUTTON)


-remstyle => 1 should do what you want:
3 & ~1 = 2

but it'll need a good comment to make it maintainable :-(

As an alternative you might be able to use a button, and add BS_CHECKBOX, and then re-bless the resulting object into the checkbox class. Something like this (untested):

my $cb = $mw->AddButton(
        -addstyle => BS_CHECKBOX,
        ...
);

bless $cb, "Win32::GUI::Checkbox";

The bless may be unnecessary, depending on which class methods you need to be able to call.

Regards,
Rob.

Reply via email to