Tree Controlのルートのチェックボックスにチェックを入れられない状況です。
(下位(子)のチェックボックスも全て)
コードは、HTREEITEM hRootItem = m_tree.GetRootItem();
m_tree.SetCheck(hRootItem);です。
作成中ソフトを起動後にTree Controlをマウスからルートのチェックボックスを
クリックするとチェックが入り、マウスクリックのイベントから
SetCheckを実行すると下位(子)にチェックが入ります。
原因がわかる方いらっしゃいましたら回答よろしくお願い致します。
環境:Windows XP(SP1), Visual C++.NET 2003
そのhRootItemは本当にチェックを入れたいアイテムですか? 確認しましたか?
ルートには、起動から終了までチェックを入れておきたいです。
下位(子)には起動段階だけ必要なところにチェックを入れておき、
マウスでクリックされたら入れたりはずしたりさせます。
確認とは何の確認でしょうか?
よろしくお願い致します。
> 確認とは何の確認でしょうか?
そのhRootItemは本当にチェックを入れたいアイテムか。です。
--□ 親
+-- □ 子
であったとき、hRootItemは本当に'親'か? です。
ルートアイテムを追加する時は、
m_HndTree[0] = m_tree.InsertItem(ルート, TVI_ROOT);
下位(子)アイテムを追加する時は、
m_HndTree[1] = m_tree.InsertItem(子1, m_HndTree[0]);
m_HndTree[2] = m_tree.InsertItem(子2, m_HndTree[0]);
にしています。
hRootItemとm_HndTree[0]は違うアイテム?
そこで、m_tree.SetCheck(m_HndTree[0]);にしましたがチェックは入りません。
ルートを展開する時は、m_tree.Expand(m_HndTree[0], TVE_EXPAND);で
展開できます。
なにが間違っているのでしょうか?
よろしくお願いします。
自己レス
m_tree.ModifyStyle( TVS_CHECKBOXES, 0 );
m_tree.ModifyStyle( 0, TVS_CHECKBOXES );
の2行を追加したらチェックボックスのチェックが入りました。
間違えてVC++ 6.0のヘルプを見ていました。
VC++.NETのヘルプに載っておりました。
大変申し訳ありませんでした。