CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  进程/线程/DLL

线程的创建,大家帮忙看看,是什么原因

楼主clinic(Charles)2005-04-03 20:11:50 在 VC/MFC / 进程/线程/DLL 提问

BOOL   bend=FALSE;  
  UINT   CThreDlg::ThreadFunction(LPVOID   pParam)  
  {  
  while(!bend){  
  Beep(100,100);  
                  Sleep(1000);  
  }  
  return   0;  
  }  
   
  CWinThread   *pThread;  
  HWND   hWnd;  
   
  BOOL   CThreDlg::OnInitDialog()    
  {  
  CDialog::OnInitDialog();  
   
  //   TODO:   Add   extra   initialization   here  
  hWnd   =   GetSafeHwnd();  
          pThread   =   AfxBeginThread(ThreadFunction,   hWnd);  
          pThread->m_bAutoDelete   =   FALSE;  
  return   TRUE;     //   return   TRUE   unless   you   set   the   focus   to   a   control  
                              //   EXCEPTION:   OCX   Property   Pages   should   return   FALSE  
  }  
   
  void   CThreDlg::OnCancel()    
  {  
  //   TODO:   Add   your   control   notification   handler   code   here  
  bend=TRUE;//改变变量,线程结束  
          WaitForSingleObject(pThread->m_hThread,INFINITE);//等待线程结束  
          delete   pThread;//删除线程  
  }  
   
  编译不通过:  
   
  error   C2665:   'AfxBeginThread'   :   none   of   the   2   overloads   can   convert   parameter   1   from   type   'unsigned   int   (void   *)'  
   
  找半天找不出来,郁闷了... 问题点数:20、回复次数:4Top

1 楼steedhorse(晨星)回复于 2005-04-03 20:21:03 得分 0

线程函数是静态的么?Top

2 楼steedhorse(晨星)回复于 2005-04-03 20:22:13 得分 0

线程函数必须是静态的,如果要访问类的成员,可以把对象的this指针传给线程函数的void指针参数,到函数内部再使用指针转换恢复出本来的类型。Top

3 楼steedhorse(晨星)回复于 2005-04-03 20:24:06 得分 20

至于为什么必须是静态的,因为AfxBeginThread函数的原型声明中所声明的就不是类的成员函数,注意类的非静态成员函数和一般的函数在调用机制上就不一样(多一个隐含的this指针参数),所以,无法把一个类的成员函数赋给一个一般的函数指针。Top

4 楼clinic(Charles)回复于 2005-04-03 20:39:35 得分 0

我把函数改成静态的,好了  
   
  谢谢!~~~Top

相关问题

  • 创建线程!!!
  • 创建线程
  • 创建线程后卫什么关闭了线程句柄,线程还是可以运行!
  • 创建的线程为什么没有用??!!
  • 创建一个新线程时为什么有错误
  • 线程创建窗体,为什么失败???
  • 创建的线程中创建对话框为什么就报错?
  • 请教高手:使用AfxBeginThread创建线程,为什么在线程退出时会有内存泄漏?
  • 用CreateThread(...)创建线程...?
  • 如何创建多线程

关键词

  • 函数
  • 线程
  • 指针
  • cthredlg
  • 静态
  • afxbeginthread
  • pthread
  • 成员
  • 类
  • hwnd

得分解答快速导航

  • 帖主:clinic
  • steedhorse

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo