ファイルに関連づけされたアイコンをImageクラスで取得
アイコンネタ第2弾です。
アイコンをコントロールに表示する場合、
- Image を直接指定する方法
- ImageList を指定して、ImageIndex を指定する方法
があります。
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
« 2010年10月 | トップページ | 2010年12月 »
アイコンネタ第2弾です。
アイコンをコントロールに表示する場合、
があります。
※2011/03/27 kurimu さんからの御指摘内容を本記事に反映させました。
さて前回、システムイメージリストのハンドルを取得して、ListView への登録を行なうところまで実装しました。今回は実際にアイコンを表示させます。
今回から、しばらくアイコンネタを続けます。
第一弾として、エクスプローラでファイル名と共に表示されるあのアイコンを、C#アプリケーションの ListView 内で実現するやり方です。
今まで見逃していたのですが、
http://oss-ja-jpn.sourceforge.jp/
に、Sandcastle 関連の日本語化が行われたものが配布されています。
現時点では以下の3つがあります。
タイトル | リリース日 |
---|---|
Sandcastle MSI (26202-ja0) | 2010-06-17 |
Sandcastle 日本語メッセージ (1803-ja1) | 2010-06-16 |
Sandcastleヘルプファイルビルダ (1803-ja1) | 2010-06-16 |
調べてみたので、書き残しておきます。
前回の最後で触れた様に、今回は、
について、研究します。
マネージドDLLの動的リンク(2)の続きです。
前回、ハイブリッドタイプにする事により、動的リンクを実用的な範囲にする事ができましたが、今回は別の動的リンクによる方法を研究し、どちらが優れているかを検討したいと思います。
まずはじめに、今回の動的リンクの方法の元ネタとなったところを示します。
@IT > 旧@IT会議室 > Insider.NET > 動的DLLの解放について
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=46665&forum=7
ここで示されているプログラムはVB.NETですが、リンクしたDLLを開放する事が可能になります。前回示したAssembly.LoadFileによるリンクでは、一度リンクしたらアプリケーション終了まで開放出来ませんから、その点でメリットを感じる場合もあるでしょう。
マネージドDLLの動的リンク(1)の続きです。
前回、直接 SharpZipLib を動的リンクして使用するのは、使い方にもよるものの、非現実的だと結論づけました。今回は、SharpZipLib のラッパークラスを作成し、ラッパークラスを動的リンクする事について考えてみます。
以前にアンマネージドDLLの動的リンクについて述べましたが、マネージドDLLの動的リンクはどうやるのかについて書きます。
アンマネージドDLLの動的リンクは、統合アーカイバプロジェクト関連のDLLの使用が目的でした。一方、マネージドDLL として、ZIP書庫を操作できる SharpZipLib というのが公開されています。この機能調査も含めて、動的リンクをしたらどうなるかも一緒にやってみました。
第1回目のこの回では、まずオーソドックスな方法(?)による動的リンクを使った方法に関する記事とします。
簡単な事ですが、必要なときにすぐに見れる様に、覚え書きとして残しておきます。
DateTime startTime = DateTime.Now;
(計測したい処理)
TimeSpan tp = DateTime.Now.Subtract(startTime);
Console.WriteLine(tp.TotalSeconds); // 処理時間を秒単位で表示
Console.WriteLine は、通常のフォーム付きアプリケーションでも、メニューの「表示」-「出力」で、表示されるウィンドウに出力されるので結構便利です。
(11/9 追記)
.NET Framework 2.0以降なら、Stopwatch クラスが使用出来るので、これを使用した場合も書いておきます。
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();
(計測したい処理)
sw.Stop();
Console.WriteLine(sw.Elapsed.TotalSeconds);
「フォルダの参照」ダイアログのコントロールID に続いて、「ファイルを開く」ダイアログのコントロールID も調査したので、覚え書きとして残しておきます。残念ながら、Windows 7 は未調査です。またVista は、日本語版を所有はしていますが、PCにインストールしていないので、VirtualPC用のVistaバーチャルディスクイメージをダウンロードして調べました。その為、英語版ですが、御勘弁を。
なおコントロールID は、WindowsAPI の GetDlgItem を使用すれば、そのコントロールのウィンドウハンドルが得られます。ウィンドウハンドルが得られれば、そのコントロールの各種制御や情報取得が出来ます。
※記事中は「ファイルを開く」ダイアログの図しかありませんが、「名前を付けて保存」ダイアログも全く同じコントロールIDである事を確認しています。
※灰色テキストのコントロールは、非表示状態にあるコントロールを示します。
Sandcastle を使用したドキュメント作成(1)の続きです。
まずはお詫びから。前回使用した bnote の「Sandcastleでドキュメントを作成する」 からダウンロードしたバッチファイルですが、オリジナルである %DXROOT%\Examples\sandcastle\build_Sandcastle.bat を多少手直ししたものと思っていたのですが、結構違いました。Sandcastle のバージョン差異によるものでしょうか。とにかく、本来と動きと違うことが判明しました。オリジナルの方をそのまま動かしても、ヘルプの文字化けは発生するのですが、XMLコメントの内容が反映されない点は、解決しましたので報告します。
この回の記事は全面書き直しと記事アップロードの遅延となってしまいました。申し訳ありません。また、前回記事もこれに伴い、これから修正を入れる予定です。
Sandcastle の現在の最新版は http://sandcastle.codeplex.com/ にある様です。ちなみに現時点での最新バーションは、June 2010 Release(Version 2.6.1062.1)です。また、その前のバージョン May 2008 Release(Version 2.4.10520) もダウンロード可能です。
また、Sandcastle のフロントエンドツール、Sandcastle Help File Builder は、http://shfb.codeplex.com/ にあり、現在の最新版は v1.9.1.0 ですが、前のバージョンはダウンロード出来ない様です。実はこの最新バージョンはインストール時に .NET Framework3.5 を要求します。私の開発環境は、WIndows2000なので、そもそも.NET Framework3.5 自体インストールできません。そういう訳で、今回 Sandcastle Help File Builder の使用は見送りました。