|
▼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)
>というのがわかりません。
>
>よろしくお願いします。
|
|