Oups, correct and test it too fast :o) It's work when i test because center is default.
> > > >> Hi Blair, > >> > >> Fix and commit on CVS. > > or alternately (to expose that BS_CENTER is BS_LEFT | BS_RIGHT) > > > > SwitchBit(perlcs->cs.style, BS_RIGHT, 1); > > SwitchBit(perlcs->cs.style, BS_LEFT, 1); I change -center with 2 SwitchBit. > This is the only one that will work. SwitchBit is not smart enough to > deal with multi-bit values. If the previous value was BS_RIGHT or > BS_LEFT, SwitchBit is not smart enough to only turn on the other bit. > Because of its "if(!(mask & bit)) test, which will be false. Nor is it > smart enough to turn off both bits with "SwitchBit(perlcs->cs.style, > BS_CENTER,0);", because it uses "mask ^= bit;" which will turn on the > other bit. > > Really, it would be easier if there were a primitive that dealt with > setting bitfields of variable width. Such exist, but not as part of > Win32::GUI. > > #define SetBits(mask, bits) {mask |= bits;} > #define ResetBits(mask, bits) {mask &= ~(bits);} > #define SwitchBits(mask, bits, set) \ > {if (set) SetBits(mask,bits) else ResetBits(mask,bits);} Yes, you right. I keep this for later. I don't want to add more stuff now but only bug correction. Laurent.