救命啊,error C2440: 'type cast': cannot convert from '' to 'void (__stdcall *)

浮一大白开水 2010-12-08 06:34:16
我定义了一个类,需要在类中使用定时器,由于没有使用MFC,因此使用的windows底层接口。

#include <winsock2.h>
#include <windows.h>
#include <queue>
#include <stdio.h>

using namespace std;

class CVCTComTask
{
public:
int AudmComTask();
public:
HANDLE m_MsgHandle;
HANDLE m_tmHandle;
int m_TpaRecvTimer;
int m_TpaHandShakeTimer;
int m_TpaSendAddrTimer;
public:
DWORD WINAPI winVctMsgTask(LPVOID lpParameter);
int TimerTask();
int RecvTimer();
int SendTimer();
int HartTimer();
int ReceiveMessage(MESSAGE& NewMsg);
};


//CVCTComTask.cpp--------------------------------------
int CVCTComTask::AudmComTask()
{
m_MsgHandle = CreateThread(NULL, 0,(LPTHREAD_START_ROUTINE )VctMsgTask,NULL, 0, NULL);
m_tmHandle = CreateThread(NULL, 0,(LPTHREAD_START_ROUTINE )TimerTask,NULL, 0, NULL);

return 1;
}

int CVCTComTask::VctMsgTask()
{
MESSAGE stMsg;
int flag = 0;
while (1)
{
flag = 0;
flag = ReceiveMessage(stMsg);
if (1 == flag)
{
continue;
}

//processMsg(stMsg);
memset(&stMsg, 0, sizeof(stMsg));
Sleep(1);
}
return 0;
return 1;
}

int CVCTComTask::TimerTask()
{

MSG msg;
printf("Start Get Timer!!!\n");
/* 收包 定时器*/

m_TpaRecvTimer = SetTimer(NULL, 1, 50, (TIMERPROC)RecvTimer);

m_TpaSendAddrTimer = SetTimer(NULL, 2, 10000, (TIMERPROC)SendTimer);
while(GetMessage(&msg,NULL,0,0))
{
if (1 == m_hflag)
{
m_TpaHandShakeTimer= SetTimer(NULL,3,500,(TIMERPROC)HartTimer);
m_hflag = 0;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
Sleep(1);
}
return 1;
}

出现了5个这样的错误。
error C2440: 'type cast' : cannot convert from '' to 'void (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,unsigned long)'
程序中希望实现创建两个线程,一个用于接收定时器消息,一个用于接收队列消息。
但在线程的创建以及定时器的启动时出现错误。
...全文
2141 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
asdfsdsdddddds 2012-06-27
  • 打赏
  • 举报
回复
看看啦 好东西
chicbir 2012-03-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fc_cpp 的回复:]
定时器函数是回调函数,回调函数要么是全局函数,要么是静态函数。完毕
[/Quote]
全局函数与静态函数是什么样子的?初学者
就想叫yoko 2010-12-08
  • 打赏
  • 举报
回复
++[Quote=引用 2 楼 fc_cpp 的回复:]
定时器函数是回调函数,回调函数要么是全局函数,要么是静态函数。完毕
[/Quote]
libinfei8848 2010-12-08
  • 打赏
  • 举报
回复
TimerTask是成员函数_thisCall调用约定
需要全局或者静态函数
fc_cpp 2010-12-08
  • 打赏
  • 举报
回复
定时器函数是回调函数,回调函数要么是全局函数,要么是静态函数。完毕
hhh_hao 2010-12-08
  • 打赏
  • 举报
回复
哪一行的错误?

64,687

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧