我的教训,希望大家借鉴,
void CThreadDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CWinThread* pThread=AfxBeginThread(ThreadProc,GetSafeHwnd(),THREAD_PRIORITY_NORMAL);
}
UINT CThreadDlg::ThreadProc(LPVOID pParam)
{
MessageBox("线称");
return 0;
}
error C2665: 'AfxBeginThread' : none of the 2 overloads can convert parameter 1 from type 'unsigned int (void *)'
函数都已经在头文件中声明了,参数的错误吧,那么我这么调用可以么?
static UINT ThreadProc(LPVOID pParam) 在头文件中如果,不按照这样生命的话,就会出现上述的错误
为什么必须声名成静态的呢,不是很理解,请高手帮忙。
为什么线程的函数必须是一个全局的或者是静态的,
我理解的是在,在编译器进行编译的时候,就已经为线程的函数创建了一块存储的空间,它的存在贯穿程序
执行的全过程,以便在程序刚执行的时候,或者是在需要的时候 开启一个或多个线程,去完成特定的任务,
在我上面的代码。就是当按钮事件
触发的时候,才开启我自己的线程,去实现我制定的任务,请问上述理解有什么问题么,请高手解盘:)
正在猜足球彩票,就用盘口术语了:);