Здравствуйте, 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(), просто я хотел эту всю операцию отдельным потоком сделать