CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
【经验总结】不能实施并行处理的情况 浅谈并行编程中的任务分解模式
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  界面

创建线程问题。

楼主alanyanyi(张浩南)2002-12-10 13:53:22 在 VC/MFC / 界面 提问

我用        
   
   
  m_haThread=CreateThread(NULL,0,MyDo,&m_a,0,&ThreadID);  
   
  为什么有错误?????请教。 问题点数:50、回复次数:8Top

1 楼ruihuahan(飞不起来的笨鸟)回复于 2002-12-10 14:13:56 得分 5

什么错误?注意线程函数有固定的格式。Top

2 楼ccck1111(如风)回复于 2002-12-10 14:59:23 得分 10

HANDLE   CreateThread(LPSECURITY_ATTRIBUTES   lpThreadAttributes,  
  DWORD   dwStackSize,LPTHREAD_START_ROUTINE   lpStartAddress,  
  LPVOID   lpParameter,DWORD   dwCreationFlags,LPDWORD   lpThreadId);  
  这是原型,具体见MSDNTop

3 楼seeclear(看得清楚)回复于 2002-12-10 15:31:52 得分 5

至少把错误提示贴出来,大家才好分析嘛。Top

4 楼alanyanyi(张浩南)回复于 2002-12-10 16:50:36 得分 0

我的语句  
  m_hGreenThread=CreateThread(NULL,0,BallMove,m_GreenBall,0,&ThreadID);  
   
  Compiling...  
  moveDlg.cpp  
  C:\Documents   and   Settings\Administrator\My   Documents\study\move\moveDlg.cpp(238)   :   error   C2664:   'CreateThread'   :   cannot   convert   parameter   3   from   'unsigned   long   (void   *)'   to   'unsigned   long   (__stdcall   *)(void   *)'  
                  None   of   the   functions   with   this   name   in   scope   match   the   target   type  
  Error   executing   cl.exe.  
   
  move.exe   -   1   error(s),   0   warning(s)  
   
  我自己的函数是   DWORD   WINAPI   CMoveDlg::BallMove(LPVOID   lpparameter)  
   
  怎么办?什么错误?Top

5 楼alanyanyi(张浩南)回复于 2002-12-10 16:59:24 得分 0

我是在   WIN2000下,有影响吗?Top

6 楼yamei2000(闭关中)回复于 2002-12-10 18:38:38 得分 30

1.CMoveDlg::BallMove(LPVOID   lpparameter)换成:  
      BallMove(LPVOID   lpparameter)的情态函数;  
    class     CMoveDlg  
    {  
      static   void   BallMove(LPVOID   lpparameter);  
      }  
  2.m_hGreenThread=CreateThread(NULL,0,BallMove,m_GreenBall,0,&ThreadID);换为:  
  m_hGreenThread=AfxBeginThread(NULL,0,BallMove,m_GreenBall,0,&ThreadID);Top

7 楼alanyanyi(张浩南)回复于 2002-12-10 22:40:50 得分 0

谢谢   ,我改过来了。  
   
  但是,是没有错误了。为什么我在执行的时候,看不到BallMove执行呢?Top

8 楼yamei2000(闭关中)回复于 2002-12-11 18:05:45 得分 0

你把m_hGreenThread=AfxBeginThread(NULL,0,BallMove,m_GreenBall,0,&ThreadID);改为:  
  m_hGreenThread=AfxBeginThread(BallMove,m_GreenBall,0,&ThreadID);  
  然后在函数BallMove()处设置断点,然后按F5,AA接着按F11一步步操作,应该能看的到它在执行着,呵呵Top

相关问题

  • 创建线程!!!
  • 创建线程
  • 用CreateThread(...)创建线程...?
  • 如何创建多线程
  • 请问创建线程时,怎样给线程传递参数??
  • 一个在主线程中的子线程能否在线程函数中创建自己的子线程呢?
  • 当前线程A创建另一个线程B后,怎样让线程A等待直到线程B完成?
  • 在vc中动态创建线程
  • 在多线程中如何创建CSOCKET???
  • win32 sdk 编程如何创建线程?

关键词

  • 函数
  • 执行
  • null
  • ballmove
  • greenball
  • hgreenthread
  • cmovedlg
  • threadid
  • createthread
  • lpvoid lpparameter

得分解答快速导航

  • 帖主:alanyanyi
  • ruihuahan
  • ccck1111
  • seeclear
  • yamei2000

相关链接

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

广告也精彩

反馈

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