DSkinControl(For MFC)コントロール-dsCtrl Compbox
1970 ワード
原文の住所:http://www.uieasy.cn/blog/?p=513
伝統的なcompboxは使用において多くの制限があり、私達のcompboxタイプコントロールのニーズを満たすのは難しいです.主な表現では、compboxに内蔵されているlistboxは扱いにくく、完璧に描きにくいです.したがって、DSkinControlコントロールに新たなコントロールdsCtrlCompboxを追加して、いくつかの標準的なcompboxでは実現しにくい機能を実現しました.
dsCtrl Compboxコントロール構造
dskyinliteインターフェースライブラリを使ってサブウィンドウを自由に描き、listboxを描くことができますので、上の図のようなインターフェースは配置しやすいです.まずは上部にCWndのサブウィンドウを継承し、dsCtrlCompboxでcompboxを使用します.bkで描画します.xmlの設定は以下の通りです
伝統的なcompboxは使用において多くの制限があり、私達のcompboxタイプコントロールのニーズを満たすのは難しいです.主な表現では、compboxに内蔵されているlistboxは扱いにくく、完璧に描きにくいです.したがって、DSkinControlコントロールに新たなコントロールdsCtrlCompboxを追加して、いくつかの標準的なcompboxでは実現しにくい機能を実現しました.
dsCtrl Compboxコントロール構造
dskyinliteインターフェースライブラリを使ってサブウィンドウを自由に描き、listboxを描くことができますので、上の図のようなインターフェースは配置しやすいです.まずは上部にCWndのサブウィンドウを継承し、dsCtrlCompboxでcompboxを使用します.bkで描画します.xmlの設定は以下の通りです
其中
index="100" id="image.default" picfile="#extend.combobox.bk.nor" left="5" top="3" width="20" height="20"/>是我们为类似IM登陆中使用的combobox优化的一种模式。其中index=100 id="image.default"是固定的值,用于显示dsCtrlCombobox前面的用户头像。
在dsCtrlComboBox内部代码中,通过如下调用来控制界面显示:
私たちはdsCtrlCompboxのソースコードを提供していますので、開発者も自分の必要に応じてこれらの要素を定義できます.void dsCtrlComboBox::SetWindowImage( CString strImage) { ShowWindowImage( TRUE); if ( !strImage.IsEmpty()) dsSetDrawItemValue( GetSafeHwnd(), _T("image.default"), strImage, FALSE); } void dsCtrlComboBox::ShowWindowImage(BOOL bShow) { if ( bShow ) dsSetDrawItemVisible( GetSafeHwnd(), 100,100, TRUE, FALSE); else dsSetDrawItemVisible( GetSafeHwnd(), 100,100, FALSE, FALSE); }
また、下のxml構成によって、引いたlistboxを描きます.
同様に、XMLのidは「text.default」とidは「image.default」の描画要素であり、コードには異なる値が設定されています.各アイテムに対応するテキストと画像の値を表示します.
dsCtrl Compbox関数使用
基本的にはMFC CComboxのAPIに従ってパッケージを作ります.ユーザーが分かりやすく使うために.CComboxの大部分の関数はdsCtrlCompboxで実現されました.いくつかの拡張をしました.例えば:
int dsCtrlCompbox:AddString(LPCTSTR lpszString、LPCTSTR lpszImage)
この関数は、アイテムを追加する際に、item textとitemイメージを指定します.詳細については、私たちのCommboxTestプロジェクトの例を参照してください.
まとめ:
DSkinLiteインターフェースライブラリはインターフェイスの描画に柔軟なサポートを提供してくれますので、dsCtrlCompboboxを使って、様々なタイプのインターフェースを簡単に作成できます.ここではIMソフトのようなユーザーがcomboxにログインするのは、DSkintrolのすべてのソースを提供しています.
Technoratiラベル:インターフェースライブラリコントロールcompboxコントロール