2009/06/10

iPhoneほしいけど電話はいらない

このエントリーをはてなブックマークに追加
アップルさん、枚挙に暇がないですね。
でも携帯電話の料金が気持ち悪いです。実質0円っていう二年縛りもお断り。電話いらないので、単品でほしいです。
iPodTouchがバージョンアップしたら買うかなあ。実用経験はないので、デメリットのようなのはきっとあるんだろうけど、Macに染まりたくなってきますな。実はMacBookもほしい。

2009/06/07

C#フォントフォルダを取得する

このエントリーをはてなブックマークに追加
特殊フォルダを拾ってく方法としてEnvironment.GetFolderPathが用意されていて、Environment.SpecialFolder列挙型を指定するやり方がありますが、列挙のなかに何故だかフォントフォルダが零れ落ちているので利用できません。
ありがちなのは、Systemフォルダを拾ってきて+"Fonts"とかしちゃうのですけれど、真面目にAPIを読んで自力で取ってくるのが一番安全かと。



[System.Runtime.InteropServices.DllImport("shell32.dll")]
public static extern Int32 SHGetFolderPath(
IntPtr hwndOwner,
Int32 nFolder,
IntPtr hToken,
UInt32 dwFlags,
System.Text.StringBuilder pszPath);

private const Int32 CSIDL_FONTS = 0x0014;
private const UInt32 SHGFP_TYPE_CURRENT = 0x0000;

public static string GetFontsFolderPath() {
StringBuilder builder = new StringBuilder();
SHGetFolderPath(IntPtr.Zero, CSIDL_FONTS, IntPtr.Zero, SHGFP_TYPE_CURRENT, builder);

return builder.ToString();
}

2009/06/02

C#ListBoxのOwnerDraw

このエントリーをはてなブックマークに追加
LitBoxのOwnerDraw機能を初めて使ってみたけれどめちゃくちゃ楽しいです。
初めてというのは少し嘘だけど、まあ面倒くさいと言わないでもない。

DrawModeにOwnerDrawFixedを指定すると、描画用のDrawItemイベントが呼び出されるようになります。
DrawModeにOwnerDrawVariableを指定すると、DrawItemイベントに加えてMeasureItemイベントが呼ばれる。MeasureItemイベント内でアイテムの高さを指定できるので、リストアイテムの一行一行を可変サイズにしたければ、こちらを使用する。

そして、詰まった。というか解らない。
リストアイテムが空のときにもフォーカスが移るたびにDrawItemイベントが呼ばれて、e.Index=-1が取得できる(つまりアイテム未選択の状態)。
未選択時の描画処理を書いても、フォーカスが離れるとリスト内が真っ白に。
うむむ。
リストアイテムが空だから描画不要と判断しての仕様だろうか。仕様と言われればそれまでだけど。