Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


41504 / 76735 ←次へ | 前へ→

【40310】Re:(Not WS_SYSMENU)ってどういう意味です...
発言  ひげくま  - 06/7/11(火) 11:02 -

引用なし
パスワード
   この動作に関しては、まったく解っていませんが、コードに関してはある程度想像できるので、参考までに。

>どうやら、下記のコードで×ボタンを消せるようです。
> 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である、ということは、まったくのでたらめですが。

0 hits

【40304】(Not WS_SYSMENU)ってどういう意味です... mutu 06/7/11(火) 10:18 質問
【40305】Re:(Not WS_SYSMENU)ってどういう意味で... Statis 06/7/11(火) 10:26 発言
【40306】Re:(Not WS_SYSMENU)ってどういう意味で... mutu 06/7/11(火) 10:35 質問
【40308】Re:(Not WS_SYSMENU)ってどういう意味で... Blue 06/7/11(火) 10:53 発言
【40310】Re:(Not WS_SYSMENU)ってどういう意味で... ひげくま 06/7/11(火) 11:02 発言
【40311】Re:(Not WS_SYSMENU)ってどういう意味で... ひげくま 06/7/11(火) 11:05 発言
【40309】Re:(Not WS_SYSMENU)ってどういう意味で... ichinose 06/7/11(火) 10:59 発言
【40314】Re:(Not WS_SYSMENU)ってどういう意味で... mutu 06/7/11(火) 12:36 お礼
【40316】SetWindowLongPtrを使うには? mutu 06/7/11(火) 13:47 質問
【40318】Re:SetWindowLongPtrを使うには? Blue 06/7/11(火) 14:00 発言
【40322】Re:SetWindowLongPtrを使うには? mutu 06/7/11(火) 15:16 質問
【40323】Re:SetWindowLongPtrを使うには? Blue 06/7/11(火) 15:22 発言
【40324】Re:SetWindowLongPtrを使うには? mutu 06/7/11(火) 16:23 お礼
【40325】Re:SetWindowLongPtrを使うには? Blue 06/7/11(火) 16:46 発言
【40330】Re:SetWindowLongPtrを使うには? mutu 06/7/11(火) 17:21 お礼

41504 / 76735 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free