Listebox Füllen
-
Hallo Leute
beim click auf einen Button erstelle ich auf einem anderen Dialog die Spalten der Listebox bevor er öffnet
nur ich bekomme immer fehler mit dem ich nix anfangen kann
bitte helft mir - wo steckt der fehler
Der Fehler kommt sobald das Programm schon läuft und ich auf den button geklickt habe -> "Debug Assertion Failed!"
void CVokabeltrainerDlg::OnBnClickedButton2() { woerter dlgwoerter(this); // erzeugt eine neue DialogInstanz dlgwoerter.liste.InsertColumn(1,"deutsch",LVCFMT_LEFT,40); dlgwoerter.liste.InsertColumn(2,"englisch",LVCFMT_LEFT,40); dlgwoerter.liste.InsertColumn(3,"französisch",LVCFMT_LEFT,40); dlgwoerter.DoModal(); }Gruß Tigermoon
-
Der alte Fehler!
Wenn Du einen Dialog Instanz erzeugst, dann existieren die Objekte, aber nicht die Fenster. Solcher Initialisierungscode gehört in die OnInitDialog Routine Denr Diaogklasse.
-
und wo finde ich die OnInitDialog Routine Der Diaogklasse?
weil eine Eventhandler auf den Dialog kann ihc cniht setzten und den Konstruktor meinst du bestimmt nciht oder?Gruß Tigermoon
-
Mit welcher Version von Visual Studio arbeitest Du?
/e: Oder schau mal hier vorbei: http://www.coding-help.de/hilfe.html#Einfuegen von Nachrichtenbehandlungsroutinen
-
die musst du selber impelmentieren..
Header :
virtual BOOL OnInitDialog( );Cpp:
WM_INITDIALOG //in Messagemap BOOL DeineDialog::OnInitDialog( ){ //hier deine elemente anfügen }:schland: :schland: :schland:
-
ich hba das jetzt folgendermassen gemacht
BEGIN_MESSAGE_MAP(woerter, CDialog) WM_INITDIALOG ON_BN_CLICKED(IDC_BUTTON4, &woerter::OnBnClickedButton4) ON_BN_CLICKED(IDC_BUTTON5, &woerter::OnBnClickedButton5) END_MESSAGE_MAP() // woerter-Meldungshandler BOOL woerter::OnInitDialog() { liste.InsertColumn(0,"deutsch",LVCFMT_CENTER,40); liste.InsertColumn(1,"englisch",LVCFMT_CENTER,40); liste.InsertColumn(2,"französisch",LVCFMT_CENTER,40); }und ich bekomme syntaxfehler in der klammer { und }
kann damit nix anfangen
die felder sin an der stelle END_MESSAGE_MAP()
-
jencas schrieb:
Mit welcher Version von Visual Studio arbeitest Du?
Ich verwende Studio 2005
-
sorry ,
das
WM_INITDIALOGmuss
ON_WM_INITDIALOG()BOOL woerter::OnInitDialog() { CDialog::OnInitDialog(); liste.InsertColumn(0,"deutsch",LVCFMT_CENTER,40); liste.InsertColumn(1,"englisch",LVCFMT_CENTER,40); liste.InsertColumn(2,"französisch",LVCFMT_CENTER,40); return TRUE; }
-
OnInitDialog ist eine rein virtuelle Funktion und benötigt keinen Eintrag in der Message-Map.
-
upsala... hast recht.. :schland:
-
&woerter::
ist wohl auch zuviel in der MessageMap...
-
ist wohl auch zuviel in der MessageMap
Ab -ich glaube Studio 2003- wird dies automatisch eingetragen, wenn die Ereignishandler über das Studio erzeugt werden.
-
Aha, dann ist es wohl doch OK. Ich benutze noch Version 6.0

-
Bin mit 2008 unterwegs, sollte in 2005 aber genauso gehen:
in der Klassenansicht die betreffende Dialogklasse auswählen, wo Du OnInitDialog() hinzufügen möchtest, rechte Maustaste, Eigenschaften, rechts neben dem "Blitz" Symbol sind die Buttons "Meldungen" und "Überschreibungen", dort "Überschreibungen" wählen, in der Liste dann OnInitDialog aufsuchen und rechts auf den Aufklappbutton drücken, anschliessend <Hinzufügen> OnInitDialog, fertig.
-
BorisDieKlinge schrieb:
die musst du selber impelmentieren..
Quietschquatsch..... siehe oben!