| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > работа с AfxBeginThread |
| Автор: En_t_end 30.1.2005, 19:32 |
| Чисто ради интереса подметил одну проблемку : 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); Ну вот af_potoc, af(), af_out - это всё его члены. Дык вот Кстати сперва ругался на (AFX_THREADPROC)af->af - ну тут всё понятно typdef правда не может использовать прегружаемые функциив таком виде - но я как видите использовал несколько другой вариант - ещё сам незнаю, будет ли работать Знающие приём |
| Автор: En_t_end 31.1.2005, 08:18 |
| Алло ?... как проблему то решить - интересно ведь... почему без использования указателей класс нормально отрабатывает CWinThread = AfxBeginThread(%%%%%%%%). Почему ? |
| Автор: En_t_end 1.2.2005, 17:03 |
| ? Я все равно буду держать тему "на верху" |
| Автор: S.A.P. 1.2.2005, 17:30 |
| Какого типа у тебя af_potoc ? |
| Автор: Adil' 1.2.2005, 18:57 | ||
У тебя здесь весело получилось: происходит вызов метода af->af(sParam) (с неициализироанным значением sParam кстати), то значение, что этот метод возвращает, приводится к типу "указатель на функцию типа UINT (*)( LPVOID pParam ); и передается в AfxBeginThread как адрес функции. З.Ы. Что бы метод класса работал процедурой потока, надо объявить его статическим, и передавать не возвращаемое им значение, а его адрес. |
| Автор: En_t_end 1.2.2005, 19:06 | ||||
Я не имею такого опыта, как вы многоуважаемый Adil', поэтому я пока придерживаюсь этих принципов. А вот когда программа работает не правильно, вот тогда я копаю и докапываюсь до истины - такой способ уже оправдал себя. Добавлено @ 19:08 af_potoc - CWinThread. Добавлено @ 19:14 Я наверное знаю, что надо сделать : в высокой степени абстракции, я представляю себе это так :
|
| Автор: S.A.P. 1.2.2005, 19:26 | ||||
|
| Автор: En_t_end 1.2.2005, 19:41 |
| Perchilla Да я знаю, но ты спросил меня о типе. |
| Автор: S.A.P. 1.2.2005, 19:44 |
| Ну так действуй, раз знаешь |
| Автор: Adil' 2.2.2005, 11:01 | ||||
В более низкой степени абстракции:
З.Ы.
CWinThread и CWinThread* это разные типы З.З.Ы. En_t_end, твой подход, наверно, работает, только, представляю себе, какой кровью это даётся! Может лучше MSDN почитывать? |
| Автор: En_t_end 2.2.2005, 16:42 |
| CWinThread и CWinThread* Интересно... хммм... надо будет глянуть в MSDN. "представляю себе, какой кровью это даётся!" Очень сложно, поэтому я заново начал перечитывать все источники, заново изучаю стеки, сейчас например |
| Автор: Adil' 2.2.2005, 17:19 | ||
|
| Автор: Coocky 2.2.2005, 17:24 | ||||
En_t_end Не обижайся это не к тебе-это нащши общие проблемы |
| Автор: En_t_end 2.2.2005, 20:12 |
| "Имелось ввиду, что некий тип и указатель на этот тип - это разные типы" А дык указатель на этот тип - тип указателя : указатель. // Ну блин CWinThread - класс "Не обижайся это не к тебе-это нащши общие проблемы" То есть не я один такой |
| Автор: Coocky 3.2.2005, 16:57 | ||
En_t_end
Нет.Просто не у одного тебя запары бывают |