• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 线程的全局函数能成为一个类的成员函数吗?

线程的全局函数能成为一个类的成员函数吗?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了多线程全局变量,全局线程,成员函数和全局函数,多线程调用同一函数,线程回调函数等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 线程的全局函数能成为一个类的成员函数吗?
描述:

我定义了一个创建线程的函数:
int CrtThread()
{
hComWatchThread=CreateThread((LPSECURITY_ATTRIBUTES) NULL,//安全属性
0,//初始化线程栈的大小,缺省为与主线程大小相同
CommProc, //线程的全局函数
0, //此处传入了主框架的句柄
0,
&pThread );
if(hComWatchThread!=NULL)
{
SuspendThread(hComWatchThread);//成功创建则挂起
return 0;
}
else
{
return 1;
}
}
又定义了全局函数DWORD WINAPI CommProc( LPVOID pParam  );
现在我希望能够将这两个函数都定义为一个类CbDrv的成员函数,便将此两个函数的生命都加入了类的定义中(.h文件)
int CrtThread();
DWORD WINAPI CommProc( LPVOID pParam  );
然后在类的成员函数实现文件(.CPP)文件中实现了这两个函数
int CbDrv::CrtThread();
DWORD WINAPI CbDrv::CommProc( LPVOID pParam  );
之后在编译时出错,在以下函数的 (CommProc, //线程的全局函数)处报错
hComWatchThread=CreateThread((LPSECURITY_ATTRIBUTES) NULL,//安全属性
0,//初始化线程栈的大小,缺省为与主线程大小相同
CommProc, //线程的全局函数
0, //此处传入了主框架的句柄
0,
&pThread );
报错的内容为'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *)(void *)'
难道线程的全局函数不能是一个类的成员函数吗,请教各位了?


解决方案1:

static

解决方案2:

这样子写啊
class DDN
{
public:
  bool sen(char a);
  static void  callback(LPVOID param);
  void mcallback(...);
}
//静态函数
void  DDN::callback(LPVOID param);
{
  DDN* pDDN=(DDN*)param;
  return pDDN->mcallback(...);
}
//成员函数
void DDN::mcallback(...)
{
...
//这里可以访问成员变量。
}
这篇文章对你可能有些帮助
http://www.flounder.com/callbacks.htm

解决方案3:

static


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 线程访问外部变量问题
  • 几个线程同时访问(读)一个全局资源有没有问题?
  • 工作线程之间是否可以通信,如何通信,别跟我说用全局变量哦
  • 在三个线程中同时调用一全局函数,会发生什么情况?
  • 多线程如何共用一个变量?
  • 多线程问题!一个BOOL变量的传递或不传递任何变量,怎么搞?
  • 关于类内线程访问成员变量的问题?
  • 为啥I的辅助线程只检测了全局变量一次啊?高手们帮帮忙,一定给分
  • 关于多线程,全局变量,同步的问题?
  • 线程存取全局变量控制的问题

相关文章

  • 2017-06-04 COleDropTarget扩展类的注册(Register)错误?如何解决?
  • 2017-06-04 视频监控不用视频卡可以吗?
  • 2017-06-04 诚聘软件开发工程师(上海)
  • 2017-06-04 关于接口的提问
  • 2017-06-04 有谁写过OLEforprocesscontrol,可否给个例子
  • 2017-06-05 MFC中使用水晶报表的问题。。急急急
  • 2017-06-05 哪位知道毫秒级的计时方法,我想统计一次运算所花的时间,但是时间不到一秒。
  • 2017-06-05 在对话框显示出来之后的事件或虚函数是什么?
  • 2017-06-05 关于XP下DLL注入进程问题
  • 2017-06-04 ActiveX高手请关注,呵呵关于ActiveX版本更新

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 请教个位,如何在ATL中使用MFC
    • 奇怪,vc做的控件,在vc下不能用,在vb下反而能用。
    • idl文件和odl文件的作用有什么不同?
    • 请问线程建立的问题!!
    • 线程里New操作分配的存储空间,用的是线程的堆栈吗?
    • 急求救:请用VC做过office插件的兄弟们过来帮帮忙,好几个难解的问题啊
    • 谁有获得硬盘序列号的Dll,请给个好吗,谢谢。
    • 关于动态释放COM组件(DLL模式)请教,各位大侠指点指点哈,小弟感激中。。。
    • excel插件编译中的问题?
    • 如何编写如3721的那种ActiveX控件,当用户第一次浏览网页时提示是否安装,安装以后下次就不再提示,并且可以在网页上直接调用其功能?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有