CTreeCtrlのコントロールのチェックボックスのオプションを設定する方法、これは難しい問題だった、一つが選択され、一つは親ノードが子ノードの状態を選択した場合にどのように、選択されないのだろうか?その状態の親ノードというサブ状態を設定しますか?私はそれがどのように実装されるか参照してください。
/ *
*特長:設定し、選択ボックスツリー(二次ディレクトリ)を選択解除
*日付:080606
*著者:ナイトホーク
* /
* m_GroupTree CTreeCtrlのにextern、
ボイドCheckTreeItem(HTRREITEMアイテム、BOOLチェック)
{
現在のエントリが、親が親ノードである場合、親ノードは子ノードに対し、NULLであるか否か//判定する
。HTRREITEM親= m_GroupTree-> getParentItem(項目)
IF(親== NULL)
{
//)子ノードのステータスを設定(または非選択された選択
HTRREITEM子= m_GroupTree-> GetChildItem(項目);
一方、(子)
{
m_GroupTree-> SETCHECK(子、チェック);
子= m_GroupTree- > GetNextSiblingItem(子);兄弟の//取得子ノード
}
}
他
{
BOOLチェック= FALSE;状態のすべての子ノードがあった場合//
BOOL TCheck = FALSE; //現在の状態(オンまたはオフ)
BOOL PCheck = FALSE; //親ノード(オンまたはオフ)
PCheck = m_GroupTree-> GetCheck(親)。
= m_GroupTree-> GetChildItem HTRREITEM兄弟(親 ); // 子ノードが取得
ん
{
Tcheck = m_GroupTree-> GetCheck(兄弟)は、
親と子ノードと着信一貫性のある状態の//現在の状態か否か、
//、一致しません着信の状態とは逆親ノードの状態を設定
IF(!! && Tcheck = PCheck =状況チェック)
{
;検査は= FALSE
m_GroupTree-> SETCHECK(親、チェック!);
BREAK;
}
チェックは= TRUE;
}一方(兄弟);
IF(チェック)//一貫性のある状態のすべてのバイト・ポイント・ノードは、親ノードと子一貫性のある状態に置くように配置されている場合
、{
m_GroupTree-> SETCHECK(親、チェックを);
}
IF(PCheck &&チェック)//もし!選択された親ノードと子ノードは、状態とは異なる親ノードを有し、親ノードが子ノードの状態に置くように配置されている
{
m_GroupTree-> SETCHECK(親、チェック);
}
}
}