/*------------------------------------------------------------------------------ めでぃあぱれっと コードネーム:setplay2_simple(id:setplay2_1 / lot:20060830) なでしこによるグラフィカルなメディアプレイヤー 「プログレスバー」が認識されないwww ------------------------------------------------------------------------------*/ //!変数宣言は必要 !母艦設計=「母艦の可視はオフ」 !タイトル=「メディアパレット」 !アプリバージョン情報=「Mediapallet ver 0.01」 !アプリ説明=「{\n}{\t}ファイルをアイコンで表示するメディアプレイヤーです。{\n}{\t}プレイリストの作成機能なども追加予定...{\n}{\t}アイコンにマイクロソフトさんの素材を使わせていただいています。{\n}」 !INIファイル=「{母艦のパス}mp.ini」 !アイコンアドレス=「MSicons_XP.png」 !基本色=$000000 !再生対象拡張子=「*.wav;*.mp3;*.mid;*.midi;*.wma」 !再生対象ビデオ=「*.avi;*.mpg;*.mpeg;*.wmv;*.mp2」 !再生対象画像=「」//*.jpg;*.jpeg;*.png;*.gif;*.bmp 文字サイズ=9.5 線色=「{基本色}」 線太さ=4 取り扱いファイルとは文字列=「{マイミュージック}」 実行キーとは整数 テキストハンドルとは整数 表示Xとは整数 表示Yとは整数 時間とは文字列 最終時間とは文字列 リストバッファとは配列 リスト2とは配列 状態とは文字列=「wait」 再整列フラグとは整数=0 拡張子バッファとは文字列 //ステータス statとは文字列="wait..."; メディアウィンドウとはフォーム 母艦ステータスとはステータスバー 母艦ステージとはパネル 母艦スペーサーとはパネル シークバーステージとはパネル メインリストとはリストビュー アイコンバッファとはイメージリスト シークバーとはスムーズプログレスバー 制御タイマーとはタイマー 「{母艦のパス}」へ作業フォルダ変更 開始処理。 #設定 #Menu 「 ,mf,ファイル(&F) -,f1,フォルダを開く(&O),Ctrl+O,,フォルダオープン -,fe,閉じる(&X),ESC,,終わる ,mh,ヘルプ(&H) -,h1,{タイトル}について(&A),,,アバウト -,h2,Debug[list2],,,リスト2でメモ記入 -,h3,Debug[listbuf],,,リストバッファでメモ記入 」をメニュー一括作成 /* */ #Style and Setting 母艦について タイトルは「{タイトル}」 母艦を中央移動 Xは表示X Yは表示Y メディアウィンドウについて 可視はオフ タイトルは「{母艦ハンドル}_MediaWindow」 背景色は黒色 メディアウィンドウを中央移動 母艦ステータスについて レイアウトは「下」 可視はオフ // アイコンバッファについて 画像W=32 画像H=32 一括追加(アイコンアドレス) メインリストについて 画像設定(アイコンバッファ) 「アイコン」にスタイル設定 親部品は母艦ステージ レイアウトは「全体」 シークバーについて Wは1900 値は100 親部品はシークバーステージ レイアウトは「全体」 母艦スペーサーについて 可視はオフ 母艦ステージについて レイアウトは「全体」 スタイルは「枠なし」 シークバーステージについて レイアウトは「下」 スタイルは「凹」 高さは16 制御タイマーについて 値は150 #Ivent-------------------------------------------------------------------------- 母艦の閉じた時は〜 「本当に閉じますか?」と二択 もしそれがはいならば、 終了処理 母艦のサイズ変更した時は〜 もし再整列フラグが0ならば、 再整列フラグ=1 メディアウィンドウのサイズ変更した時は〜 もし(取り扱いファイル!=「」)ならば、 エラー監視 "put music destination at 0 0 {メディアウィンドウのクライアントW} {メディアウィンドウのクライアントH}"をMCI送信 エラーならば、 ステータス更新 メインリストのキー離した時は〜 stat=メインリストの値 セレクトナンバー=メインリストの値 ステータス更新 もし(押された仮想キー=13)ならば、 上位フォルダ移動 フォルダ移動 簡易再生 実行キー=1 メインリストのクリックした時は〜 セレクトナンバー=メインリストの値 メインリストのダブルクリックした時は〜 セレクトナンバー=メインリストの値 メインリストの有効は0 上位フォルダ移動 フォルダ移動 メインリストの有効は1 簡易再生 実行キー=1 シークバーのマウス離した時は〜 bf2=シークバーのマウスX bf=((シークバーの最大値)*((bf2)/(シークバーのW)))の整数部分 もし(取り扱いファイル!=「」)ならば、 エラー監視 "seek music to {bf}"をMCI送信。 "play music repeat"をMCI送信 もし(状態=「stop」)ならば、 "pause music"をMCI送信。 エラーならば、 stat="MCIエラー" ステータス更新 シークバーのマウス移動した時は〜 シークバーのポケット=シークバーのマウスX シークバーのポケット=((シークバーの最大値)*((シークバーのポケット)/(シークバーのW)))の整数部分 シークバーのポケット=「{(((シークバーのポケット*0.001)/60)の整数部分)を2でゼロ埋め}:{(((シークバーのポケット*0.001)%60)の整数部分)を2でゼロ埋め}」 シークバーのヒントはシークバーのポケット 制御タイマーの時満ちた時は〜 シークバーの値は0 もし(取り扱いファイル!=「」)ならば、 エラー監視 時間="status music position"をMCI送信。 シークバーの値は時間 時間=「{(((時間*0.001)/60)の整数部分)を2でゼロ埋め}:{(((時間*0.001)%60)の整数部分)を2でゼロ埋め}」 最終時間=「{(((シークバーの最大値*0.001)/60)の整数部分)を2でゼロ埋め}:{(((シークバーの最大値*0.001)%60)の整数部分)を2でゼロ埋め}」 母艦のタイトル=「{取り扱いファイルのファイル名抽出} - {時間}/{最終時間}」 エラーならば、 stat="MCIエラー" ステータス更新 違えば、 母艦のタイトル=「{タイトル}」 もし再整列フラグが1ならば、 再整列フラグ=2 メインリストについて 可視はオフ 「リスト」にスタイル設定 0秒待つ 「アイコン」にスタイル設定 可視はオン メインリストに注目 再整列フラグ=0 #表示 #onView------------------------------------------------------------------------- 母艦の可視はオン 母艦の終了可能は0 取り扱いファイルに作業フォルダ変更 リスト作成 実行キー=1 状態=「stop」 制御タイマーの開始 取り扱いファイル=「」 #------------------------------------------------------------------------------- # Function #------------------------------------------------------------------------------- *簡易再生 エラー監視 もし((セレクトナンバー!=(-1))&&(セレクトナンバー!=0)&&(実行キー=1))ならば stat=「ファイルを開いています...」 ステータス更新 もし(取り扱いファイル!=「」)ならば、 "pause music"をMCI送信。 "close music"をMCI送信。 メディアウィンドウの可視はオフ バッファ1=取り扱いファイル 取り扱いファイル=「{リストバッファ[セレクトナンバー]}」 取り扱いファイル=取り扱いファイルの「[@@@67856110@@@]」を「,」に置換 「open "{取り扱いファイル}" alias music type mpegvideo wait」をMCI送信。 「set music time format milliseconds」をMCI送信。 「status music length」をMCI送信。 シークバーの最大値はそれ 拡張子バッファ=取り扱いファイルから拡張子抽出 拡張子バッファ=拡張子バッファを小文字変換 もし(再生対象ビデオで0から拡張子バッファを文字検索)ならば、 メディアウィンドウの可視はオン メディアウィンドウを最前面 「window music handle {メディアウィンドウのハンドル}」をMCI送信。 "put music destination at 0 0 {メディアウィンドウのクライアントW} {メディアウィンドウのクライアントH}"をMCI送信 違えば、もし(再生対象画像で0から拡張子バッファを文字検索)ならば、 メディアウィンドウの可視はオン メディアウィンドウを最前面 「window music handle {メディアウィンドウのハンドル}」をMCI送信。 "put music destination at 0 0 {メディアウィンドウのクライアントW} {メディアウィンドウのクライアントH}"をMCI送信 「play music repeat」をMCI送信 状態=「play」 母艦のタイトル=「{取り扱いファイル}」 stat=「再生...」 ステータス更新 違えば、もし(実行キー=1)ならば、 もし(取り扱いファイル!=「」)ならば、 もし状態が「stop」ならば、 もし(再生対象ビデオで0から拡張子バッファを文字検索)ならば、 メディアウィンドウの可視はオン 「window music handle {メディアウィンドウのハンドル}」をMCI送信。 メディアウィンドウを最前面 違えば、もし(再生対象画像で0から拡張子バッファを文字検索)ならば、 メディアウィンドウの可視はオン 「window music handle {メディアウィンドウのハンドル}」をMCI送信。 メディアウィンドウを最前面 「play music repeat」をMCI送信 状態=「play」 stat=「再生...」 違えば、 "pause music"をMCI送信。 メディアウィンドウの可視はオフ 状態=「stop」 stat=「一時停止...」 ステータス更新 エラーならば、 取り扱いファイル=「」 stat="MCIエラー" ステータス更新 *フォルダ移動 もし(セレクトナンバー>0)ならば、 取り扱いフォルダ=「{作業フォルダ}{リストバッファ[セレクトナンバー]}」 取り扱いフォルダ=取り扱いフォルダの「[@@@67856110@@@]」を「,」に置換 取り扱いフォルダ=取り扱いフォルダの終端パス追加 取り扱いフォルダのフォルダ存在 もしそれが1ならば、 取り扱いフォルダに作業フォルダ変更 リストバッファ=「」 実行キー=0 リスト作成 *上位フォルダ移動 取り扱いフォルダ=「」 もしメインリストの値が0ならば、 フォルダバッファ1=作業フォルダの終端パス削除 フォルダバッファ1=フォルダバッファ1の「\」を「{\n}」に置換 フォルダカウント1=フォルダバッファ1の行数 フォルダバッファ1を反復 もし(回数=1)ならば、 取り扱いフォルダ=それ 違えば、もし(回数<フォルダカウント1)ならば、 取り扱いフォルダ=取り扱いフォルダ&「\」&それ 取り扱いフォルダ=取り扱いフォルダの終端パス追加 取り扱いフォルダのフォルダ存在 もしそれが1ならば、 取り扱いフォルダの終端パス追加 取り扱いフォルダに作業フォルダ変更 リストバッファ=「」 実行キー=0 リスト作成 *リスト作成 もしリストバッファが「」ならば、 一覧要求 stat="リストを作成しています" ステータス更新 メインリストに「,0,../,5」を一括作成 メインリストにリスト2を一括追加 stat="リストアップ完了!" ステータス更新 *一覧要求 stat="HDDに対象ファイルの一覧を要求中..." ステータス更新 リストバッファ=「{フォルダ列挙}」 リストバッファ=「{リストバッファ}{\n}{再生対象拡張子のファイル列挙}」 リストバッファ=「{リストバッファ}{\n}{再生対象ビデオのファイル列挙}」 リストバッファ=「{リストバッファ}{\n}{再生対象画像のファイル列挙}」 stat="リストのクリーニング中..." ステータス更新 リストバッファ=リストバッファの「../{\n}」を「」に置換 リストバッファ=リストバッファの「./{\n}」を「」に置換 リストバッファ=リストバッファの「,{\n}」を「{\n}」に置換 リストバッファ=リストバッファの「{作業フォルダ}{\n}」を「」に置換 リストバッファ=リストバッファの「,」を「[@@@67856110@@@]」に置換 リストバッファ=リストバッファの配列上下空行削除 リストバッファ=リストバッファの「{\n}{\n}」を「{\n}」に置換 リストバッファ=リストバッファの「{\n}{\n}」を「{\n}」に置換 リストバッファ=リストバッファの「{\n}{\n}」を「{\n}」に置換 stat="リストの整理中..." ステータス更新 リスト2=「」 リストバッファを反復 バッファ2=それ バッファ2=バッファ2の「[@@@67856110@@@]」を「,」に置換 バッファ2のフォルダ存在 バッファ3=それ バッファ2=バッファ2の「{\n}」を「」に置換 バッファ2=バッファ2からファイル名抽出 バッファ2=バッファ2の「,」を「、」に置換 もしバッファ3が1ならば、 リスト2に「,{回数},{バッファ2},5,5」を配列追加 違えば、 バッファ1=バッファ2から拡張子抽出 バッファ1=バッファ1を小文字変換 もし(再生対象ビデオで0からバッファ1を文字検索)ならば、 リスト2に「,{回数},{バッファ2},2,2」を配列追加 違えば、もし(再生対象画像で0からバッファ1を文字検索)ならば、 リスト2に「,{回数},{バッファ2},1,1」を配列追加 違えば、もし(再生対象拡張子で0からバッファ1を文字検索)ならば、 リスト2に「,{回数},{バッファ2},0,0」を配列追加 違えば、 リスト2に「,{回数},{バッファ2},0,3」を配列追加 0秒待つ リストバッファ=「,0,../,5{\n}{リストバッファ}」 *フォルダオープン 作業フォルダでフォルダ選択 もしそれが空でなければ、 それに作業フォルダ変更 リストバッファ=「」 リスト作成 *開始処理 INIファイルが存在 もし、それが1ならば、 エラー監視 「{INIファイル}」のINI開いてテキストハンドルに代入 テキストハンドルで「位置」の「X」をINI読んで表示Xに代入 テキストハンドルで「位置」の「Y」をINI読んで表示Yに代入 テキストハンドルで「位置」の「W」をINI読んで母艦のWに代入 テキストハンドルで「位置」の「H」をINI読んで母艦のHに代入 テキストハンドルで「ファイル」の「場所」をINI読んで取り扱いファイルに代入 テキストハンドルのINI閉じる エラーならば、 ダイアログタイトルは「{タイトル}:INIエラー」 stat="error : 設定ファイルの読み込みに失敗"; 「設定ファイルを正常に読み込めませんでした。」と言う。 *終了処理 stat="bye..."; ステータス更新 制御タイマーの停止 0.1秒待つ もし(取り扱いファイル!=「」)ならば、 "pause music"をMCI送信。 "seek music to 0"をMCI送信。 "close music"をMCI送信。 取り扱いファイル=作業フォルダ 母艦パスに作業フォルダ変更 「{INIファイル}」のINI開いてテキストハンドルに代入。 テキストハンドルで「位置」の「X」に母艦のXをINI書く テキストハンドルで「位置」の「Y」に母艦のYをINI書く テキストハンドルで「位置」の「W」に母艦のWをINI書く テキストハンドルで「位置」の「H」に母艦のHをINI書く テキストハンドルで「ファイル」の「場所」に取り扱いファイルをINI書く テキストハンドルのINI閉じる 母艦の終了可能は1 終わる。 *ステータス更新 母艦ステータス =「{stat}」 *アバウト 「{アプリバージョン情報}{\n}{\t}{アプリ説明}{\n}{\t}(c)2006 canot{\t}」という #------------------------------------------------------------------------------- # Class #------------------------------------------------------------------------------- ■スムーズプログレスバー +イメージ +最大最小プロパティ +キーボードプロパティ +値プロパティ ・最大値{=100} ・値{=0} ←値設定→値取得 デフォルト ・値{=0} ←バー描画処理 ・クリック位置{=0} ・{非公開}バー描画処理(HF)〜 線太さは1 塗り色はウィンドウ背景色 線色は塗り色 0,0からW+1,H+1へ四角 塗り色はアクティブ色 0,0から(W*(HF/最大値)),Hへ四角 //Program is end