Win32api передает структуру для создания потока

Я пытаюсь вставить эту структуру в мою ветку, но я получаю мусор.

структура я использую:

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 ответ

Решение

Ваша структура уничтожена, прежде чем поток сможет получить к ней доступ. Либо используйте событие для синхронизации, либо выделите вашу структуру динамически.

PS: удалить это отвратительное (LPTHREAD_START_ROUTINE) бросать. Если вы объявите свою функцию правильно, она вам не понадобится. Приведение указателей на функции запрещено, если вы не знаете точно, что вы делаете и почему. Ох, и (LPVOID) актерский состав тоже бесполезен.

Другие вопросы по тегам