Поиск:

Ответ в темуСоздание новой темы Создание опроса
> может кто сталкивался, проблема с AfxBeginThread() 
V
    Опции темы
nikolaich
Дата 27.3.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем привет.
Помогите решить проблему. 
Код

................

UIINT CHaLoMoDlg::ThrProc(LPVOID param)
{
    return 0;
}

.................

void CHaLoMoDlg::OnBnClickedButton1()
{
    AfxBeginThread(ThrProc,NULL);
}


Компилятор выдает ошибку:
error C3867: 'CHaLoMoDlg::ThrProc': function call missing argument list; use '&CHaLoMoDlg::ThrProc' to create a pointer to member

Когда делаю так:
Код

void CHaLoMoDlg::OnBnClickedButton1()
{
    AfxBeginThread(&CHaLoMoDlg::ThrProc,NULL);
}


пишет:

error C2665: 'AfxBeginThread' : none of the 2 overloads could convert all the argument types

Скажу сразу, что я использую студию 2005
Заранее спасибо.
PM MAIL   Вверх
Greeen
Дата 27.3.2007, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 10
Всего: 18



Функция должна иметь вид
Код

UINT __cdecl MyControllingFunction( LPVOID pParam );

Она не может быть членом класса.

Точнее может, но статической. Т.е. 
Код

static UINT __cdecl CMyClass::MyControllingFunction( LPVOID pParam );


Это сообщение отредактировал(а) Greeen - 27.3.2007, 17:06


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
Earnest
Дата 27.3.2007, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Может, но статическим.


--------------------
...
PM   Вверх
nikolaich
Дата 27.3.2007, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Извините вынужден был отлучиться.
Сейчас попробую. Кстати, если не ошибаюсь, даже в MSDN про то что она должна быть статической ничего нет. (правда у меня версия старая)
Киньте ссылку где можно почитать про это. (если не трудно)

PM MAIL   Вверх
Earnest
Дата 28.3.2007, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Как это нет? Вот описание AfxBeginThread из MSDN:
Цитата

Call this function to create a new thread.
CWinThread* AfxBeginThread(
   AFX_THREADPROC pfnThreadProc,
   LPVOID pParam,
   int nPriority = THREAD_PRIORITY_NORMAL,
   UINT nStackSize = 0,
   DWORD dwCreateFlags = 0,
   LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL 
);
Parameters
pfnThreadProc 
Points to the controlling function for the worker thread. Cannot be NULL. This function must be declared as follows: 
UINT MyControllingFunction( LPVOID pParam );

Видим семантику функции: глобальная функция с одним параметром. Что еще должно быть написано, чтобы было понятно, что методы класса не годятся?


--------------------
...
PM   Вверх
nikolaich
Дата 28.3.2007, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ну лох я, согласен, но где здесь про static?.
PM MAIL   Вверх
Earnest
Дата 29.3.2007, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Нигде про класс ничего нет. Ты сам должен знать, что в качестве глобальной функции может выступать статический метод класса.

Добавлено через 3 минуты и 5 секунд
А нестатический - не может, так как у него есть еще один неявный параметр - this. Следовательно, сигнатура не подходит.


--------------------
...
PM   Вверх
nikolaich
Дата 30.3.2007, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо Earnest. smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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