none
リストビューから別のリストビューへコピー RRS feed

  • 質問

  • あるリストビューから、別のリストビューに必要なデータだけを抜き出して表示させようとしています。
    GetItemTextを使用してぬきだして変数のに一旦いれてから、その変数を使用してSetItemTextで挿入という風に書いてます。でも、できません。表示がされていないだけの問題なのか?・・・別の問題なのか?

    ソースはこれだけです。
    oid CMIXDlg::( CListCtrl *m_ListView, CListCtrl *m_ListView2 )
    {
      m_Buff = m_ListView->GetItemText( 0, 0 );
      m_ListView2->SetItemText( 0, 0, m_Buff);
    }
    ビルドもちゃんと通ります。実行してもエラーはでません。

    よろしくお願いします。

    2006年12月13日 8:19

すべての返信

  • > SetItemTextで挿入

    InsertItem ではどうでしょうか。
    (そういう問題ではない?)

    2006年12月13日 22:40
  • > ビルドもちゃんと通ります。実行してもエラーはでません。

    実行してもエラーは出ませんとありますが、これは異常終了しませんと言う話ですよね。
    異常終了しないからOKというわけでは無いので注意してください。
    そもそも、CListCtrl::SetItemIText関数の戻り値のチェックをしていないですよね。
    関数が戻り値を返す場合は戻り値のチェックする習慣をつけた方がいいです。
    多分、存在しないアイテムにテキストを設定しようとしてエラーになっているんじゃないですかねぇ。
    SetItemTextは既に存在するアイテムに対してテキストを設定する関数なので挿入には使えません。
    既にアドバイスにあるようにCListCtrl::InsertItemを使ってアイテムそのものを追加する必要があります。
    リストコントロールはリストボックスのようにただ文字列としてデータを管理しているわけではなくて
    表示アイテムとして管理しています。リストコントロールにはレポート形式だけじゃなくて他の形式の
    表示方法もありますよね。だからリストボックスとは管理方法が自ずと違うのです。

    2006年12月19日 6:21
  • お二方ともありがとうございます。

    確認した結果、InsertItemが抜けていました。

    追加して、結果を報告したいと思います。

    遅れてしまって、すいませんでした。

    2006年12月20日 2:22