昨日も質問した、いけやんです。
開発環境
WinXP Pro
Visual C++6.0
MFC ダイアログベース
内容は、チェックされたノードを取得し
ノード名、親ノード、兄弟ノードを
表示する処理をやっているのですが、
考え方が間違っているのか、
うまく行きません。
昨日の今日で申し訳ないですが、
どうぞ、よろしくお願いします。
CString ss,wkss;
HTREEITEM ht = m_tree.GetSelectedItem();
for(int i = 0 ; i < 75 ; i++){
if(m_tree.GetCheck(m_HndTree[i]) != 0){
ss = ss + \n親ノードは: +
m_tree.GetItemText(m_tree.GetRootItem());
ss = ss + \n前のノードは: + m_tree.GetItemText(m_tree.GetPrevSiblingItem(ht));
ss = ss + \n次のノードは: + m_tree.GetItemText(m_tree.GetNextSiblingItem(ht));
AfxMessageBox(ss,MB_OK|MB_ICONINFORMATION);
}
}
>m_tree.GetItemText(m_tree.GetRootItem());
では常にルートをさすのでは?
CTreeCtrl::GetParentItem
http://msdn.microsoft.com/ja-jp/library/aybe0edk(VS.80).aspx
また、それぞれ戻り値を確認すべきでしょう。
>GetPrevSiblingItem
>GetNextSiblingItem
NULLを返す時がある。
>>m_tree.GetItemText(m_tree.GetRootItem());
>では常にルートをさすのでは?
GetParentItemですよねー
よくみたらつねに ht しかみていないですね。
チェックが入っているのはm_HndTree[i]ですので ht を見るのは間違っています。
すいません。色々試していたら
返信遅くなりました。
CString ss,wkss;
HTREEITEM ht = m_tree.GetSelectedItem();
for(int i = 0 ; i < 75 ; i++){
if(m_tree.GetCheck(m_HndTree[i]) != 0){
//ss = ss + \nチェックされているノード: +
m_tree.GetItemText(m_tree.GetCheck(m_HndTree[i]));
ss = ss + \n親ノードは: +
m_tree.GetItemText(m_tree.GetParentItem(m_HndTree[i]));
ss = ss + \n前ノードは: +
m_tree.GetItemText(m_tree.GetPrevSiblingItem(m_HndTree[i]));
ss = ss + \n次ノードは: +
m_tree.GetItemText(m_tree.GetNextSiblingItem(m_HndTree[i]));
AfxMessageBox(ss,MB_OK|MB_ICONINFORMATION);
}
}
親、前、次ノードの表示はうまくいったのですが、
チェックされているノードの表示させる
処理を忘れていていました。
どうも、うまく行きません。
よろしく、お願いします。
>m_tree.GetItemText(m_tree.GetCheck(m_HndTree[i]));
m_tree.GetItemText(m_HndTree[i]);
です。
GetCheckの戻り値はHTREEITEMではありません。
# NULL チェックしなくても大丈夫なのか、、、
Blueさんありがとうございます。
m_tree.GetItemText(m_HndTree[i]);
うまくいきました。
επιστημηさん
Blueさんありがとうございます。
解決したのですが、
Blueさんに質問していいですか?
すいません。Blueさんに聞きたいのですが、
[# NULL チェックしなくても大丈夫なのか、、、]
if(○ != NULL)みたいな処理の事ですよね?
基本的な事なら、すいません。
エラー等を出さないために必要なんですか?
m_tree.GetItemText(NULL);
でエラーがでなければ問題ないと思います。
(試していないのでわからん。多分SendMessage(TVM_GETITEM)が失敗で帰ってきて空文字
列を返しているだけかなと)
ただ、たとえば次ノードがないのに「次ノードは」と表示するのは微妙かも。
Blueさん。
返信ありがとうございます。
確かに、次ノードがないのに表示するのは、おかしいですね。
参考になりました。ありがとうございます。