-
May 23rd, 2001, 11:22 PM
#1
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.
-
May 24th, 2001, 01:46 AM
#2
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
-
May 24th, 2001, 06:57 PM
#3
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.
-
May 24th, 2001, 07:51 PM
#4
Re: Assertion Errors...help!
Add the .cpp file of the main dialog class.
-
May 24th, 2001, 10:16 PM
#5
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?
-
May 24th, 2001, 10:25 PM
#6
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.
-
May 24th, 2001, 10:38 PM
#7
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 =)
-
May 24th, 2001, 11:14 PM
#8
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
-
May 25th, 2001, 08:53 AM
#9
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
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|