2

ツリービューのイタリック体で個々のノードのテキストを作成できるようにしたいと思います。簡単に聞こえますが、方法を見つけることができませんでした。ノードにはそれを許可するプロパティがありません。太字にしたり、色を変更したり、背景色を設定したりできますが、斜体にすることはできません。誰もこれを行う方法を知っていますか?

4

2 に答える 2

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 開発に不可欠です。

幸運を!

于 2011-02-15T00:20:21.407 に答える
2

これを作る簡単な方法はありません。基本的に、次のことを行う必要があります。

  • 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
于 2011-02-15T09:23:18.230 に答える