[トップ][一覧][最近の更新]

編集履歴:差分

2011/07/06 22:19:19 JSTと2011/10/09 23:45:43 JST間のメニューバーを表示するの変更箇所

  • + 追加された行
  • - 削除された行

編集履歴ページに戻る

  メニューを表示する
  
  
  [[$$toc]]
  - →[[HSP3・サンプルスクリプト]]に戻る
- 
  ----
  HSP3.0対応版。
  
  * スクリプト
  
  {{{
  ; メニューバー to Hot Soup Processor 3.0 β1 compatible
  ; 	thanks ちょくと さん
  ; 		http://chokuto.ifdef.jp/urawaza/menu1.html
  ; 		http://chokuto.ifdef.jp/urawaza/menu2.html
  
  ; DLLのロードと関数の宣言・初期化など
  #uselib "user32.dll"
  #func global CreateMenu		"CreateMenu"
  #func global CreatePopupMenu	"CreatePopupMenu"
  #func global AppendMenu		"AppendMenuA"		int, int, int, str
  #func global SetMenu		"SetMenu"		int, int
  #func global DrawMenuBar	"DrawMenuBar"		int
  #func global PostMessage	"PostMessageA"		int, int, sptr, sptr
  
  ; ウィンドウメッセージを定義
  #const global WM_CLOSE				0x0010
  #const global WM_COMMAND			0x0111
  
  ; メニューアイテムIDを定義
  #const global NULL		0		; NULL
  #const global CMD_OPEN		1		; [開く]アイテムのID
  #const global CMD_SAVE		2		; [保存]アイテムのID
  #const global CMD_QUIT		3		; [終了]アイテムのID
  #const global CMD_MESS		4		; [表示]アイテムのID
  
  	; メッセージ割り込み
  	oncmd  gosub *OnCommand, WM_COMMAND
  	onexit gosub *OnExitMess
  
  ; ポップアップメニューの作成
  	; [ファイル]メニュー
  	CreatePopupMenu
  	hfilemenu = stat
  	AppendMenu hfilemenu,     0, CMD_OPEN, "開く(&O)"	; 開く
  	AppendMenu hfilemenu,     0, CMD_SAVE, "保存(&S)"	; 保存
  	AppendMenu hfilemenu, 0x800,     NULL, ""		; セパレータ
  	AppendMenu hfilemenu,     0, CMD_QUIT, "終了(&Q)"	; 終了
  
  	; [ヘルプ]メニュー
  	CreatePopupMenu
  	hhelpmenu = stat
  	AppendMenu hhelpmenu,     0, CMD_MESS, "表示(&M)"	; 表示
  
  ; メニューバーの作成
  	CreateMenu
  	hmenu = stat
  	AppendMenu hmenu, 0x10, hfilemenu, "ファイル(&F)"	; ファイル
  	AppendMenu hmenu, 0x10, hhelpmenu, "ヘルプ(&H)"		; ヘルプ
  	AppendMenu hmenu,    0, CMD_QUIT, "終了(&Q)"		; 終了
  
  	SetMenu hwnd, hmenu					; メニューをウィンドウに割り当てる
  	DrawMenuBar hwnd					; メニューを再描画
  
  	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
  
  }}}