hur.cn - 华软网

 热门搜索

vc创建线程报错错误。。。

  作者:未知    来源:网络    更新时间:2011/4/15
写的 void CMy415Dlg::recv_udp_name()这个函数想在线程中执行,这个函数是不前往值的
用CreateThread来创建线程

 CreateThread(NULL,0,&CMy415Dlg::recv_udp_name,NULL,0, NULL);

保这个毛病error C2664: “CreateThread”: 不能将参数 3 从“void (__thiscall CMy415Dlg::* )(void)”转换为“LPTHREAD_START_ROUTINE”

我还想问下线程的创建能够放在OnPaint里面吗,理论上是否是所有位置都能够创建一个线程呢??
---华软 网友回答---
1.你线程函数的参数与系统指定的不符
2.如果用类的成员函数作为线程函数需要定义成static
void CMy415Dlg::recv_udp_name(LPVOID lpParameter) (在头资料中改成static void recv_udp_name(LPVOID lpParameter);)
 CreateThread(NULL,0,recv_udp_name,NULL,0, NULL);

---华软网友回复---
我还想问下线程的创建能够放在OnPaint里面吗,理论上是否是所有位置都能够创建一个线程呢??
-----------------------------------------------------------------------------------------------------
能够,  理论上是的,不过强烈不推荐你在WM_TIMER里这样做,如果想隔一段实现运行函数,能够思量用线程池!
---华软网友回复---
引用 1 楼 huangcheng90 的回复:
1.你线程函数的参数与系统指定的不符
2.如果用类的成员函数作为线程函数需要定义成static
void CMy415Dlg::recv_udp_name(LPVOID lpParameter) (在头资料中改成static void recv_udp_name(LPVOID lpParameter);)
 CreateThread(NULL,0,recv_udp_name,NULL,0,……
在头资料里改成了static void recv_udp_name()照旧报一样的错啊。。。。。。你写的tatic void recv_udp_name(LPVOID lpParameter);后面带的两个参是什么啊。。我的这个函数是不带参的啊
---华软网友回复---
  class="deleted_message"> 该回复于2011-04-15 14:27:43被版主删除
---华软网友回复---
讲函数申明为 static DWORD WINAPI CMy415Dlg::recv_udp_name(LPVOID lpParameter);
解决了。。
---华软网友回复---
MFC中你照旧用AfxBeginThread()来创建线程吧
---华软网友回复---
引用 6 楼 visualeleven 的回复:
MFC中你照旧用AfxBeginThread()来创建线程吧

赞成

要么用事情者线程,
要么用UI线程

     
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。