たこぜりー研究室

大腸菌DNAは4.64Mbp。酵母は13Mbpで、ヒトは3Gbp

スポンサーサイト

#
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ScreenTip 再考 #3

#410
System.Windows.Control からツールヒントを作る場合の最小コード問題
(←最小ゲノム問題みたいだな、ちなみに備忘録)

1. CreateParams プロパティで ClassName に "tooltips_class32" を叩き込む。そして、Style から WS_CHILD を差し引く

2. CreateHandle メソッドをオーバーライドして、恒例の InitCommonControlsEx 関数の呼び出し。

3. OnHandleCreated メソッドをオーバーライドして、TTM_SETMAXTIPWIDTH で複数行をサポート、独自描画する場合は WS_BORDER を差し引く、TTM_ADDTOOL でツールを追加する。

4. Font の get プロパティをオーバーライドして、(少なくとも最初は) WM_GETFONT で取得するようにする。どこかで一度呼び出しておくと少し幸せになれる。

5. TTM_GETCURRENTTOOL に使う TOOLINFO では String はダメ。IntPtr で。

6. コンストラクタで Visible を false にしておくとやっぱり少し幸せになれるかもしれない。ドロップシャドウの件で。

7. あとは普通に TTM_ADDTOOL と TTM_DELTOOL 。TOOLINFO に叩き込むフラグは今のところ TTF_IDISHWND | TTF_SUBCLASS | TTF_TRANSPARENT で十分。

8. 独自描画は OnPaint (や OnPaintBackground) のオーバーライド。独自描画しないなら、恒例のコンストラクタで ControlStyles.UserPaint を false に。

9. サイズ変更は今のところ TTN_SHOW で可能。他にも可能なタイミングがあるかもしれない。

以上、これでここ数週間のもやもやは全て解決です!
スポンサーサイト
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。