Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » listbox von fremder klasse mit daten füllen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
06.12.2003, 19:52 Uhr
~swmdennis
Gast


hi leute,

ich möchte von einer fremden klasse eine listbox in meiner dialogklasse mit daten füllen.
hab's damit versucht:
CListBox* pList = (CListBox*)GetDlgItem(AfxGetMainWnd()->m_hWnd,IDC_LIST);
pList->AddString("hallo");
das führt aber nur dazu, daß das programm abstürzt.
kann mir da jemand weiterhefen.

bis dann dennis
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.12.2003, 22:29 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Wenn du nicht ganz sicher sagen kannst, ob das Window bereits erzeugt wurde, dann kannst du das durch folgenden Befhel abfragen:

C++:
CListBox* pList = (CListBox*)GetDlgItem(AfxGetMainWnd()->m_hWnd,IDC_LIST);
if(pList->GetSafeHwnd())
pList->AddString("hallo");


Hast du eine SDI Anwendung? Denn möglicherweise ist das AfxGetMainWnd()->m_hWnd auch zu überdenken.

mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.12.2003, 23:26 Uhr
~swmdennis
Gast


ich hab eine sdi anwendung und das window existiert noch nicht.

ich hab mir gedacht, daß es möglich ist auf die listbox zuzugreifen, nachdem ich folgendes aufrufe
InitModalIndirect( HGLOBAL hDialogTemplate);
aber wie komme ich an hDialogTemplate ??
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.12.2003, 23:39 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Naja. Hab leider noch nie mit dem Befehl gearbeitet. An welcher Stelle rufst du das auf? Warum rufst du es nicht beim initialisieren auf?
mfg
--

Dieser Post wurde am 07.12.2003 um 23:39 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
08.12.2003, 12:54 Uhr
~swmdennis
Gast


ich wollte sie außerhalb der dialogklasse aufrufen.
CMyDialog m_mydlg;
m_mydlg.InitModalIndirect((DLGTEMPLATE*)pBuffer);
ich bin mir aber nicht mehr so sicher, daß es klappt, weil ich gelesen hab daß
diese funktion nicht resourcen-basiert ist.
ich hab noch gelesen, daß es möglich wäre auf eine listbox zuzugreifen, wenn man
innerhalb von OnInitDialog (also innerhalb der dialogklasse) AddString aufruft. dabei müssen die anzuzeigenden daten innerhalb
der dialogklasse und außerhalb dieser zugreifbar sein. die frage ist nur wie ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
08.12.2003, 17:32 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Genau das ist meiner Meinung das Problem. AddString fügt nicht nur den String hinzu, sondern ruft bestimmt eine Routine auf, die das Item auch zeichnet - und das funktioniert nur, wenn die Liste bereits erzeugt wurde. Das heißt, du kannst dafür WM_INITIALDIALOG oder WM_SHOWWINDOW nehmen.

mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
08.12.2003, 18:45 Uhr
~swmdennis
Gast


danke für deine hilfe. ich habs rausgefunden. ich hab ein feld von CString in meiner dialogklasse angelegt. und rufe dann AddString in OnInitDialog meiner dialogklasse auf.bevor ich DoModal in der anderen klasse aufrufe belege ich dieses feld mit daten.

Andere_Klasse{
Aufrufende_Funktion(){
CMyDialog mydlg;
mydlg.m_sListe[0]="hallo";
mydlg.m_sListe[1]="daten";
mydlg.DoModal();
}
}

CMyDialog{
CString m_sListe[10];
OnInitDialog(){
int zähler=0;
while(m_sListe[zähler] != ""){
m_.AddString(m_sListBox[iListCount]);
zähler++;
}
}

}


bis dann

dennis
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: