Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа с AfxBeginThread, :) 
:(
    Опции темы
En_t_end
Дата 30.1.2005, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



Чисто ради интереса подметил одну проблемку :
af = new Af;
LPVOID sParam;
af->af_potoc = AfxBeginThread((AFX_THREADPROC)af->af(sParam), (LPVOID)&af->af_out, THREAD_PRIORITY_NORMAL, 0, 0, 0);
GlobalFree(af);

Ну вот smile... обьясняю Af - это какой-то класс - это не важно...
af_potoc, af(), af_out - это всё его члены.
Дык вот smile компилятор ругается на "=" - типа невозможно так обработать член класса...
Кстати сперва ругался на (AFX_THREADPROC)af->af - ну тут всё понятно typdef правда не может использовать прегружаемые функциив таком виде - но я как видите использовал несколько другой вариант - ещё сам незнаю, будет ли работать smile

Знающие приём smile
PM MAIL ICQ Skype GTalk Jabber   Вверх
En_t_end
Дата 31.1.2005, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



Алло ?... как проблему то решить - интересно ведь... почему без использования указателей класс нормально отрабатывает CWinThread = AfxBeginThread(%%%%%%%%).
Почему ?
PM MAIL ICQ Skype GTalk Jabber   Вверх
En_t_end
Дата 1.2.2005, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



?
Я все равно буду держать тему "на верху" smile
PM MAIL ICQ Skype GTalk Jabber   Вверх
S.A.P.
Дата 1.2.2005, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



Какого типа у тебя af_potoc ?
PM MAIL   Вверх
Adil'
Дата 1.2.2005, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 26.8.2004
Где: Питер

Репутация: 6
Всего: 15



Цитата(En_t_end @ 30.1.2005, 19:32)
af->af_potoc = AfxBeginThread((AFX_THREADPROC)af->af(sParam), (LPVOID)&af->af_out, THREAD_PRIORITY_NORMAL, 0, 0, 0);
Мда, круто! ПисАть код, способом "а главное, чтоб компилятор заткнулся" - очень продуктивно!
У тебя здесь весело получилось:
происходит вызов метода af->af(sParam) (с неициализироанным значением sParam кстати), то значение, что этот метод возвращает, приводится к типу "указатель на функцию типа UINT (*)( LPVOID pParam ); и передается в AfxBeginThread как адрес функции.
З.Ы. Что бы метод класса работал процедурой потока, надо объявить его статическим, и передавать не возвращаемое им значение, а его адрес.






--------------------
Удачи
PM MAIL WWW   Вверх
En_t_end
Дата 1.2.2005, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



Цитата
Мда, круто! ПисАть код, способом "а главное, чтоб компилятор заткнулся" - очень продуктивно!

Я не имею такого опыта, как вы многоуважаемый Adil', поэтому я пока придерживаюсь этих принципов. А вот когда программа работает не правильно, вот тогда я копаю и докапываюсь до истины - такой способ уже оправдал себя.
Добавлено @ 19:08
af_potoc - CWinThread.
Добавлено @ 19:14
Я наверное знаю, что надо сделать :
в высокой степени абстракции, я представляю себе это так :
Код

(af->af_potoc) *unnam;
*unnam = AfxBeginThread(................)


Это сообщение отредактировал(а) En_t_end - 1.2.2005, 19:16
PM MAIL ICQ Skype GTalk Jabber   Вверх
S.A.P.
Дата 1.2.2005, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



Цитата(En_t_end @ 1.2.2005, 19:06)
af_potoc - CWinThread.
а должен быть
Код

CWinThread *


PM MAIL   Вверх
En_t_end
Дата 1.2.2005, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



Perchilla
Да я знаю, но ты спросил меня о типе.
PM MAIL ICQ Skype GTalk Jabber   Вверх
S.A.P.
Дата 1.2.2005, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



Ну так действуй, раз знаешь smile . af_potoc должен быть указателем. Или именно это не пашет?
PM MAIL   Вверх
Adil'
Дата 2.2.2005, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 26.8.2004
Где: Питер

Репутация: 6
Всего: 15



В более низкой степени абстракции:
Код
class Af
{
public:
CWinThread *af_potoc;
DWORD af_out; //пусть будет DWORD
static UINT af(LPVOID);
Af();
};
...
 Af* af=new Af;
 af->af_potoc=AfxBeginThread(Af::af,(LPVOID)&af->af_out);
И никаких насилий над компилятором!

З.Ы.
Цитата(En_t_end @ 1.2.2005, 19:41)
Да я знаю, но ты спросил меня о типе.

CWinThread и CWinThread* это разные типы

З.З.Ы.
En_t_end, твой подход, наверно, работает, только, представляю себе, какой кровью это даётся!
Может лучше MSDN почитывать?


--------------------
Удачи
PM MAIL WWW   Вверх
En_t_end
Дата 2.2.2005, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



CWinThread и CWinThread*
Интересно... хммм... надо будет глянуть в MSDN.
"представляю себе, какой кровью это даётся!"
Очень сложно, поэтому я заново начал перечитывать все источники, заново изучаю стеки, сейчас например smile
PM MAIL ICQ Skype GTalk Jabber   Вверх
Adil'
Дата 2.2.2005, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 26.8.2004
Где: Питер

Репутация: 6
Всего: 15



Цитата(En_t_end @ 2.2.2005, 16:42)
Интересно... хммм... надо будет глянуть в MSDN.
smile Да там, наверно, такое и не написано. Имелось ввиду, что некий тип и указатель на этот тип - это разные типы smile

Это сообщение отредактировал(а) Adil' - 2.2.2005, 17:20


--------------------
Удачи
PM MAIL WWW   Вверх
Coocky
Дата 2.2.2005, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 2
Всего: 62



Цитата
CWinThread и CWinThread*

Цитата
Да там, наверно, такое и не написано. Имелось ввиду, что некий тип и указатель на этот тип - это разные типы
smile
En_t_end Не обижайся это не к тебе-это нащши общие проблемы smile

Это сообщение отредактировал(а) Coocky - 2.2.2005, 17:25


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
En_t_end
Дата 2.2.2005, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



"Имелось ввиду, что некий тип и указатель на этот тип - это разные типы"
А дык smile
указатель на этот тип - тип указателя : указатель. // Ну блин smile, а я то думал, что там новый сверхестесвтенный класс.

CWinThread - класс
"Не обижайся это не к тебе-это нащши общие проблемы"
То есть не я один такой smile ?
PM MAIL ICQ Skype GTalk Jabber   Вверх
Coocky
Дата 3.2.2005, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 2
Всего: 62



En_t_end
Цитата
То есть не я один такой

Нет.Просто не у одного тебя запары бывают smile


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0876 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.