Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Integer Devide by Zero in DoModal ?!?!?!?

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
16.05.2005, 12:37 Uhr
~Michael L.
Gast


Hi,

also ich hab mir ein altes Projekt wieder angeschaut und einen merkwüdigen Effekt. Ich möchte einen Dialog anlegen und dieser verursacht den oben erwähnten Fehler. Der Code ging aber schon mal und der Fehler liegt in einer MFC Klasse

Ich versuche mal den Fehlerweg aufzuzeigen: (Sorry für den vielen Code )

->> Meine Klassen

C++:
...
CFtpSearch* ftp = new CFtpSearch(this);
    ftp->DoModal();
...



Dialogklasse


C++:
// FtpSearch.cpp: Implementierungsdatei
//

#include "stdafx.h"
#include "RelocateToFtp.h"
#include "FtpSearch.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// Dialogfeld CFtpSearch


CFtpSearch::CFtpSearch(CRelocate* rel)
    : CDialog(CFtpSearch::IDD, NULL),m_relocate(rel)
{
    //{{AFX_DATA_INIT(CFtpSearch)
    m_strPfad = _T("");
    //}}AFX_DATA_INIT
}


void CFtpSearch::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CFtpSearch)
    DDX_Control(pDX, IDC_FILES, m_ctrlFiles);
    DDX_Text(pDX, IDC_PFAD, m_strPfad);
    //}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CFtpSearch, CDialog)
    //{{AFX_MSG_MAP(CFtpSearch)
    ON_BN_CLICKED(IDC_EXIT, OnExit)
    ON_LBN_DBLCLK(IDC_FILES, OnDblclkFiles)
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// Behandlungsroutinen für Nachrichten CFtpSearch

void CFtpSearch::OnExit()
{
    UpdateData();
    m_relocate->SetPfad(m_strPfad);
    OnOK();
}

BOOL CFtpSearch::OnInitDialog()
{
    CDialog::OnInitDialog();
    
    // root Eintrag
    m_strPfad=m_relocate->GetFtpConn()->root; //ftpConn->GetCurrentDirectoryAsURL(m_strPfad);
    
    CFtpFileFind filefind(m_relocate->GetFtpConn()->ftpConn);
    if(filefind.FindFile())
    {
        CString length = "";
        int i = 0;
        do
        {
            i = filefind.FindNextFile();
            // File gefunden
            CString directory = filefind.GetFileName();
            if(filefind.IsDirectory())
            {
                if(directory!="." && directory.GetLength()>length.GetLength()) length = directory;
                if(directory!=".") m_ctrlFiles.AddString(directory);
            }
        }
        while(i!=0);
        filefind.Close();
        
        CDC* dc = m_ctrlFiles.GetDC();
        CSize s = dc->GetTextExtent(length);
        m_ctrlFiles.SetColumnWidth(s.cx);
        m_ctrlFiles.ReleaseDC(dc);
    }
    
    UpdateData(false);
    
    return TRUE;  // return TRUE unless you set the focus to a control
                  // EXCEPTION: OCX-Eigenschaftenseiten sollten FALSE zurückgeben
}

void CFtpSearch::OnCancel()
{
    // Root zurück setzen (wurde durch selektieren verändert)
    m_relocate->GetFtpConn()->ftpConn->SetCurrentDirectory(m_relocate->GetFtpConn()->root);

    CDialog::OnCancel();
}

void CFtpSearch::OnDblclkFiles()
{
    // Was wurde ausgewählt -> neues root
    int index = m_ctrlFiles.GetCurSel();
    if(index>=0)
    {
        // Nach unterverzeichnisen suchen
        CString selected ="";
        m_ctrlFiles.GetText(index,selected);
        if(selected=="..")
        {
            // Ein Verzeichnis nach oben
            if(m_relocate->GetFtpConn()->aktuell!="")
                m_relocate->GetFtpConn()->aktuell
                     = m_relocate->GetFtpConn()->aktuell.Left(m_relocate->GetFtpConn()->aktuell.ReverseFind('/'));
        }
        else
        {
            if(m_relocate->GetFtpConn()->aktuell=="")
            {
                // sind noch in root -> nur namen anhängen
                m_relocate->GetFtpConn()->aktuell = selected;
            }
            else
            {
                // sind tief in Verzeichnisbaum
                m_relocate->GetFtpConn()->aktuell += "/"+selected;
            }
        }

        // suchen
        if(m_relocate->GetFtpConn()->ftpConn->SetCurrentDirectory(selected))
        {
            // Pfad anpassen
            m_strPfad=m_relocate->GetFtpConn()->root+m_relocate->GetFtpConn()->aktuell;

            // bisherigen Einträge löschen
            m_ctrlFiles.ResetContent();

            CString length = "";
            CFtpFileFind filefind(m_relocate->GetFtpConn()->ftpConn);
            if(filefind.FindFile())
            {
                int i = 0;
                do
                {
                    i = filefind.FindNextFile();
                    // File gefunden
                    CString directory = filefind.GetFileName();
                    if(filefind.IsDirectory())
                    {
                        if(directory!="." && directory.GetLength()>length.GetLength()) length = directory;
                        if(directory!=".") m_ctrlFiles.AddString(directory);
                    }
                }
                while(i!=0);
                filefind.Close();
                
                CDC* dc = m_ctrlFiles.GetDC();
                CSize s = dc->GetTextExtent(length);
                m_ctrlFiles.SetColumnWidth(s.cx);
                m_ctrlFiles.ReleaseDC(dc);
            }
        }
        else
            DWORD dw = GetLastError();
    }
    UpdateData(false);
}





->> Windows Klassen

int CDialog:oModal()

C++:
...
if (CreateDlgIndirect(lpDialogTemplate,CWnd::FromHandle(hWndParent), hInst))
...




BOOL CWnd::CreateDlgIndirect(LPCDLGTEMPLATE lpDialogTemplate,
CWnd* pParentWnd, HINSTANCE hInst)

C++:
...
hWnd = ::CreateDialogIndirect(hInst, lpDialogTemplate,
    pParentWnd->GetSafeHwnd(), AfxDlgProc);
...




Hat jemand eine Idee was hier gegen den Baum läuft? Wie gesagt ich bin mir sicher das das der Code schon einmal lief.

mfg Michael
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.05.2005, 12:39 Uhr
~Michael L.
Gast


die zuletzt erwähnte Funktion verursacht den Fehler (also CreateDialogIndirect)
 
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: