in DLGCORE.CPP. That returns 0 before entering assembly code which results
Thanks.
How do I establish the backtrace or stacktrace?
I have the following in main class:
TESTDlg test; //works
test.SetTextData(testFile); //works
if (IDOK != test.DoModal()) // EXCEPTION AT POINT <***** EXCEPTION *****>
SEE BELOW
return FALSE;
Contents of TESTDlg.cpp:
// TESTDlg.cpp : implementation file
//
#include "stdafx.h"
#include "TESTDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// TESTDlg dialog
TESTDlg::TESTDlg(CWnd* pParent /*=NULL*/)
: CDialog(TESTDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(TESTDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void TESTDlg::SetTextData(CDataFile& file)
{
m_title = file.read_string(); //WORKS
m_Iagree = file.read_string(); //WORKS
m_text= file.read_string(); //WORKS
}
void TESTDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX); //WORKS
//{{AFX_DATA_MAP(TESTDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(TESTDlg, CDialog)
//{{AFX_MSG_MAP(TESTDlg)
ON_BN_CLICKED(IDC_CHECK1, OnCheck1) // never reaches this point -
exception beforehand
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// TESTDlg message handlers
BOOL TESTDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetWindowText(m_title);
CWnd* pWnd = GetDlgItem(IDC_RICHEDIT1);
pWnd->SetWindowText(m_text);
pWnd = GetDlgItem(IDC_CHECK1);
pWnd->SetWindowText(m_Iagree);
pWnd->SetFocus();
// <***** EXCEPTION *****> when BREAKPOINT IS at "return TRUE" below
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void TESTDlg::OnCheck1() // NEVER REACHES THIS POINT
{
CWnd* pWnd = GetDlgItem(IDOK);
if (IsDlgButtonChecked(IDC_CHECK1)) {
pWnd->EnableWindow(TRUE);
}
else {
pWnd->EnableWindow(FALSE);
}
}
"Joseph M. Newcomer" <newcomer@flounder.com> wrote in message
news:rako831ac8o889mcqi7hnbmnjfm6al2q21@4ax.com...
So what is the backtrace?
Note that you should not write if-tests on one line, it makes them hard
to debug. For
example, we don't know if the problem came from the DoModal or the
return, since they are
both on the same line. Without the stack trace it is impossible to even
guess what is
going wrong. The fact that the problems are most likely in the TestDlg
code, but none of
this code is shown, adds to the problem of what to guess at.
joe
On Wed, 4 Jul 2007 23:56:02 +0100, "ColinG" <csg@mine.com> wrote:
Hi,
I have a constructor in TESTDlg.h declared as below:
class TESTDlg : public CDialog
{
// Construction
public:
TESTDlg(CWnd* pParent = NULL); // standard constructor
Constructor in TESTDlg.cpp is defined as below:
TESTDlg::TESTDlg(CWnd* pParent /*=NULL*/)
: CDialog(TESTDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(TESTDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
However, when I do:
TESTDlg test;
if (IDOK != test.DoModal()) return FALSE; \\<---------------- results in
unhandled exception
in my main class, I receive unhandled exception (KERNEL32.DLL). This has
worked fine in the past so I do not understand why I am having problems.
Thanks.
Colin
Joseph M. Newcomer [MVP]
email: newcomer@flounder.com
Web: http://www.flounder.com
MVP Tips: http://www.flounder.com/mvp_tips.htm