请问这句话是什么意思?
CXXDlg *pDlg=(CXXDlg *)lparam;
说明:lparam 是线程函数的参数来的。
是不是生成 CXXDlg 的指针 pDlg 去指象哪个lparam被强制转换成CXXDlg ?
那么它到底为什么要这样做呢?是不是线程函数只能通过参数来传递参数呢?(除了全局变量)?

解决方案 »

  1.   

    因为线程的参数只能为一个,类型是LPVOID,即为可以指向任何类型的指针(msdn原话:Pointer to any type.)
    那你可以在传参的时候先把要传的参数强制转为LPVOID,转入后再换回所要的类型指针,举个例
    有结构
    struct stu
    {
    int a;
    bool b;
    };有结构变量
    stu TEMP;有线程函数:
    //线程函数只能为返回UINT(DWORD),含一个LPVOID的指针参数
    并为全局的或是静态函数。
    UINT func(LPVOID pLP)  
    {
    stu pStu=(stu*)pLP;   //一般线程函数的第一步就是把LPVOID转为自己想要的指针类型
    //做一些事:
    TRACE("%d",pStu->a);
    }那你在某个函数中可以如此调用:
    AfxBeginThread(func,(LPVOID)&TEMP);
    //传入TEMP变量的指针,并强制转为LPVOID类型。