0

我正在尝试将此结构放入我的线程中,但是我在其中遇到了垃圾。

我正在使用的结构:

typedef struct {
    HWND hWnd;
    int cntrlid;
    TCHAR text[BUFF];
}parametros;

在消息开关中,我可以控制一个按钮女巫启动线程:

    case IDC_TAB_A:
        threaddata.hWnd=hWnd;
        threaddata.cntrlid=IDC_TAB_A;
        _tcscpy(threaddata.text, _T("Carregou A"));
        hThreadsender=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) ThreadSenderProc, (LPVOID) &threaddata, 0, NULL);

        break;

以及处理我得到的线程的函数:

DWORD WINAPI ThreadSenderProc(LPVOID param){

    parametros temp=*((parametros *)param);
    EnviaLetra(temp.hWnd, temp.text,temp.cntrlid);

    return 0;
}

一定有什么问题,但我无法理解它是什么,有人可以帮忙吗?

提前致谢!(对不起英语不好!)

4

1 回答 1

2

您的结构在线程可以访问它之前被破坏。要么使用事件同步,要么动态分配你的结构。

PS:删除那个可怕(LPTHREAD_START_ROUTINE)的演员表。如果你正确地声明你的函数,你将不需要它。除非您确切知道自己在做什么以及为什么要禁止使用函数指针强制转换。哦,(LPVOID)演员阵容也没用。

于 2013-05-07T18:33:46.777 回答