menubar.hsp

sample\new\menubar.hsp » Plain Format

; メニューバーsample
; http://quasiquote.org/hspwiki/
;       thanks ちょくと さん
;               http://yokohama.cool.ne.jp/chokuto/urawaza/menu1.html
;               http://yokohama.cool.ne.jp/chokuto/urawaza/menu2.html

#include "mod_menu.as"

; メニューアイテムIDを定義
#enum global NULL=0		; NULL
#enum CMD_OPEN			; [開く]アイテムのID
#enum CMD_SAVE			; [保存]アイテムのID
#enum CMD_QUIT			; [終了]アイテムのID
#enum CMD_MESS			; [表示]アイテムのID

        ; メッセージ割り込み
        oncmd  gosub *OnCommand, WM_COMMAND
        onexit gosub *OnExitMess

; ポップアップメニューの作成
        ; [ファイル]メニュー
	newmenu hfilemenu,1					; サブメニュー作成
        addmenu hfilemenu, "開く(&O)", CMD_OPEN	; 開く
        addmenu hfilemenu, "保存(&S)", CMD_SAVE	; 保存
        addmenu hfilemenu, "", NULL, 0x800	; セパレータ
        addmenu hfilemenu, "終了(&Q)", CMD_QUIT	; 終了

        ; [ヘルプ]メニュー
	newmenu hhelpmenu,1					; サブメニュー作成
        addmenu hhelpmenu, "表示(&M)", CMD_MESS	; 表示

; メニューバーの作成
	newmenu hmenu,0						; メニュー作成
        addmenu hmenu, "ファイル(&F)", hfilemenu, 0x10		; ファイル
        addmenu hmenu, "ヘルプ(&H)", hhelpmenu, 0x10            ; ヘルプ
        addmenu hmenu, "終了(&Q)", CMD_QUIT			; 終了

	applymenu hmenu						; メニュー割り当て

        stop

; メッセージの処理
*OnCommand
        switch (wparam & 0xFFFF)
        case CMD_OPEN   ; 開く
                dialog "*", 16
                if stat = 1 {
                        dialog refstr + "を開きました", 0, "テスト"
                }
                swbreak
        case CMD_SAVE   ; 保存
                dialog "*", 17
                if stat = 1 {
                        dialog refstr + "を保存しました", 0, "テスト"
                }
                swbreak
        case CMD_QUIT   ; 終了
                ; ( Send だと終了できないので注意 )
                PostMessage hwnd, WM_CLOSE, 0, 0
                swbreak
        case CMD_MESS   ; 表示
                dialog "メニュー作成のテストです", 0, "メッセージ表示"
                swbreak
        default
                swbreak
        swend
        return

*OnExitMess
        dialog "終了しますか?", 2, "確認"
        if stat = 6 {
                end
        }
        return