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


Anmelden zum Antworten