CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 9 of 9
  1. #1
    Join Date
    Apr 2001
    Posts
    30

    Assertion Errors...help!

    I just made a new Dialog-based application, added controls, and merely declared variables for all my controls...I have not yet manually altered/edited/added any code to my application yet. When the build, compile, and run the program, I get a
    "Debug Assertion Failed!
    File: strcore.cpp
    Line: 519" error when I click on the "OK" button placed on the dialog by default. I have not encountered many Assertion Failure Errors, and any help on debugging it or merely informing me about possible causes for the problem would be greatly appreciated. Thank you in advance.


  2. #2
    Join Date
    May 2001
    Location
    Rostov-on-Don, Russia
    Posts
    101

    Re: Assertion Errors...help!

    I can say nothing without your code, but I can recommend to look throw call stack, when application assert. To see MFC source strcore.cpp at line 519, I suspect, the bug get from DoDataExchange(...) method, that is called from UpdateData(TRUE), called from OnOK(), explicity, or implicity.


    Best regards
    Rodion Novoselov

  3. #3
    Join Date
    Apr 2001
    Posts
    30

    Re: Assertion Errors...help!

    I would be happy to include code to help you decipher the cause of the Assertion Failure, but there is so much code that I would not know what to include. There is no error or warning when I build the program, so there is no specific place for me to look for an error (besides the specified line in strcore.cpp). It would be great if you can suggest any parts of code that I should include.


  4. #4
    Join Date
    Apr 2001
    Posts
    43

    Re: Assertion Errors...help!

    Add the .cpp file of the main dialog class.


  5. #5
    Join Date
    Apr 2001
    Posts
    30

    Re: Assertion Errors...help!

    What do you mean by "add the .cpp file to the main dialog class?" I think the file strcore.cpp is an MFC file that is somehow automatically incorporated into all compiled applications. I just tried adding strcore.cpp to the source files in my project, and still the same thing is happening. I don't think this has anything to do with adding files and whatnot because I have not yet made any manual changes to the code besides delcaring variables for controls through ClassWizard. Anyone other suggestions, anyone?


  6. #6
    Join Date
    Apr 2001
    Posts
    43

    Re: Assertion Errors...help!

    You misunderstood me.
    What I meant was that you'll show us the .cpp of your dialog class, so we could have a look.



  7. #7
    Join Date
    Apr 2001
    Posts
    30

    Re: Assertion Errors...help!

    Oh, sorry about that. Here is the source for the main dialog (TreeWizardDlg.cpp)...

    // TreeWizardDlg.cpp : implementation file
    //

    #include "stdafx.h"
    #include "TreeWizard.h"
    #include "TreeWizardDlg.h"
    #include "DlgRoot.h"
    #include "DlgChild.h"

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

    /////////////////////////////////////////////////////////////////////////////
    // CAboutDlg dialog used for App About

    class CAboutDlg : public CDialog
    {
    public:
    CAboutDlg();

    // Dialog Data
    //{{AFX_DATA(CAboutDlg)
    enum { IDD = IDD_ABOUTBOX };
    //}}AFX_DATA

    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CAboutDlg)
    protected:
    virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
    //}}AFX_VIRTUAL

    // Implementation
    protected:
    //{{AFX_MSG(CAboutDlg)
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
    };

    CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
    {
    //{{AFX_DATA_INIT(CAboutDlg)
    //}}AFX_DATA_INIT
    }

    void CAboutDlg:oDataExchange(CDataExchange* pDX)
    {
    CDialog:oDataExchange(pDX);
    //{{AFX_DATA_MAP(CAboutDlg)
    //}}AFX_DATA_MAP
    }

    BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
    //{{AFX_MSG_MAP(CAboutDlg)
    // No message handlers
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()

    /////////////////////////////////////////////////////////////////////////////
    // CTreeWizardDlg dialog

    CTreeWizardDlg::CTreeWizardDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CTreeWizardDlg::IDD, pParent)
    {
    //{{AFX_DATA_INIT(CTreeWizardDlg)
    m_list = _T("");
    //}}AFX_DATA_INIT
    // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    }

    void CTreeWizardDlg:oDataExchange(CDataExchange* pDX)
    {
    CDialog:oDataExchange(pDX);
    //{{AFX_DATA_MAP(CTreeWizardDlg)
    DDX_Control(pDX, IDC_TREE1, m_tree);
    DDX_LBString(pDX, IDC_LIST1, m_list);
    //}}AFX_DATA_MAP
    }

    BEGIN_MESSAGE_MAP(CTreeWizardDlg, CDialog)
    //{{AFX_MSG_MAP(CTreeWizardDlg)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()

    /////////////////////////////////////////////////////////////////////////////
    // CTreeWizardDlg message handlers

    BOOL CTreeWizardDlg::OnInitDialog()
    {
    CDialog::OnInitDialog();

    // Add "About..." menu item to system menu.

    // IDM_ABOUTBOX must be in the system command range.
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
    CString strAboutMenu;
    strAboutMenu.LoadString(IDS_ABOUTBOX);
    if (!strAboutMenu.IsEmpty())
    {
    pSysMenu->AppendMenu(MF_SEPARATOR);
    pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    }
    }

    // Set the icon for this dialog. The framework does this automatically
    // when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE); // Set big icon
    SetIcon(m_hIcon, FALSE); // Set small icon

    // TODO: Add extra initialization here

    return TRUE; // return TRUE unless you set the focus to a control
    }

    void CTreeWizardDlg::OnSysCommand(UINT nID, LPARAM lParam)
    {
    if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    {
    CAboutDlg dlgAbout;
    dlgAbout.DoModal();
    }
    else
    {
    CDialog::OnSysCommand(nID, lParam);
    }
    }

    // If you add a minimize button to your dialog, you will need the code below
    // to draw the icon. For MFC applications using the document/view model,
    // this is automatically done for you by the framework.

    void CTreeWizardDlg::OnPaint()
    {
    if (IsIconic())
    {
    CPaintDC dc(this); // device context for painting

    SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

    // Center icon in client rectangle
    int cxIcon = GetSystemMetrics(SM_CXICON);
    int cyIcon = GetSystemMetrics(SM_CYICON);
    CRect rect;
    GetClientRect(&rect);
    int x = (rect.Width() - cxIcon + 1) / 2;
    int y = (rect.Height() - cyIcon + 1) / 2;

    // Draw the icon
    dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
    CDialog::OnPaint();
    }
    }

    // The system calls this to obtain the cursor to display while the user drags
    // the minimized window.
    HCURSOR CTreeWizardDlg::OnQueryDragIcon()
    {
    return (HCURSOR) m_hIcon;
    }




    And if this isn't enough, here's TreeWizard.cpp...


    // TreeWizard.cpp : Defines the class behaviors for the application.
    //

    #include "stdafx.h"
    #include "TreeWizard.h"
    #include "TreeWizardDlg.h"

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

    /////////////////////////////////////////////////////////////////////////////
    // CTreeWizardApp

    BEGIN_MESSAGE_MAP(CTreeWizardApp, CWinApp)
    //{{AFX_MSG_MAP(CTreeWizardApp)
    // NOTE - the ClassWizard will add and remove mapping macros here.
    // DO NOT EDIT what you see in these blocks of generated code!
    //}}AFX_MSG
    ON_COMMAND(ID_HELP, CWinApp::OnHelp)
    END_MESSAGE_MAP()

    /////////////////////////////////////////////////////////////////////////////
    // CTreeWizardApp construction

    CTreeWizardApp::CTreeWizardApp()
    {
    // TODO: add construction code here,
    // Place all significant initialization in InitInstance
    }

    /////////////////////////////////////////////////////////////////////////////
    // The one and only CTreeWizardApp object

    CTreeWizardApp theApp;

    /////////////////////////////////////////////////////////////////////////////
    // CTreeWizardApp initialization

    BOOL CTreeWizardApp::InitInstance()
    {
    AfxEnableControlContainer();

    // Standard initialization
    // If you are not using these features and wish to reduce the size
    // of your final executable, you should remove from the following
    // the specific initialization routines you do not need.

    #ifdef _AFXDLL
    Enable3dControls(); // Call this when using MFC in a shared DLL
    #else
    Enable3dControlsStatic(); // Call this when linking to MFC statically
    #endif

    CTreeWizardDlg dlg;
    m_pMainWnd = &dlg;
    int nResponse = dlg.DoModal();
    if (nResponse == IDOK)
    {
    // TODO: Place code here to handle when the dialog is
    // dismissed with OK
    }
    else if (nResponse == IDCANCEL)
    {
    // TODO: Place code here to handle when the dialog is
    // dismissed with Cancel
    }

    // Since the dialog has been closed, return FALSE so that we exit the
    // application, rather than start the application's message pump.
    return FALSE;
    }




    Good luck understanding it =)


  8. #8
    Join Date
    Apr 2001
    Posts
    43

    Re: Assertion Errors...help!

    Can't find anything wrong.
    Send me your project, if you like, so I could have a closer look.

    xen0x@netvision.net.il




  9. #9
    Join Date
    Apr 2001
    Posts
    43

    Re: Assertion Errors...help!

    I sent you the solution via email. If from some reason you didn't get it, let me know, so I could repeat myself.


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured