ツリービューのイタリック体で個々のノードのテキストを作成できるようにしたいと思います。簡単に聞こえますが、方法を見つけることができませんでした。ノードにはそれを許可するプロパティがありません。太字にしたり、色を変更したり、背景色を設定したりできますが、斜体にすることはできません。誰もこれを行う方法を知っていますか?
2 に答える
あなたはそれが単純に聞こえるのは正しいです。しかし、残念ながら、実際に行うのはそれほど簡単ではありません。VB6 のツリービュー コントロールは、共通コントロールのツリービューのラッパーですが、コントロールの機能の多くは公開されていません。コントロールをサブクラス化し、アイテム ペイント イベントをオーナー ドローとして処理することで、必要なことを行うことができます。手元に VB6 IDE がセットアップされていませんが、参考になるリソースがいくつかあります。
VB6 ハードコアのヒントに関する Brad Martinez の Web サイト:
http://btmtz.mvps.org/treeview/
私の個人的なお気に入り:
Steve McMahon の VBAccerator Web サイト
http://www.vbaccelerator.com/home/VB/Code/Controls/TreeView/TreeView_Control/article.aspには、プロジェクトに直接ドロップできる非常に優れたカスタム コントロールの実装があります。 、ソースコード、およびすべて。
これら 2 つの Web サイトは、Karl Peterson のサイト ( http://vb.mvps.org/ ) とともに VB6 開発に不可欠です。
幸運を!
これを作る簡単な方法はありません。基本的に、次のことを行う必要があります。
- Microsoft Windows Common Controls 5.0 (SP2) の TreeView コントロールを使用する
- サブクラス コントロール
hWnd OCM_NOTIFYメッセージチェックについてNM_CUSTOMDRAW- 舞台
CDDS_PREPAINT復帰でCDRF_NOTIFYITEMDRAW - ステージ上
CDDS_ITEMPREPAINTで渡されたカスタムフォントを選択しhDCて返すCDRF_NEWFONT
- 舞台
hItemツリービュー ノードから取得する簡単な方法もありません。私はこのハックな方法を使用しています:
Private Function pvGetHItem(oNode As ComctlLib.Node) As Long
Call CopyMemory(pvGetHItem, ByVal ObjPtr(oNode) + 68, 4)
End Function