关于销毁非模态对话框的有关问题!求解!

关于销毁非模态对话框的问题!!求解!!!!!!!
新建一个工程(测试用),基于DIALOG的一个新工程,工程中有一个按钮,点击这个按钮,打开一个非模态的dialog,非模态dialog中哟一个按钮用来销毁非模态dialog,非模态dialog重载了2个函数
void CSingleTable::PostNcDestroy()
{
// TODO: Add your specialized code here and/or call the base class
// CDialogEx::PostNcDestroy();
delete this;

}
void CSingleTable::OnCancel()
{
// TODO: Add your specialized code here and/or call the base class
DestroyWindow();
// CDialogEx::OnCancel();
}

void CSingleTable::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here
((CdemoTestDlg *)dlgParent )->gotoTable("0");
ShowWindow(SW_HIDE);
OnCancel();
}
点击非模态dialog上面的按钮执行OnBnClickedButton1(),一点问题都没有,点击非模态dialog上还加载了一个FLASH,窗口可以正常销毁

问题来了,当我在FSCommandShockwaveflash1函数中销毁的时候就会报错,FSCommandShockwaveflash1是FLASH跟窗体的交互函数,点击FLASH中的按钮来销毁就不行,但是点击窗体上面的按钮来销毁就一点问题没有
不知道是何解,报的错误如下

关于销毁非模态对话框的有关问题!求解!
关于销毁非模态对话框的有关问题!求解!
点击FLASH的按钮来销毁的时候并不是每次都会报错,重复几次就报错了,但是用窗体上面的按钮来销毁的话就永远不会出错
BEGIN_EVENTSINK_MAP(CSingleTable, CDialogEx)
ON_EVENT(CSingleTable, IDC_SHOCKWAVEFLASH1, 150, CSingleTable::FSCommandShockwaveflash1, VTS_BSTR VTS_BSTR)
END_EVENTSINK_MAP()


void CSingleTable::FSCommandShockwaveflash1(LPCTSTR command, LPCTSTR args)
{
// TODO: Add your message handler code here
if (0 == strcmp("gotoMain", command))//销毁非模态对话框
{
((CdemoTestDlg *)dlgParent )->gotoTable("0");
ShowWindow(SW_HIDE);
OnCancel();
}
}

------解决方案--------------------
看看FSCommandShockwaveflash1是其他线程,还是运行在界面线程中
如果不是一个,用PostMessage(WM_QUIT/WM_CLOSE)之类的试试

个人理解:你这样操作,相当于flash控件还活着的时候,他的根死掉了,在函数返回后的处理中又用到根的时候,就出错了
------解决方案--------------------
用PostMessage给非模态窗口发个消息,通知非模态窗口关闭

你的flash窗口能不能用spy++抓到窗口句柄?