我用_beginthread(producer,0,&c);创建线程后,想把第三个参数传递给他的子线程函数
void producer(void *lpParameter),然后再把lpParameter传递给PostMessage的最后一个参数
在子线程函数里有个PostMessage(hwnd1,WM_PRODUCER,0,"待传递参数");我是这样做的:
int c=1;
for(;c<=3;c++)_beginthread(producer,0,&c);//用FOR来创建多个线程
..................................
void producer(void *lpParameter),//将参数C传递给lpParameter
{
int *x=(int *)lpParameter;
PostMessage(hwnd1,WM_PRODUCER,0,*x);//将*x传递给下面的lParam
}
//由WM_PRODUCER触发的消息函数product
LRESULT CMy2312Dlg::product(WPARAM wParam,LPARAM lParam)
{
CListBox *p=(CListBox *)GetDlgItem(IDC_LIST1);
CString str;
str.Format("%d",lParam);
}我想依次输出1,2,3....
但输出时却不是C的值,好象输出的是内存地址...

解决方案 »

  1.   

    把_beginthread(producer,0,&c)
    改为传值而非地址
    _beginthread(producer,0,c)
      

  2.   

    void producer(void *lpParameter),//将参数C传递给lpParameter
    {
    int x=(int)lpParameter;  // 改为 取值
    PostMessage(hwnd1,WM_PRODUCER,0,x);//此处改为  将x传递给下面的lParam

      

  3.   

    如果传递的是值的话,那么在PostMessage那我该怎么把这值传递过去呢?
      

  4.   

     将void producer(void *lpParameter)
    改为void producer(void lpParameter)
    多试试。