Excel VBA質問箱 IV

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

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


41502 / 76732 ←次へ | 前へ→

【40309】Re:(Not WS_SYSMENU)ってどういう意味です...
発言  ichinose  - 06/7/11(火) 10:59 -

引用なし
パスワード
   ▼mutu さん:
こんにちは。


>
>http://park11.wakwak.com/~miko/Excel_Note/03-01_gamen.htm#03-01-01
>
>どうやら、下記のコードで×ボタンを消せるようです。
>(長いのでAPI関数宣言は省きます。)
>
>Public Sub HideSysMenu()
> Dim Ret As Long
> Dim hWnd As Long
> Dim Wnd_STYLE As Long
> hWnd = GetActiveWindow()
> Wnd_STYLE = GetWindowLong(hWnd, GWL_STYLE)
> Wnd_STYLE = Wnd_STYLE And (Not WS_SYSMENU)
> Ret = SetWindowLong(hWnd, GWL_STYLE, Wnd_STYLE)
> Ret = DrawMenuBar(hWnd)
>End Sub
>
>
>ここで、疑問なのですが、
>
> Wnd_STYLE = Wnd_STYLE And (Not WS_SYSMENU)
これは、Bit単位で and演算を行っているのです。

Wnd_Styleには、

> Wnd_STYLE = GetWindowLong(hWnd, GWL_STYLE)

APIで取得したウインドウ情報が格納されています。

この> Wnd_STYLE はこんな形式の情報になっています。

http://yokohama.cool.ne.jp/chokuto/urawaza/prm/window_style.html

これを見ると、xボタンを付けるか否かは、2^19BIT目がONかOFFの設定になっています。

2^19-----&H80000 です。


よって、
> Wnd_STYLE = Wnd_STYLE And (Not WS_SYSMENU)

は、この2^19BitのみをOFFにする演算です。
(他のビットに影響を与えない演算です)

逆に

> Wnd_STYLE = Wnd_STYLE Or WS_SYSMENU

は、2^19BitをONにする演算です。
(他のビットに影響を与えない演算です)


ということです。低級言語を扱うとこういう概念は良く出てきますよ!!


>
>とはどういうことなのでしょうか?
>And (Not WS_SYSMENU)
>というのがわかりません。
>
>よろしくお願いします。

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 お礼

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