[vb_ro] ActiveX COM si Threadurile sau legatura C++ / VB
- From: Pop Cristian <PopCristian@xxxxxxx>
- To: vb_ro@xxxxxxxxxxxxx
- Date: Sat, 20 Sep 2003 12:48:08 +0300
Salut!
Am o problema legata de ActX si Threading:
Am construit un ActX numit CriX in Visual C++ (cu MFC ActiveX
Wizard). Ideea e urmatoarea: imi trebuie threaduri care sa comunice
"curat" cu VB-ul prin Event-uri.
Am creeat o functie ThreadProc pe care am declarat-o friend in
clasa CCriXCtrl si in care creez thread-urile. Am o functie membru
(care devine metoda in VB) CCriXCtrl::ThreadTest care creeaza fiecare
thread, iar parametrul acestora este chiar pointerul this, pentru a
putea apela Event-ul:
void CCriXCtrl::ThreadTest()
{
DWORD tid;
CreateThread(0, 0, ThreadProc, this, 0, &tid);
}
DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
CCriXCtrl *th;
th = (CCriXCtrl *)lpParameter;
th->FireInThread(); //aici da Protection Fault
return 0;
}
Testele le-am facut in VB si a mers perfect. Daca am compilat
proiectul si l-am executat da Protection Fault. Debuggerul imi indica
pozitia pe linia th->FireInThread(), adica exact comunicarea cu VB-ul.
Am aceleasi probleme daca lucrez cu DLL-uri standard (nu COM) si
implementez totul cu WindowProc in VB. Daca blochez mai mult timp
WindowProc-ul crapa executabilul (in mediul de dezvoltare merge...)
Singura solutie gasita: trimit o anumita combinatie de taste (sau alte
mesaje care nu ma intereseaza dar pe care VB-ul le recunoaste) catre
VB si le captez cu event-urile VB-ului, fara WindowProc... (De exemplu
Form_KeyDown). Totusi, nu imi place... nu e elegant :)
--
Best regards,
Cristian mailto:PopCristian@xxxxxxx
Site: http://info.AdvanCode.com
Dezabonare: vb_ro-request@xxxxxxxxxxxxx cu "unsubscribe" la subiect.
Other related posts:
- » [vb_ro] ActiveX COM si Threadurile sau legatura C++ / VB