Re[2]: Подскажите про потоки (ответа я не нашел)
От: Mandigal  
Дата: 25.02.04 14:42
Оценка:
Здравствуйте, BlackHeretic, Вы писали:

BH>Здравствуйте, Mandigal, Вы писали:


M>>У меня есть в проге длительная операция (рассчет CRC32 для файлов больше 1GB) и я хочу для нее создать отдельный рабочий поток


M>>Делаю как в хелпах писано

M>>Глобальную управляющую функцию
M>>UINT MyThreadProc( LPVOID pParam )
M>>{

M>> CTestDlg::testThread();

M>>return 0;
M>>}
M>>и ее вызов

M>>void CTestDlg::OnBnClickedB1()

M>>{
M>>AfxBeginThread(MyThreadProc,NULL);
M>>}

M>>Но естественно глобальная MyThreadProc не может видеть CTestDlg::testThread(); (ну или я подставлял содерживое testThread(), там тоже все рассчитано что функция выполняется в классе CTestDlg), мне знакомый посоветовал что можно объявить MyThreadProc как член класса CTestDlg и просто написать оболочку(глобальную) для запуска ее, но у меня не получилось.

M>>Пожалуйста подскажите как, если можно с примерами, потому как я с потоками вообще еще не работал и пока непонимаю принципов (прочтение MSDN не помогло ( )

BH>Вместо NULL передавай HWND диалога. А как закончишь расчет перешли результат через SendMessage.

BH>Номер сообщения получай через RegiterWindowMessage
BH>Удачи

Хорошо, я передал HWND диалога с помощью GetSafeHwnd()
а дальше мне его как использовать?
и зачем мне передавать что-то через SendMessage если функция CTestDlg::testThread() и так сама в эдитбоксы значения записывает
Суть в том что в CTestDlg::testThread() находиться тот же код который раньше был в CTestDlg::OnBnClickedB1(), просто я хотел эту всю операцию отдельным потоком сделать
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.