Wielowątkowość/VC++2008

0

Witajcie,
Piszę do Was, bo już całą noc spędziłem nad problemem i nie udało mi się go rozwiązać, a pewnie jest banalny. Do rzeczy:
Piszę aplikację w VC++2008 (w MFC) obsługującą zewnętrzny przetwornik USB. Obsługa tego urządzonka odbywa się poprzez dll. Stworzyłem klasę do jej obłsugi. Przetwornik uruchamia się mniej więcej tak: result = DVPSDK->DVP1412_Start(CurrentDev1, 1, 1, m_AudioEnable, hwndPreview1); Przy czym konieczne jest uruchomienie dwóch przetworników dokładnie w tym samym momencie, wobec czego koniecznym wydaje się być skorzystanie z wielowątkowości, bo bez tego drugi przetwornik czeka aż procedura startu pierwszego dobiegnie końca.
Wobec powyższego dla powyższych instrukcji stworzyłem sobie funkcje, które chce odpalać jako odzielne wątki. Problem mój polega na tym, że chcąc przekazać parametry (czyli klasa z funkcją start + okno, w którym jest obraz wyświetlany) muszę umieścić te funkcje w tej samej klasie , tak by było najłatwiej, czyż nie?. Wątek rozpoczynam poprzez
AfxBeginThread(Startuj1, (LPVOID)&DVPSDK);
gdzie funkcja Startuj1 to:

UINT CDVP1412EXEDlg::Startuj1(LPVOID pParam)
{
res = DVPSDK->DVP1412_Start(CurrentDev1, 1, 1, m_AudioEnable, hwndPreview1);
return res;
}

Deklarację Startuj1 umieściłem wg tego co znalazłem necie jako static. Ale po tym kompilator wywala illegal reference to non-static member 'CDVP1412EXEDlg::hwndPreview1. Kiedy próbuję hwndPreview1 także zrobić static, to otrzymuję unresolved external symbol. Sam już nie wiem jak mam podejść do tematu.

Macie jakieś pomysły? Byłbym bardzo bardzo wdzięczny za wszelką pomoc...

0
AfxBeginThread(&Startuj1, (LPVOID)&obiekt_CDVP1412EXEDlg);
UINT __cdecl CDVP1412EXEDlg::Startuj1(LPVOID pParam) // static oczywiście
{
     CDVP1412EXEDlg* _this = (CDVP1412EXEDlg*)pParam;
     res = _this->DVPSDK->DVP1412_Start(_this->CurrentDev1, 1, 1, _this->m_AudioEnable, _this->hwndPreview1);
     return res;
}

DVPSDK niech będzie składnikiem klasy CDVP1412EXEDlg.

0

0x666: dzieki Ci wielkie za pomoc. Mam tylko jeszcze jedna watpliwosc. Otoz mam przekazac do watku obiekt_CDVP1412EXEDlg, ale ten watek chce wywolac wewnatrz tego obiektu, tzn. w jednej z jego metod. W moim przypadku ten obiekt sie nazywa dlg i kiedy probuje skompilowac, to otrzymuje rzecz jasna komunikat, ze jest niezdefiniowany element o nazwie dlg... Jak mam to rozwiazac, zeby ne utracic widzialnosci obiektow?

0

No to zamiast dlg daj this. Chodzi o to, żeby parametrem wątku był adres obiektu (CDVP1412EXEDlg), na rzecz którego ten wątek jest wywoływany.

1 użytkowników online, w tym zalogowanych: 0, gości: 1