Hi everybody,
I stumbled on a little error that is confusing.
My program uses tabs to control two dialog boxes each having their own classes and functions. I instantiate them as follows:
Code:
if(GetCurSel() == 0) {
if (theDialog1 != NULL) {
theDialog1->SetFocus();
}
else {
theDialog1 = new dialog1;
theDialog1->Create(IDD_DIALOG1,this);
}
I also have some code that listens to messages from the dialog box and sets theDialog1 pointer appropriately:
Code:
ON_MESSAGE(WM_USER_DIALOG_DESTROYED, OnDialogDestroyed)
LRESULT tabControl::OnDialogDestroyed (WPARAM wParam, LPARAM lParam)
{
theDialog1 = NULL;
return 0;
}
In my Dialog1 class, I have this code for sending the message to the parent that instantiated an instance of this class when someone clicks on the ESC key:
Code:
// dialog1 message handlers
void dialog1::PostNcDestroy()
{
CDialog::PostNcDestroy();
CWnd* pWindow = GetParent();
//AfxGetMainWnd()->
pWindow->SendMessage (WM_USER_DIALOG_DESTROYED, 0, 0);
delete this;
}
void dialog1::OnCancel()
{
DestroyWindow();
}
Alas everytime the program reaches the line CWnd* pWindow = GetParent();
it crashes and gives me a debug assertion failed error.
Can anybody look at the code and let me know what I am doing wrong. Also if I use AfxGetMainWnd()-> it works fine but the class that instantiated the dialog window does not seem to get the message properly. I am thinking it's because it is not the main window. Can someone confirm this. Thanks
Amish