Блин опять трабла с потоками. Может сталкивался кто что нуна передать треду структуру типа
struct _THREAD_FUNK_PARAMS
{
LPSTR lpstrFile;
HWND hwnd;
} THREAD_FUNK_PARAMS,*PTHREAD_FUNK_PARAMS;
Создаю переменную типа PTHREAD_FUNK_PARAMS pt=new THREAD_FUNK_PARAMS;
заполняю ее члены.Далее вызываю
hThread=CreateThread(NULL,
0,
ThreadFunc,
(LPVOID)pt,//threadparms,
0,
&dwThreadID);
Далее в функции потока(ThreadFunc(LPVOID lpParam)):
PTHREAD_FUNK_PARAMS pthreadparms=(PTHREAD_FUNK_PARAMS)lpParam;
и ничего в этой структуре нету. МОжет я опять че напутал с приведением типов или есть какая особенность в моем случае изза передачи указателей в структуре или еще чего не то.
Заранее пасиб.
[Ответ]
Сообщение от :
Создаю переменную типа PTHREAD_FUNK_PARAMS
В данном случае PTHREAD_FUNK_PARAMS - это не тип (это название указателя на объект типа _THREAD_FUNK_PARAMS).
Сообщение от :
Далее в функции потока(ThreadFunc(LPVOID lpParam)):
PTHREAD_FUNK_PARAMS pthreadparms=(PTHREAD_FUNK_PARAMS)lpParam;
и ничего в этой структуре нету.
Как это ты скомпилировать мог интересно...
Сообщение от :
Неправильно объявлена структура. Правильно так:
struct _THREAD_FUNK_PARAMS
{
LPSTR lpstrFile;
HWND hwnd;
};
typedef _THREAD_FUNK_PARAMS THREAD_FUNK_PARAMS;
Не вижу никакого смысла в последней строке. Более того имена, начинающиеся с символа "_" зарезервированы Стандартом.
Было бы разумнее написать
struct THREAD_FUNK_PARAMS
{
LPSTR lpstrFile;
HWND hwnd;
};
[Ответ]
Усе пасиб всем я уже понял свою ошибку опять на грабли наступил уже было.В общем насчет книжки по С++ давно хотел страустрапа заполучить. Да а структуру я описал как
typedef struct _THREAD_FUNK_PARAMS
{
LPSTR lpstrFile;
LPSTR lpstrLink;
HWND hwnd;
} THREAD_FUNK_PARAMS,*PTHREAD_FUNK_PARAMS;
и усе работает.
В общем и на счет lpstr я понял просто объект на который я ссылался должен был быть постояннно в памяти а у меня сдесь он был локальным,Создал его через глобальную переменную и все пошло.
[Ответ]