Function Reference

_GUICtrlMenu_CreatePopup

ドロップダウンメニュー、サブメニュー、またはショートカットメニューを作成します

#Include <GuiMenu.au3>
_GUICtrlMenu_CreatePopup([$iStyle = 8])

 

パラメータ

$iStyle [オプション]メニューのスタイル。次の値の1つまたは複数です:
 1 - マウスがメニューの外側に10秒間出るとメニューは自動的に終了します
 2 - チェックマーク用とビットマップ用に同じスペースが確保されます
 4 - メニューアイテムをOLEドロップターゲットまたはドラッグソースにします
 8 - メニューをモーダレスにします
16 - アイテムの左側にチェックマーク用のスペースを確保しません
32 - 選択がおこなわれた際にメニューのオーナーは$WM_COMMANDメッセージの代わりに$WM_MENUCOMMANDメッセージを受け取ります

 

返し値

成功: 新しく作成されたメニューのハンドル
失敗: 0

 

注意

ウィンドウに割り当てられたメニューのリソースは自動的に解放されます。
メニューがウィンドウに割り当てられていない場合、閉じる前にアプリケーションはメニューに関連付けられたシステムリソースを解放する必要があります。
アプリケーションは_GUICtrlMenu_DestroyMenu関数を呼ぶことでメニューのリソースを解放することができます。

 

関連

_GUICtrlMenu_CreateMenu, _GUICtrlMenu_DestroyMenu

 

こちらも参照

MSDNライブラリでCreatePopupMenuを検索して下さい。

 


#include <GuiMenu.au3>
#include <GuiConstantsEx.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>

Opt('MustDeclareVars', 1)

Global Enum $idOpen = 1000, $idSave, $idInfo

_Main()

Func _Main()
    Local $hGUI

    ; GUIを作成
    $hGUI = GUICreate("Menu", 400, 300)
    GUISetState()

    ; メッセージハンドラーを登録
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
    GUIRegisterMsg($WM_CONTEXTMENU, "WM_CONTEXTMENU")

    ; ユーザーが終了するまでループ
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc   ;==>_Main

; WM_COMMANDメッセージを処理
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Switch $iwParam
        Case $idOpen
            _WinAPI_ShowMsg ("Open")
        Case $idSave
            _WinAPI_ShowMsg ("Save")
        Case $idInfo
            _WinAPI_ShowMsg ("Info")
    EndSwitch
EndFunc   ;==>WM_COMMAND

; WM_CONTEXTMENUメッセージを処理
Func WM_CONTEXTMENU($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hMenu

    $hMenu = _GUICtrlMenu_CreatePopup ()
    _GUICtrlMenu_InsertMenuItem ($hMenu, 0, "Open", $idOpen)
    _GUICtrlMenu_InsertMenuItem ($hMenu, 1, "Save", $idSave)
    _GUICtrlMenu_InsertMenuItem ($hMenu, 3, "", 0)
    _GUICtrlMenu_InsertMenuItem ($hMenu, 3, "Info", $idInfo)
    _GUICtrlMenu_TrackPopupMenu ($hMenu, $iwParam)
    _GUICtrlMenu_DestroyMenu ($hMenu)
    Return True
EndFunc   ;==>WM_CONTEXTMENU