HWND hwnd;
static UINT zzy(LPVOID pParam);//以上是在头文件中定义的;UINT CShutdownDlg::zzy(LPVOID pParam)
{ double i=0;
for(i;i<99999999;i++)
{
}
AfxMessageBox("工作者线程");
::PostMessage(hwnd,WM_QUIT,0,0);
return 0;
}//线程的执行体
BOOL CShutdownDlg::OnInitDialog()
{
CDialog::OnInitDialog(); hwnd=GetSafeHwnd();
AfxBeginThread(zzy,hwnd,THREAD_PRIORITY_NORMAL);//调用线程执行
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
错误信息是说句柄,不可以应用在一个静态的函数中,好象是这么解释吧
error C2597: illegal reference to data member 'CShutdownDlg::hwnd' in a static member function
高手帮忙!!!!小弟谢谢
static UINT zzy(LPVOID pParam);//以上是在头文件中定义的;UINT CShutdownDlg::zzy(LPVOID pParam)
{ double i=0;
for(i;i<99999999;i++)
{
}
AfxMessageBox("工作者线程");
::PostMessage(hwnd,WM_QUIT,0,0);
return 0;
}//线程的执行体
BOOL CShutdownDlg::OnInitDialog()
{
CDialog::OnInitDialog(); hwnd=GetSafeHwnd();
AfxBeginThread(zzy,hwnd,THREAD_PRIORITY_NORMAL);//调用线程执行
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
错误信息是说句柄,不可以应用在一个静态的函数中,好象是这么解释吧
error C2597: illegal reference to data member 'CShutdownDlg::hwnd' in a static member function
高手帮忙!!!!小弟谢谢
在头文件中将这一句去除::PostMessage(hwnd,WM_QUIT,0,0);
这一句改为PostQuitMessage(0);
static UINT zzy(LPVOID pParam);//以上是在头文件中定义的;UINT CShutdownDlg::zzy(LPVOID pParam)
{ CShutdownDlg* pThis=(CShutdownDlg*)pParam;
double i=0;
for(i;i<99999999;i++)
{
}
AfxMessageBox("工作者线程");
::PostMessage(pThis->GetSafeHwnd(),WM_QUIT,0,0);
return 0;
}//线程的执行体
BOOL CShutdownDlg::OnInitDialog()
{
CDialog::OnInitDialog();
AfxBeginThread(zzy,(PVOID)this,THREAD_PRIORITY_NORMAL);//调用线程执行
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
定义为全局变量就可以了
UINT CShutdownDlg::zzy(LPVOID pParam)
{ double i=0;
for(i;i<99999999;i++)
{
}
AfxMessageBox("工作者线程");
::PostMessage(hwnd,WM_QUIT,0,0);
return 0;
}//线程的执行体
--------------------------------------
你这样定义有点矛盾,头文件里声明的函数改为:
UINT zzy(LPVOID pParam);
实现文件的函数定义改为:UINT zzy(LPVOID pParam)
{ double i=0;
for(i;i<99999999;i++)
{
}
AfxMessageBox("工作者线程");
::PostMessage((HWND)pParam,WM_QUIT,0,0);
return 0;
}//线程的执行体
你把::PostMessage(hwnd,WM_QUIT,0,0);
这一句改为PostQuitMessage(0);你的错误提示就没有了!