Tag:[GetTimetagLyricsスクリプト]
; ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ; 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 *@
|