teratail header banner
teratail header banner
質問するログイン新規登録
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

1回答

1080閲覧

ツリーコントロールによる複数選択

tositk

総合スコア4

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2023/03/08 22:45

0

0

ここに実現したいことを箇条書きで書いてください。

  • ▲▲機能を動作するようにする

前提

ツリーコントロールでは標準で複数の項目を選択できない為、削除等の編集が不便なので複数選択を実現したい

ここに質問の内容を詳しく書いてください。
MFCでツリーコントロールの複数選択プログラムを書いています。
複数選択の必要機能はできたのですが、表示に解決できない問題があります。新たな項目を選択すると、自動的に既選択の表示を解除し新たな選択の表示が行われます。結果として選択範囲にチラツキが表れるため、自動的に行われる選択および解除の表示を禁止したい

(例)
TypeScriptで●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

特にエラーはありません
表示の問題だけです

エラーメッセージ

該当のソースコ

ツリーコントロールの選択状態の表示と解除をそれぞれ、
SetItemState(item,TVIS_SELECTED,TVIS_SELECTED),
SetItemState(item,(UINT)~TVIS_SELECTED,TVIS_SELECTED)
と記述し複数選択を表示しています。なお、選択itemは別途記憶しております。

試したこと

Webサイトで関連するものが無いか調べたのですが、わかりませんでした

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自動的に行われる選択および解除の表示を禁止したい

コードが不明ですが、おそらくON_NOTIFYにて表示の選択と解除を行っていると思います。
そのさい*pResultに0以外の値をセットしてやると、デフォルト(=自動的に行われる)の動作を止めることができたはずです。
参考:ON_NOTIFY メッセージの*pResult

ただ、CTreeCtrlはTVS_CHECKBOXESスタイルでチェックボックスが使えるので、そちらのほうが目的にあうような気がします。

投稿2023/03/09 00:59

can110

総合スコア38352

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tositk

2023/03/09 08:05

ありがとうございます。 ご指摘のようにON_NOTIFYにて表示いたしております。 *pResultに1をセットして実行しましたが、解決できませんでした。 チェックボックスを使わない理由は、見た目のシンプルさを保ちたいと考えました。 このプログラムは、バックアッププログラムでコピーに必要なファイルをツリー表示させております。通常はこのままコピーしますが、場合によって削除等の編集が必要になる場合があり、このような時に使う補助的な機能なのでこのような仕様としております。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問