弄了好长时间一直出错,就是程序编译没有问题,但运行后就提示“遇到问题需要关闭”,但尝试着修改也不行,只好拿到这里来让各位老师给看下了,先谢了!
我的程序是这样的:
#define StartSimuThreadMSG  WM_USER+110class CM_TestDlg : public CDialog
{
// Construction
public:
//查询线程创建
static UINT IntCheckThread(void *param);
CWinThread *pCheckThread; //仿真线程创建
static UINT SimulinkThread(void *param);
CWinThread *pWorkSimulinkThread; void ShowInfo(CString str); //显示// Dialog Data
//{{AFX_DATA(CM_TestDlg)
enum { IDD = IDD_M_TEST_DIALOG };
CListBox m_ListShow;
...
DWORD m_intNum; //m_intNum为编辑框控件关联的变量
//}}AFX_DATA...
protected:
// Generated message map functions
//{{AFX_MSG(CM_TestDlg)
... afx_msg void OnStartSimuThread(WPARAM wParam,LPARAM lParam); //消息定义 //}}AFX_MSG
DECLARE_MESSAGE_MAP()
...
}BEGIN_MESSAGE_MAP(CM_TestDlg, CDialog)
//{{AFX_MSG_MAP(CM_TestDlg)
...
ON_MESSAGE(StartSimuThreadMSG,OnStartSimuThread) //消息映射 //}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CM_TestDlg::OnStart() 
{
...
          //-------创建事件查询线程-------//
          pCheckThread=AfxBeginThread(IntCheckThread,this,THREAD_PRIORITY_HIGHEST);
...}//------查询线程函数---------//
UINT CM_TestDlg::IntCheckThread(void *param)
{
CM_TestDlg *dlg=(CM_TestDlg *) param; 
dlg->GetParent();   if(bThreadflag)
{
//---------开辟仿真线程--------//
AfxGetMainWnd()->SendMessage(StartSimuThreadMSG,0,0);
}
...
return 0;
}//-------创建线程-----//
void CM_TestDlg::OnStartSimuThread(WPARAM wParam,LPARAM lParam)
{
//创建挂起线程SimulinkThread
pWorkSimulinkThread=AfxBeginThread(SimulinkThread,0,THREAD_PRIORITY_HIGHEST-1,0,CREATE_SUSPENDED,NULL);

pWorkSimulinkThread->ResumeThread();
}//-------线程函数----//
UINT CM_TestDlg::SimulinkThread(void *param)
{
AfxMessageBox("仿真线程启动",MB_OK); CM_TestDlg *dlg=(CM_TestDlg *) param;  
dlg->GetParent();  //貌似有问题 CString str; str.Format("%d",dlg->m_intNum++);
dlg->ShowInfo(str); return 0;
}//--------显示--------//
void CM_TestDlg::ShowInfo(CString str)
{
m_ListShow.InsertString(m_ListShow.GetCount(),str); //str为被插入的内容指针
m_ListShow.SetCurSel(m_ListShow.GetCount()-1);
//m_ListShow是为ListBox控件关联的变量
return;
}请问为什么程序总是运行后出错要求关闭呢?该怎么解决呢?非常感谢!