<Return[E]><Top>

EnableMenuItem

Declare Function Api_EnableMenuItem& Lib "user32" Alias "EnableMenuItem" (ByVal hMenu&, ByVal wIDEnableItem&, ByVal wEnable&)

Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long

指定されたメニュー項目を有効化、無効化、または淡色表示にする。

パラメータ
hMenu
    メニューのハンドルを指定する。
uIDEnableItem
    uEnable パラメータの指定に従って、有効化、無効化、淡色表示のいずれかを行うべきメニュー項目を指定する。

    uIDEnableItem パラメータは、メニューバー、メニュー、サブメニューいずれかの中の項目を指定する。
uEnable
    uIDEnableItem パラメータの意味と、メニュー項目の新しい状態として、有効、無効、淡色表示のいずれかを指定する。

    uEnable パラメータでは、MF_BYCOMMAND、MF_BYPOSITION のいずれかと、MF_ENABLED、MF_DISABLED、

    MF_GRAYED のいずれかを組み合わせたものを指定する。

    値                               

意味                                                                                                                                          

    MF_BYCOMMAND

uIDEnableItem パラメータはメニュー項目の識別子を意味する。

 

MF_BYCOMMAND と MF_BYPOSITION のどちらのフラグも指定されていない場合、MF_BYCOMMAND

 

フラグは既定のフラグとして扱われる。

    MF_BYPOSITION

uIDEnableItem パラメータは、メニュー項目の位置を意味する。

 

この位置は、メニュー内でのメニュー項目の相対位置を、0 ベースで指定したものである。

 

たとえば、0 を指定すると、上端のメニュー項目を意味する。

    MF_DISABLED

メニュー項目を無効化する。淡色表示にはしないが、そのメニュー項目は使用不可能であり、選択できない。

    MF_ENABLED

メニュー項目を有効化する。そのメニュー項目は淡色表示から通常の表示へ戻り、選択できるようになる。

    MF_GRAYED

メニュー項目を淡色表示にする。そのメニュー項目は使用不可能であり、選択できない。


戻り値
     メニュー項目の以前の状態を表す値(MF_DISABLED、MF_ENABLED、MF_GRAYED のいずれか)が返る。

     指定されたメニュー項目が存在しない場合は、-1 が返る。

解説
     正しいメニューハンドルを指定するには、アプリケーションは MF_BYPOSITION フラグを使わなければならない。

     この方法を使うと、重複が発生しないからである。メニューバーのメニューハンドルを指定すると、トップレベルのメニュー項目

    (メニューバーの中のメニュー項目)が操作の対象になる。相対位置を使って、ドロップダウンメニューまたはサブメニュー内の項目の

    状態を設定する場合、アプリケーションはドロップダウンメニューまたはサブメニューのハンドルを指定しなければならない。
    MF_BYCOMMAND フラグを指定した場合、システムは、hMenu パラメータで指定されたメニュー内にある、開いているすべてのサブ

    メニュー内のすべてのメニュー項目を調べる。したがって、重複するメニュー項目(同じ名前を持つ複数のメニュー項目)が存在しない

    限り、メニューバーのメニューハンドルを指定するだけで十分でである。
    InsertMenu、InsertMenuItem、LoadMenuIndirect、ModifyMenu、SetMenuItemInfo の各関数を使って、メニュー項目の状態

    (有効、無効、淡色表示のいずれか)を設定することもできる。
    ウィンドウメニューに変更を加えた場合、メニューバーが自動的に即座に更新されるわけではない。強制的に更新を行うには、

    DrawMenuBar 関数を呼び出す。