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)
актерский состав тоже бесполезен.