Witam
Co chcę wykonać:
Aplikacja okienkowa (środowisko Borland C++ Builder 6), która będzie asynchronicznie odbierała wiadomości z serwera poprzez sockety.
Co mam zrobione:
Połączenie z serwerem.
Z czym mam problem:
Problem mam z asynchronicznym odbiorem wiadomości, które wysyła serwer.
Plan mam taki:
- aplikacja ma dwie "formy"
- pierwsza forma (główna) łączy z serwerem (to działa ok) i wywołuje asynchroniczne odbieranie wiadomości
- uchwytem do odbioru tych wiadomości jest forma druga
Nie mogę sobie tylko poradzić z odczytem wiadomości wysyłanej do tego drugiego okienka.
Oto kod:
Forma główna - unit1
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
HWND okno = Form2; // uchwyt do drugiego okna ktore ma odbierac wiadomosci
// kod laczenia z serwerem
// pomijam go bo tu wszystko działa poprawnie
// po wywołaniu connect() następuje
WSAAsyncSelect(ConnectSocket,okno,WM_USER,FD_CONNECT|FD_READ|FD_WRITE|FD_ACCEPT);
}
Forma druga, odbierająca wiadomości - unit2 (uchwyt okno)
// funkcja wirtualna łapiąca wiadomości
void __fastcall TForm2::WndProc(TMessage &Message)
{
switch(Message.Msg)
{
case WM_USER:
Form2->Label1->Caption="zlapana";
break;
}
TForm::WndProc(Message);
}
// konstruktor
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
Form2->Label1->Caption="start";
// właściwie tutaj nie wiem czy coś trzeba dawać
// próbowałem poniższe konstrukcje lecz bezskutecznie :/
//MSG Msg;
//GetMessage(&Msg, this, WM_USER, WM_USER+4);
//TranslateMessage(&Msg);
//DispatchMessage(&Msg);
}
Byłbym wdzięczny za jakąkolwiek pomoc, która by mnie naprowadziła na poprawne rozwiązanie.
Niestety na podstawie przykładów z internetu nie mogę skutecznie rozwiązać tego problemu :/