Старый 29.01.2005, 17:13   #1   
Серж
 
Сообщений: 232
Регистрация: 13.02.2004
Возраст: 44

serk вне форума Не в сети
Создание Thread в винде

Блин опять трабла с потоками. Может сталкивался кто что нуна передать треду структуру типа

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;
и ничего в этой структуре нету. МОжет я опять че напутал с приведением типов или есть какая особенность в моем случае изза передачи указателей в структуре или еще чего не то.
Заранее пасиб.
  Ответить с цитированием
Старый 30.01.2005, 22:58   #2   
Registered User
 
Сообщений: 67
Регистрация: 08.07.2003
Возраст: 45

Fisher вне форума Не в сети
Цитата:
Создаю переменную типа 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;
};
  Ответить с цитированием
Старый 31.01.2005, 02:45   #3   
Серж
 
Сообщений: 232
Регистрация: 13.02.2004
Возраст: 44

serk вне форума Не в сети
Усе пасиб всем я уже понял свою ошибку опять на грабли наступил уже было.В общем насчет книжки по С++ давно хотел страустрапа заполучить. Да а структуру я описал как
typedef struct _THREAD_FUNK_PARAMS
{
LPSTR lpstrFile;
LPSTR lpstrLink;
HWND hwnd;
} THREAD_FUNK_PARAMS,*PTHREAD_FUNK_PARAMS;

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



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind