; ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
; Header.hsp
;
; ツールバー作成、割り込み設定、メッセージ処理
;_______________________________________
// ツールバー作成 //////////////////////////////////////////////////////////////
;ツールバー アイコンID
#define STD_CUT 0
#define STD_COPY 1
#define STD_PASTE 2
#define STD_UNDO 3
#define STD_REDOW 4
#define STD_DELETE 5
#define STD_FILENEW 6
#define STD_FILEOPEN 7
#define STD_FILESAVE 8
#define STD_PRINTPRE 9
#define STD_PROPERTIES 10
#define STD_HELP 11
#define STD_FIND 12
#define STD_REPLACE 13
#define STD_PRINT 14
;ツールバーID
#enum TB_ACTION = 0
#enum TB_SETTING
#enum TB_dammy1
#enum TB_LISTVIEW
#enum TB_dammy2
#enum TB_NEXT
#enum TB_STOP
#enum TB_dammy3
#enum TB_HELP
#enum ToolbarMaxNum
bnum=ToolbarMaxNum ;実装するボタンの数
repeat bnum
button gosub "",*toolcmd
SetWindowLong objinfo(cnt,2),GWL_ID,0
tb_id(cnt) =stat
ShowWindow objinfo(cnt,2),0
loop
InitCommonControls
;文字列登録
tbstr=""
;TBBUTTON構造体の配列 (idCommandメンバにボタンのIDを設定)
tb(0) = STD_FILENEW, tb_id(TB_ACTION), 4, 0, length(tb)/5 :tbstr+="実行\\"
tb(length.tb) = STD_PASTE, tb_id(TB_SETTING), 4, 0, length(tb)/5 :tbstr+="設定\\"
tb(length.tb) = 0, 0, 1<<8, 0, length(tb)/5 :tbstr+="セパレータ\\"
tb(length.tb) = STD_PROPERTIES, tb_id(TB_LISTVIEW), 4, 0, length(tb)/5 :tbstr+="[リスト]\\"
tb(length.tb) = 0, 0, 1<<8, 0, length(tb)/5 :tbstr+="セパレータ\\"
tb(length.tb) = STD_REDOW, tb_id(TB_NEXT), 4, 0, length(tb)/5 :tbstr+="次へ\\"
tb(length.tb) = STD_DELETE, tb_id(TB_STOP), 4, 0, length(tb)/5 :tbstr+="中止\\"
tb(length.tb) = 0, 0, 1<<8, 0, length(tb)/5 :tbstr+="セパレータ\\"
tb(length.tb) = STD_HELP, tb_id(TB_HELP), 4, 0, length(tb)/5 :tbstr+="About\\"
tbstr+="\\"
;ツールバー作成
style=$50000341 : style+=TBSTYLE_FLAT ;スタイルに$800を加えるとフラットタイプ
CreateToolbarEx hwnd,style, 0, 0, -1, 0,varptr(tb),bnum, 0, 0, 0, 0,20
tb_hWnd=stat
;登録文字列に\0設置
tbstr_len=strlen(tbstr)
repeat strlen(tbstr)
if wbyte(peek(tbstr,cnt))=1 :continue cnt+2
if peek(tbstr,cnt)='\\' :poke tbstr,cnt,0
loop
SendMsg tb_hWnd, TB_ADDSTRING, 0, varptr.tbstr
;ボタンを使用不可にする
sendmsg tb_hWnd, TB_ENABLEBUTTON, tb_id(TB_NEXT), 0
sendmsg tb_hWnd, TB_ENABLEBUTTON, tb_id(TB_STOP), 0
;ツールバーの再描画
MoveWindow tb_hWnd,0,0,0,0,1
;ツールバーの高さを取得
dim rc,4
GetWindowRect tb_hWnd, varptr(rc)
toolbar_height = rc(3)-rc(1)
ListViewPos(1)+=toolbar_height ;+ツールバーの高さ
// ツールバーのポップアップメニュー
;ツールバーポップアップID
#enum TBP_NOCHECKDEL = 1
CreatePopupMenu
toolbar_popup = stat
AppendMenu toolbar_popup, 0, TBP_NOCHECKDEL, "チェックしてない項目を削除"
// ツールチップ ////////////////////////////////////////////////////////////////
;初期化
tipset_init
// 割り込み設定 ////////////////////////////////////////////////////////////////
//ウィンドウサイズ変更 割り込み
oncmd gosub *WINSIZE_CHANGE, WM_SIZE
//ファイルD&D許可
DragAcceptFiles hwnd,1
//ファイルD&D 割り込み
oncmd gosub *ListViewDrop ,WM_DROPFILES
//終了 割り込み
onexit gosub *QUIT
// 末尾まで処理をジャンプ //////////////////////////////////////////////////////
goto *@forward
// /////////////////////////////////////////////////////////////////////////////
// メッセージ //////////////////////////////////////////////////////////////////
//メインウィンドウサイズ変更
*WINSIZE_CHANGE
;リストビューの再描画
MoveWindow hlist,0, ListViewPos(1),ginfo_winx,ginfo_winy-ListViewPos(1),1
;ツールバーの再描画
MoveWindow tb_hWnd,0,0,0,0,1
return
// ツールバーボタンの判定
*toolcmd
switch stat
case TB_ACTION
// 実行
;リストのチェック項目の曲のタイムタグ歌詞取得
gosub *GetTimetagLyrics
swbreak
case TB_SETTING
// 設定
;設定ウィンドウ開く
gi_sel = ginfo_sel
gsel WindowID_Setting, 1
gsel gi_sel
swbreak
case TB_NEXT
;リストビュー:次へ
LyricsMasterStep = -1 ;LyricsMster検出ステップへ「次へ」割り込み
swbreak
case TB_STOP
;リストビュー:中止
LyricsMasterStep = -2 ;LyricsMster検出ステップへ「中止」割り込み
swbreak
case TB_LISTVIEW
;リストビューポップアップメニュー
dim rect,4
sendmsg tb_hWnd, TB_GETRECT, tb_id(TB_LISTVIEW), varptr(rect) ;ツールバーのボタンの座標を取得
;スクリーン座標系に変換
point=rect.0, rect.3
ClientToScreen tb_hWnd, varptr(point)
;ポップアップ表示
TrackPopupMenuEx toolbar_popup, $180, point.0,point.1, hWnd, 0
switch stat
case TBP_NOCHECKDEL
;チェックしてない項目を削除
gosub *NOCHECKDEL
swbreak
swend
swbreak
case TB_HELP
dialog ""+app_title+" "+app_version, 0, "About"
swbreak
swend
return
// 終了時 割り込み
*QUIT
;設定ウィンドウ閉じ
if wparam=WindowID_Setting :gosub *OptionCansel :return
//アプリケーション終了
end
return
*@