• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CTreeCtrlで、あるノード以下だけを無効にしたい)

CTreeCtrlのノードを無効にする方法

このQ&Aのポイント
  • CTreeCtrlで表示されているノードの中から特定のノードを無効にする方法について教えてください。
  • 特定のノードを無効にする際には、バックに灰色がかかったような状態になるような処理が必要です。
  • また、一部のノードだけでなく、画像とテキスト内容を灰色にする方法も知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

>それぞれのノードをクリックすると、画像:●が★に変わります。 別のノードをクリックすると、画像はどうなるのでしょう? では、本題。 >そこで、A_c_1のノードだけを無効(バックに灰色がかかったような状態で、クリックしても反応しない。)にしたいのですが、どのようにすればよいでしょうか? 無効表示(グレー表示)にする場合、画像の方は予め用意してImageListに入れておくことになるかと思います。 クリックに反応しない。というのが、どこまでのことを指すのが不明ですが… TVN_ITEMCHANGINGかTVN_SELCHANGINGのハンドラ作成して、TRUEを返却することで変更/選択をキャンセルすることができるかと。 # 親ウィンドウのOnNotify()で処理…でしょうか。 >また、一つのノードだけ、無効にすることができないのであれば、 >画像(●)とテキスト内容(A_c_1)を灰色をかけるにはどのようにすればよいでしょうか? 画像については先の通り。 テキスト内容に関してはカスタムドローで対応できるかと思われます。 http://www.kumei.ne.jp/c_lang/sdk3/sdk_262.htm こちらも親ウィンドウのOnNotify()でしょうか… dwDrawStageがCDDS_PREPAINTの時にCDRF_NOTIFYITEMDRAWを返却すると、各ノードの描画の際に通知が来ます。 dwItemSpecに対象ノードのHTREEITEMが入って通知されるようですので、 GetItem()なりでノードを取得可能でしょう。 その上で、clrTextとclrTextBkに色を設定すればよろしいかと。 # EnableWindow()相当ならば…GetSysColor()辺りで取得できます。

kgyqk433
質問者

お礼

ご返事ありがとうございます。 Ctreectrlのメンバ関数では、やはりそのようなのはないのですね。。。 教えて頂いた方法をためします。 ありがとうございます。

関連するQ&A

専門家に質問してみよう