CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  进程/线程/DLL

可否在类中创建线程

楼主aw325(爱情甜蜜蜜)2004-09-03 11:50:21 在 VC/MFC / 进程/线程/DLL 提问

创建辅助线程时,AfxBeginThread所调用的函数必须是全局函数吗?  
  我现在想在一个类中写一个方法,这个方法我想要创建一个辅助线程,  
  而我在书上看到AfxBeginThread所调用的函数需要是全局函数。我的  
  这个想法能否实现,怎样实现? 问题点数:50、回复次数:16Top

1 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2004-09-03 12:03:38 得分 0

可以,类型的静态成员函数也行。Top

2 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2004-09-03 12:05:08 得分 20

class   CUserClass  
  {  
  ....  
  static   UINT   BmpToJpgThread(LPVOID   param);  
   
  ....  
  }  
   
  void   CUserClass::BeginThread  
  {  
  AfxBeginThread(BmpToJpgThread,....);  
  }  
  Top

3 楼opentuxedo(借哥哥的号来试试)回复于 2004-09-03 12:05:26 得分 15

可以把线程函数定义为static   func(void*   p);  
  如果要使用类中的成员把类通过参数p传给函数。  
  要用C++就必须忍受奇傻无比的规则。C#中就没这种问题。Top

4 楼LongLongAgoImBoy(ThereIsAMe)回复于 2004-09-03 12:08:59 得分 10

比如在类中声明一个静态成员函数:  
  static   DWORD   ThreadFunctionProc(LPVOID   pParam);  
  个人理解:其实我觉得静态成员函数和全局函数都差不多的,你在静态成员函数中访问变量的话,也需要有全局变量或者是静态变量。  
  这个纯属个人理解,希望不要误人子弟。Top

5 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2004-09-03 12:47:05 得分 0

这里的静态成员函数与全局函数的意义应该是差不多的Top

6 楼azs()回复于 2004-09-03 12:54:46 得分 5

在静态成员函数中访问变量的话,也需要有全局变量或者是静态变量。  
  //////////////////////////////////////////  
  传参数也可以访问,不是吗  
   
  静态成员函数与全局函数的差别就相当于你应用了名字空间,避免污染全局名字空间,  
  特别是private可以限定它的调用仅限于本类型、protected可以限定它的调用仅限于本类型及派生类型,也就是定义了它的作用域Top

7 楼aw325(爱情甜蜜蜜)回复于 2004-09-03 13:47:54 得分 0

class   CUserClass  
  {  
  ....  
  static   UINT   BmpToJpgThread(LPVOID   param);  
   
  ....  
  }  
   
  void   CUserClass::BeginThread  
  {  
  AfxBeginThread(BmpToJpgThread,....);  
  }  
  =============  
  BmpToJpgThread这个函数可不可以没有参数,一定要用LPVOID类型的参数吗?掉用的地方如果要写全应该怎么写。Top

8 楼aw325(爱情甜蜜蜜)回复于 2004-09-03 14:00:09 得分 0

在VC中编译多线程程序需要特殊设置吗?为什么提示如下信息:  
  fatal   error   C1001:   INTERNAL   COMPILER   ERROR  
                  (compiler   file   'msc1.cpp',   line   1786)    
                    Please   choose   the   Technical   Support   command   on   the   Visual   C++    
                    Help   menu,   or   open   the   Technical   Support   help   file   for   more   information  
  Error   executing   cl.exe.Top

9 楼azs()回复于 2004-09-03 14:05:36 得分 0

使用多线程库代替单线程库  
  ML换成MD  
  MLd换成MDd  
  Top

10 楼aw325(爱情甜蜜蜜)回复于 2004-09-03 14:08:39 得分 0

楼上英雄,我不明白“ML换成MD   MLd换成MDd”具体怎么弄?Top

11 楼azs()回复于 2004-09-03 14:09:38 得分 0

编译指示字Top

12 楼aw325(爱情甜蜜蜜)回复于 2004-09-03 14:11:29 得分 0

请step   by   step指给我,不懂。没用过。Top

13 楼azs()回复于 2004-09-03 14:11:57 得分 0

菜单:project(工程)  
  子菜单:setting(设置)  
  对话框:c/c++  
  编辑框:project   optionsTop

14 楼aw325(爱情甜蜜蜜)回复于 2004-09-03 14:14:28 得分 0

我那里面没有MLd也没有MDd,是不是要加上MDd呀?  
  里面有MD(原来就有)。  
  我没用过VC做东西,但是接手别人的Vc程序,在修改。Top

15 楼aw325(爱情甜蜜蜜)回复于 2004-09-03 14:17:38 得分 0

还是下面的错误信息:  
  MainFrm.cpp(1281)   :   fatal   error   C1001:   INTERNAL   COMPILER   ERROR  
                  (compiler   file   'msc1.cpp',   line   1786)    
                    Please   choose   the   Technical   Support   command   on   the   Visual   C++    
                    Help   menu,   or   open   the   Technical   Support   help   file   for   more   informationTop

16 楼aw325(爱情甜蜜蜜)回复于 2004-09-03 15:19:50 得分 0

解决了.Top

相关问题

  • 创建线程!!!
  • 创建线程
  • 【求助】在创建进程的时候,可否规定该进程的线程数啊?
  • 如何给类的函数创建线程?
  • 能不能在类中创建子线程?????
  • 请教如何在类中用createthread创建线程
  • 问个关于类中创建static函数线程的问题
  • 主线程如何共享工作者线程中创建的CRecordset类和CDatabase类?
  • 用CreateThread(...)创建线程...?
  • 如何创建多线程

关键词

  • visual c++
  • 函数
  • cpp
  • bmptojpgthread
  • 全局
  • cuserclass
  • 变量
  • 静态成员
  • 调用
  • mdd

得分解答快速导航

  • 帖主:aw325
  • DentistryDoctor
  • opentuxedo
  • LongLongAgoImBoy
  • azs

相关链接

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

广告也精彩

反馈

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