2009-06-08 10 views

Répondre

0

Votre classe peut être conçue pour déclencher un événement que votre application principale peut écouter. Ensuite, un écouteur/gestionnaire d'événements/délégué peut être appelé pour gérer l'événement et mettre à jour la liste. En règle générale, la plupart des formats d'événements transmettent une référence de l'expéditeur, dans ce cas votre «classe», ainsi qu'un objet contenant des arguments d'événement. Ces arguments peuvent être utilisés pour transmettre la liste des éléments que vous souhaitez ajouter à votre listbox.

+0

Comment puis-je faire cela? Désolé, juste un débutant ici. –

+1

Soviut parle en termes de C#, pas de MFC. –

+0

Jason a raison. Je fais de mon mieux pour vous donner l'essentiel sur la façon de communiquer entre deux entités distinctes. Dans le monde C#/ActionScript/Java, cela signifie généralement utiliser des événements personnalisés. – Soviut

0

Si vous avez l'objet handle to dialog dans votre classe, vous pouvez utiliser GetDlgItem(ResourceID) pour obtenir l'objet de contrôle de liste.

+0

Cela s'applique uniquement aux contrôles dans les boîtes de dialogue - pas dans les fenêtres principales. –

+0

Mais la documentation MSDN dit que le premier paramètre (handle de fenêtre) n'a pas besoin d'être une boîte de dialogue. – Naveen

0

L'approche la plus simple consiste à exposer la liste à partir de votre formulaire/fenêtre d'application aux classes qui l'utilisent. Vous pouvez le faire en passant l'objet listview (ou la fenêtre parente) au constructeur de la classe, ou en le stockant dans une variable statique accessible par la classe.

Pour une meilleure encapsulation, vous pouvez mettre une méthode dans l'application que la classe peut appeler, par ex. "AddItemToListBox()". Cela permet à l'objet application de conserver le contrôle de l'accès à la liste. Encore une fois, vous pouvez le faire comme une méthode statique, ou passer le pointeur «this» de l'objet principal dans le constructeur de la classe.

à savoir

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 un exemple qui a fonctionné pour moi

theApp.m_pMainWnd->GetDlgItem(IDC_BUTTON6)->SetWindowTextW(L"Run Auto Test"); 
Questions connexes