急求解决这个问题:illegal reference to data member 'CM_TestDlg::m_intNum' in a static member function
弄了好长时间一直出错,就是程序编译没有问题,但运行后就提示“遇到问题需要关闭”,但尝试着修改也不行,只好拿到这里来让各位老师给看下了,先谢了!
我的程序是这样的:
#define StartSimuThreadMSG WM_USER+110
class 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 };
CListBoxm_ListShow;
...
DWORDm_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;
}
请问为什么程序总是运行后出错要求关闭呢?该怎么解决呢?
非常感谢!
[解决办法]
//创建挂起线程SimulinkThread
pWorkSimulinkThread=AfxBeginThread(SimulinkThread,0,THREAD_PRIORITY_HIGHEST-
1,0,CREATE_SUSPENDED,NULL);
第二个参数应该是this吧