首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

急求解决这个有关问题:illegal reference to data member 'CM_TestDlg:m_intNum' in a static me

2012-02-23 
急求解决这个问题:illegal reference to data member CM_TestDlg::m_intNum in a static member functio

急求解决这个问题: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吧

热点排行