我用_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的值,好象输出的是内存地址...
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的值,好象输出的是内存地址...
解决方案 »
- 问一个CListCtrl的问题,有点难度
- Outlook express不能收发126,qq,yahoo等等邮箱的邮件
- sock5密码验证~~一个困扰了几天的问题~~
- 关于响应键盘的一个程序
- 各位有没有在com中写事件的经历!!
- 控件工具栏不显示已经添加的DataGrid&ADODC控件
- 在VC中调用office的COM接口后,如何确定自己要打开的窗口。
- OpenGL中出现错去'glPrimitiveRestartIndex' : undeclared identifier
- 高分请教高手,如何在自制控件中应用ImageList控件???
- 中国有没有时间服务器?
- 会WaitForMultipleObjects函数的进来
- 存的AVI视频播放的非常快
改为传值而非地址
_beginthread(producer,0,c)
{
int x=(int)lpParameter; // 改为 取值
PostMessage(hwnd1,WM_PRODUCER,0,x);//此处改为 将x传递给下面的lParam
}
改为void producer(void lpParameter)
多试试。