In der Funktion gehts aber in der anderen nicht.
-
Servus, hab ne kleine Frage, ein Stück code funktioniert wunderbar wenn ich es zum Beispiel durch einen OnClikc-Handler ausführe, zum Beispiel OnAdd() oder was weiß ich.
Wenn ich es aber in OnCreate schriebe dann gibts eine Assertation.
Nachdem ich gedebuggt habe fand ich heraus dass m_hWnd noch NULL ist während OnCreate aufgerufen wurde.
Der Assert tritt bei IsWindow() auf:
_AFXWIN_INLINE int CComboBox::InsertString(int nIndex, LPCTSTR lpszString) { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_INSERTSTRING, nIndex, (LPARAM)lpszString); }
Mein Code:
int NFDialogAddWords::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CDialog::OnCreate(lpCreateStruct) == -1) return -1; if(!::SetCurrentDirectory("DB\\")) AfxMessageBox("Konnte 'Directory' nicht setzen"); CFileFind FileFind; if(!FileFind.FindFile("*.nfwd")) AfxMessageBox("Keine Sprachdatenbank vorhanden"); bool bSearching = TRUE; while(bSearching) { bSearching = FileFind.FindNextFile(); m_ctrDB.InsertString(-1,FileFind.GetFileName()); } if(!::SetCurrentDirectory("..")) AfxMessageBox("Konnte 'Directory' nicht setzen"); return 0; }
Wo soll man so einen Code denn sonst hinschreiben wenn nicht in OnCreate?
-
In OnInitDialog.
-
Nimm lieber die OnInitDialog()-Methode von CDialog.
Happosai
-
thankz, ich mach einfach nich so viel in MFC, sollt mich vielleicht doch ein bissl mehr damit beschäftigen *gg*.
Also bei OnCreate ist dass Fenster noch nicht erzeugt anscheinned oder?
-
OnCreate ist das Fenster noch nicht erzeugt.
IMHIO erst in OnInitDialog bei Dialogen oder OnInitInstanz bei SDI,MDI