Большой Воронежский Форум
» Программирование>Создание Thread в винде
serk 17:13 29.01.2005
Блин опять трабла с потоками. Может сталкивался кто что нуна передать треду структуру типа

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;
и ничего в этой структуре нету. МОжет я опять че напутал с приведением типов или есть какая особенность в моем случае изза передачи указателей в структуре или еще чего не то.
Заранее пасиб. [Ответ]
Fisher 22:58 30.01.2005

Сообщение от :
Создаю переменную типа 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;
}; [Ответ]
serk 02:45 31.01.2005
Усе пасиб всем я уже понял свою ошибку опять на грабли наступил уже было.В общем насчет книжки по С++ давно хотел страустрапа заполучить. Да а структуру я описал как
typedef struct _THREAD_FUNK_PARAMS
{
LPSTR lpstrFile;
LPSTR lpstrLink;
HWND hwnd;
} THREAD_FUNK_PARAMS,*PTHREAD_FUNK_PARAMS;

и усе работает.
В общем и на счет lpstr я понял просто объект на который я ссылался должен был быть постояннно в памяти а у меня сдесь он был локальным,Создал его через глобальную переменную и все пошло. [Ответ]
Вверх