言葉のさんぽ道

~気ままに写真とゲームの話題が更新されるはず~

C#技術周りまとめ

C#GUIアプリケーションを作っていて遭遇した問題を以下にまとめる事とする。尚、クライアント環境はWindowsXPC#のFrameworkは1.1を想定としている。
他にも当然色々と問題はあったのだが、それらの問題はGoogle先生に聞けば大抵解決するのでここでは特に記さない事とする。

複数ファイルの選択

WindowsXPでは、複数ファイルの選択時にファイル順序が選択した順序にならない(Windows2000ではなるのに)。その為複数ファイルを選択した後、ファイルリスト出力をセンス良く見せる為には取得したファイルリストを一旦ソートする必要がある。取得したファイルリストはString配列に格納されるので、これをソートするにはArray.sort()を使うだけで良い。

カラーパレットのカスタムカラーの再利用

カラーパレットのカスタムカラーは呼び出す毎に再作成(初期化)される。その為、設定したカスタムカラーを次回呼び出し時に利用できる状態にするにはメモリー上に保存させる必要がある。カスタムカラーの取得・設定は配列で行うので、これを呼び出し元共通クラスで定義しておき、利用時に再設定する必要がある。

動画ファイルのサイズ取得や再生長取得など

C#のFramework1.1では動画ファイルのサイズ取得や再生長取得が死ぬほど面倒臭い。詳しくは書かないがラッパーとなる構造体を用意してその中に各種動画ファイルの変数を格納していくのだが、その構造体の参照(参考文献)が殆ど何処にも記述されていない。MSDNは相変わらずアレなんで参考にならない。
そこで一番簡単な対応策としてはC++で動画ファイルのサイズ取得や再生長取得する関数を定義・実装してDLL化し、C#でそのDLLを読み込んでその関数を呼び出すのが良い。Framework2.0ではどうやら簡単にサイズ取得や再生長が取得できるようなのだが、環境が1.1と制限されている場合はC++からの利用を検討するのが一番早いだろう。