リストボックスからリストボックスへ情報を移動するには?

解決


SUKE  2005-12-14 05:23:08  No: 59943  IP: [192.*.*.*]

はじめまして、初めてこの掲示板を利用させていただきますSUKEです。

プログラムを始めたばかりの新参者ですが、
いろいろ調べてみても、自分のやりたいことがどうやっていいのかわからなくなってしまい、一人では解決できない状態に陥ってしました。
なにとぞご教授お願い致します。

使用ツール:VisualC++6.0

MFCダイアログ形式でリストボックスを2つ用意いたしました。
リストボックスA      リストボックスB
とします。
リストボックスAに入っている情報をリストボックスBに移動させ、
リストボックスAに入ってる情報は消去するというプログラムを作成したいのですが、どのようにすればよいでしょうか。

表示する情報は、テキストデータから読み込んだ文字列のデータです。

編集 削除
SUKE  2005-12-14 05:29:10  No: 59944  IP: [192.*.*.*]

移動のさせる方法は、ドラッグ&ドロップか、
AリストとBリストをシングルクリックしてやる方法はないかと、
試行錯誤中です。

編集 削除
RAPT  2005-12-14 10:15:16  No: 59945  IP: [192.*.*.*]

MFCの方法とはちょっと違うでしょうが、VC++6sp6/WTL7.0での実現方法を書きます。
MFCの作法と読み替えてください。


CListBox m_listA, m_listB;
m_listA.Attach(GetDlgItem(IDC_LIST_A));
m_listB.Attach(GetDlgItem(IDC_LIST_B));


// メッセージハンドラ(リストボックスA→リストボックスBの例)
COMMAND_HANDLER_EX(IDC_LIST_A, LBN_SELCHANGE, OnSelChange)
// if (uMsg == WM_COMMAND && LBN_SELCHANGE == HIWORD(wParam) && IDC_LIST_A == LOWORD(wParam))
// という意味です。

void OnSelChange(UINT /*code*/, int /*id*/, HWND /*hWnd*/)
{
    int nIndex = m_listA.GetCurSel();
    if( nIndex != LB_ERR ){
        CString strText;
        m_listA.GetText(nIndex, strText);
        m_listA.DeleteString(nIndex);
        m_listB.AddString(strText);
    }
}

編集 削除
SUKE  2005-12-14 21:21:36  No: 59946  IP: [192.*.*.*]

RAPT様ありがとうございます。

まだ、完成していませんが、試行錯誤しながら読み替えてプログラムを組んでいます。

一応、まだ解決はしていませんが、解決のボタンを押しておきます。
どうもありがとうございました。

編集 削除