Win32api传递struct来创建线程

时间:2013-05-07 18:31:37

标签: c winapi createthread

我正在尝试将此结构放入我的主题中,但是我正在使用它。

struct我正在使用:

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;
}
某些事情肯定是错的,但是我无法得到它是什么,任何人都可以帮忙吗?

提前致谢! (抱歉英语不好!)

1 个答案:

答案 0 :(得分:2)

您的结构在线程可以访问之前被销毁。使用事件进行同步,或动态分配结构。

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