たこぜりー研究室

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

スポンサーサイト

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

AutoUpgradeEnabled プロパティ

#449
おぅびっくり。今まで気づかなかった。

FileDialog.AutoUpgradeEnabled プロパティ (System.Windows.Forms) [MSDN Library]

この FileDialog インスタンスを Windows Vista で実行する場合に、外観と動作を自動的にアップグレードするかどうかを示す値を取得または設定します。

MFC ではちゃんと Visual Studio 2008 でコンパイルすれば、Vista で新しいコモンファイルダイアログが表示される (もちろん XP 以下では今までどおり) のは、この記事で知っていたんだけど。

そんでもって、Visual C++ 2008 Feature Pack で Ribbon やら Visual Studio 風スタイルやらが利用できるようになりそうで、こりゃ MFC 始まったと思っていたが。

.NET も頑張っていたようだ。
CFileDialog の bVistaStyle フラグと同じ効果がありそうです。
スポンサーサイト

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 で可能。他にも可能なタイミングがあるかもしれない。

以上、これでここ数週間のもやもやは全て解決です!

展開可能なプロパティ

#407
System.ComponentModel.ExpandableObjectConverter クラスだ。
もう忘れないぜよw

これでネストされたプロパティを表示可能にできるな。

MSDN 参考文献 :
Visual Studio .NET プロパティ ブラウザによるコンポーネントの本格的な RAD 化

ScreenTip 再考 #2

#405
結局コモンコントロールから出発。
ToolTip と同じく NativeWindow から作るか、Control から作るか迷ったが、慣れている Control を使うことにする。[続きを読む]

ScreenTip 再考

#401
イオンカード開発に取り組む前に周辺を固めておこう。
まずはツールヒント。

昨年の夏頃に Office 2007 Beta2 を元手に ScreenTip を作ってみたわけだが。
問題は

Popup イベントでサイズをいじっても、位置調整が利かない
Draw イベントでツールヒントの形状を角丸四角形のように描いても、
 隅は透明にならず、黒となる

前者は Win32 の ToolTip ウィンドウハンドルにアクセスできれば SetWindowPos 関数でよしだったのだが、これは思いっきり公開されていない。internal である。

後者も最近、System.Drawing.Graphics.CopyFromScreen メソッドでいけばいいことに気付いたはいいものの、やはりツールヒントのスクリーン上の座標が不明である。

こうなると、(本当は Pager もあるのだが) Rebar 以来のコモンコントロールの自主実装という手段を取らざる負えない。
後者は 1px x 1px だから誤魔化しがきかなくもないが、前者は利用者にとっても思いっきり不具合である。
うーむ。

8 月の成果

#375
ScreenTip

 

 これは前述通り。

・DropDownButton
 クリックするとドロップダウンメニューを表示するようなボタン。
 DropDownList スタイルの ComboBox の代替。

・Control Test Container
 UserControl Test Container のパクリ。Control でもホストできるようにしたもの。

あとは種々のボタン× 3、ProfessionalColorTable の派生。

ToolTip の OwnerDraw

#374
ここ最近はここのスタートキット活用講座で勉強中。

その一環で Office 2007 のツールチップみたいに OwnerDraw してみることにした。
Show イベントにフックする形でグラデーションかけて描画するだけ。

まぁまぁであるが、これだけではつまらんので、Office のいう「enhanced ScreenTip」とやらに挑戦。

でこうなりますた。

ScreenTip Theme

あとは ToolStripItem にも表示できるように独自の IExtendProvider 実装を。
多少手間取ったがとりあえず動くのでよし。

そういえば Visual Studio 2003 SP1 でましたね。
例によって 160MB とナローバンドにやさしくないサイズ。
VS2005 SP1 も着々と進んでるんかね。

Pager Control

#324
一応コモンコントロールの Pager コントロール。
C# で実装してみよう(何

Pager Controls [MSDN Library]

A pager control wrapper class [The Code Project]

基本的に C# 用のコードは発見できなかったので完全自力ということに……。[続きを読む]

Rebar作戦 #7

#298
Code Named ToolRebar Post-M4 Build

ボタンサイズの問題は相変わらず。
解決するための準備が面倒なので、とりあえずツールチップ、グリップの有り無し、ボタンのプッシュ状態などを先に実装。

で、問題解決への準備と行きたい所だが、

 生理学実習レポートの期限があと 10 日

 遺伝学各論の中間試験まであと 50 時間を切る

といった問題の解決が優先されるべきだとの脳会議の決定。

Rebar作戦 #6

#296
うーむ、ボタンがグレーボタンになってしまった……

と思っていたら、単なるミスであった。

原因:BTNS_AUTOSIZE = 0x10 を TBSTATE_* と勘違いした。
     ↓
   TBSTATE_INDETERMINATE = 0x10 を指定していた

その他、WM_SETREDRAW が悪さをしていたのを取り除くなどの結果、ここまできた。

ちょっとかっこつけてみたり

Class Designer に(Microsoft 独自の)クラス図をかかせるとこんな感じ
でもまだセパレーターの長さがおかしい。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。