论坛: 编程破解 标题: VC++关于线程的问题! 复制本贴地址    
作者: hongyang [hongyang]    论坛用户   登录
大家好,我在编译一个例程时,是关于线程的;
用的函数是AfxBeginThread(thread,0)
并且在声明中用的是:UINT thread(LPVOID p)
但是出现以下错误:
D:\vctest1\Csocket\CsocketDlg.cpp(143) : error C2665: 'AfxBeginThread' : none of the 2 overloads can convert parameter 1 from type 'unsigned int (void *)'

不知道是什么意思,请各位给看一下,指点一下~~
谢谢~~~~~~~~~~~~

地主 发表时间: 11/02 18:32

回复: 286 [unique]   版主   登录
struct ThreadParam
{
XXXXXXX;
} p;
UINT thread(LPVOID p);
AfxBeginThread(thread,&p,THREAD_PRIORITY_IDLE);

B1层 发表时间: 11/03 09:43

回复: shesh [shesh]   版主   登录
实体在哪?

强制转换也可以.

B2层 发表时间: 11/03 10:43

回复: hongyang [hongyang]   论坛用户   登录
我真的是很受宠了,居然有两位版主为我解难,实在是感谢~~~~~~~~

关于老无版主说的实体转换,是不是AfxBeginThread((UINT )thread,0)
还是AfxBeginThread((UINT *)thread,0),要是的话,都不可以啊~~

286版主说的struct ThreadParam结构体中的成员该是怎么确定啊 ~~~
我不懂,能否给小弟指明一下??

谢谢两位版主!!~~~~~~~~~~~~

我现在该是多看程序呢?还是多写?或是比葫芦化瓢看了人家的程序自己在做一遍呢?
    我上机编译一个程序总是花费很多时间,有时候觉得很不合算究竟该怎么办呢??

两位版主能否就-----是否新手,―――刚刚入门,―――能看懂一些程序
这三种情况给于具体一点的指点??好让我们都有一个比较好的思路~~

谢谢!!~~~~~~~~~~~~~~~~~~~~~~~~


B3层 发表时间: 11/03 14:09

回复: 286 [unique]   版主   登录
//定义线程数据结构===================================
struct ThreadParam
{
    //这里的值当然是你需要什么就填什么了.
    //比如:
    int i;
} p;

//声明================================================
UINT thread(LPVOID p);

//例子片段=============================================
for (int i=0;i<10;i++)
{//发10个线程
      p.i=i;
      AfxBeginThread(thread,&p,THREAD_PRIORITY_IDLE);
      Sleep(100);
}

//实际的线程.(也许就是无兄所说的实体吧)================
UINT thread(LPVOID pParam)
{
        ThreadParam* threadparam=(ThreadParam*)pParam;
        CString ShowMsg;

        ShowMsg.Format("这是第%d个线程",threadparam->i;
        AfxMessageBox(ShowMsg);
        return 0;
}


B4层 发表时间: 11/03 14:56

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号