オブジェクトを共通関数に渡すには?

解決


zzz  2006-01-18 01:22:10  No: 60315

いくつかのリストボックスで、各リストボックスのイベント発生時に同じような処理をしたいのですが、
VBのようにObjectを引数として共通関数に渡す、
又はリストボックスを配列としてインデックスを共通関数に渡すなどして
共通関数を使った処理をしたいと思います。
上記のような方法は可能でしょうか?
可能ならばやり方を教えて下さい。


Blue  2006-01-18 01:44:05  No: 60316

いいたいことが良くわからないのですが、
リストボックスというオブジェクトを引数にしたいということでしょうか?
共通関数におけるその機能を具体的に説明してもらえますか?

それと
OS,VCのバージョン,プロジェクトの種類を明記してください。


zzz  2006-01-18 02:07:12  No: 60317

大まかな処理としては、
メールソフトのOutLook Expressの
表示  →  レイアウト  →  ツールバーの変更
で表示されるような、リストボックスから選んだ内容を他のリストボックスに移動させるシステムを3組ほど作っています。
この際に移動元のリストボックスと移動先のリストボックスというオブジェクトを引数として、選んだ内容を移動させる共通関数に渡したいのです。
現状では

  CString str;
  int Cur = m_MoveList1.GetCurSel();  //選んだセル数
  if (m_MoveList1.GetSelCount() < 1) {
      return;                //セルを選んでいない状態ならreturn
         }
  m_MoveList1.GetText(Cur, str);    //選んだテキストを取得
  m_MoveList2.AddString (str);      //移動先に追加
  m_MoveList1.DeleteString (Cur);   //移動元から削除

といった処理が全ての移動ボタン(Outlookで言えば追加・削除ボタン)に書いてあります。

OSは WindowsNT2000 で、 Visual Studio .Net 2003 を使っています。


Blue  2006-01-18 02:23:40  No: 60318

メンバであるCListBox変数を参照渡しまたはポインタで渡して受け取る
関数はどうでしょうか?

void MoveList( CListBox* pList1, CListBox* pList2 )
{
    CString str;
    int Cur = pList1->GetCurSel();  //選んだセル数
    if (pList1->GetSelCount() < 1) {
        return;                //セルを選んでいない状態ならreturn
    }
    pList1->GetText(Cur, str);    //選んだテキストを取得
    pList2->AddString (str);      //移動先に追加
    pList1->DeleteString (Cur);   //移動元から削除
}

見たいなやつ。

でボタンのほうには、

MoveList( &m_MoveList1, &m_MoveList2 );

だけと。

もう少しきれいに書きたい場合は、どちらかのCListBoxクラスを規定クラスにしたクラスを作って、その中に移動専用メソッドをつくるとか。

という解釈であっていますかねぇ。


zzz  2006-01-18 02:34:37  No: 60319

私がしたかった通りの答えです。
丁寧に教えていただいてありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加