2009-06-08 3 views

答えて

0

あなたのクラスは、メインアプリケーションが聴くことができるイベントを引き起こすように設計できます。次に、リスナ/イベントハンドラ/デリゲートを呼び出してイベントを処理し、リストボックスを更新することができます。通常、ほとんどのイベントフォーマットは、送信側のリファレンス(この場合は「クラス」)とイベント引数を含むオブジェクトを渡します。これらの引数を使用して、リストボックスに追加する項目のリストを渡すことができます。

+0

のために働いた例?申し訳ありません、ただ初心者です。 –

+1

SoviutはMFCではなくC#の言葉で話しています。 –

+0

ジェイソンは正しいです。私は、2つの別々のエンティティ間のやり取りの要点をあなたに伝えるために最善を尽くしています。 C#/ ActionScript/Javaの世界では、通常、カスタムイベントの使用を意味します。 – Soviut

0

クラス内にダイアログオブジェクトのハンドルがある場合は、GetDlgItem(ResourceID)を使用してリストコントロールオブジェクトを取得できます。

+0

これは、メインウィンドウではなくダイアログ内のコントロールにのみ適用されます。 –

+0

しかし、MSDNのドキュメントによると、最初のパラメータ(ウィンドウハンドル)はダイアログボックスである必要はありません。 – Naveen

0

最も簡単なアプローチは、アプリケーションフォーム/ウィンドウからそれを使用するクラスにリストビューを公開することです。これを行うには、listviewオブジェクト(または親ウィンドウ)をクラスコンストラクタに渡すか、クラスによってアクセス可能な静的変数に格納します。

カプセル化を強化するために、クラスが呼び出すことができるアプリケーション内にメソッドを配置することができます。 "AddItemToListBox()"。これにより、アプリケーションオブジェクトはリストボックスへのアクセス方法を制御し続けることができます。ここでも静的メソッドとしてこれを行うことも、メインプログラムオブジェクトのthisポインタをクラスコンストラクタに渡すこともできます。

すなわち

class CApplication 
{ 
    CListBox m_ListBox; 

public: 
    static void CApplication::AddItemToListBox(CString itemText) 
    { 
     // Add the item as you wish here 
    } 

} 

class CMyClass 
{ 
    afx_msg void CMyClass::OnMouseDown(...) 
    { 
      CApplication::AddItemToListBox("This is a test"); 
    } 
} 
1

HERESに私はそれを行うにはどうすればよい私

theApp.m_pMainWnd->GetDlgItem(IDC_BUTTON6)->SetWindowTextW(L"Run Auto Test"); 
関連する問題