|
この動作に関しては、まったく解っていませんが、コードに関してはある程度想像できるので、参考までに。
>どうやら、下記のコードで×ボタンを消せるようです。
> Wnd_STYLE = Wnd_STYLE And (Not WS_SYSMENU)
>また、×ボタンを復活させるときに、
> Wnd_STYLE = Wnd_STYLE And WS_SYSMENU
>
>ではなく、
> Wnd_STYLE = Wnd_STYLE Or WS_SYSMENU
>
>にしているのも理解がしにくいところです。
たぶん、Wnd_STYLE のどれかのビットが、×ボタンの表示/非表示のフラグになっていると思われます。
フラグがHiのときは、×ボタン表示で、Loのときは、×ボタン非表示。
そして、WS_SYSMENUは、×ボタン表示フラグがあるビットだけ立っている定数だと思います。
もし、×ボタン表示フラグがbit2だとすれば、WS_SYSMENUは04H(00000100B)ですね。(実際にはLongですが、便宜上Byte表記にしてあります)
×ボタンを非表示にするためには、×ボタン表示フラグだけをLoにして、それ以外のビットを変えないためには、そのビットだけLoでそれ以外のビットはHiの値でANDをとる必要があります。
11111011B = Not 00000100B ですね。
なので、And (Not WS_SYSMENU) となります。
また、×ボタンを表示するには、×ボタン表示フラグだけをHiにする必要があるので、00000100BでORをとる必要があります。
なので、Or WS_SYSMENU ですね。
もし、×ボタンを復活させるときに、And WS_SYSMENU にしてしまうと、×ボタン表示フラグは変わらずに、それ以外のビットがすべてLoになってしまい、期待した動作とはまったく別の動作をすることになります。
この考え方で、だいたいは合っていると思います。
×ボタン表示フラグの位置がbit2である、ということは、まったくのでたらめですが。
|
|