Słowem wstępu - osobiście nie popieram sprawdzania czy ktoś jest online ale się ukrywa czy nie, jest to uderzeniem w cudzą prywatność - dlatego ta funkcja nie jest zaimplementowana w GGimage. Ale, widać, że jest chętny więc potroszku wytłumacze jak zrobić sprawdzanie obecności rozmówcy za pomocą wiadomości graficznych
--
Aby podłączyć się pod obsługe wiadomości GG należy:
CODE
// próbujemy rejestrować sie w gadugadu
IMessage (IM_GG_REGISTERHANDLER, NET_GG, IMT_PROTOCOL, GGER_EVENT);
// jeśli nikt nie obsłużył tej wiadomości to wywalamy błęda
if (Ctrl->getError () == IMERROR_UNSUPPORTEDMSG || ICMessage (IMC_FINDPLUG, NET_GG, IMT_ALL) == 0)
{
// wyłączamy wtyke
Ctrl->IMessage (&sIMessage_plugOut (ID, "Wtyczka GGimage nie będzie działać bez włączonej wtyczki GG!!", sIMessage_plugOut::erYes, sIMessage_plugOut::euNowAndOnNextStart));
// kończymy działanie funkcji
return -1;
}
GGimage podpina się jeszcze pod inne wiadomości, ale tutaj potrzebne jest tylko GGER_EVENT
następnie w IMessageProc musimy odpowiedzieć na pytanie
CODE
// Odpowiadanie na odbierane wiadomości
case IM_GG_EVENT: return HandleGGEvent (static_cast <sIMessage_GGEvent*> (msgBase));
gdzie HandeGGEvent to nasza funkcja, zdefiniowana następująco
CODE
int HandleGGEvent (sIMessage_GGEvent* event);
potem już należy obsłużyć odpowiednią wiadomość
CODE
// funkcja obsługująca zdarzenia wtyczki GG.dll
int HandleGGEvent (sIMessage_GGEvent* event)
{
// jeśli jest GGER_EVENT
if (event->eventType == GGER_EVENT)
{
// prośba o wysłanie obrazka
if (msg->type == GG_EVENT_IMAGE_REQUEST)
{
// zmienna z wiadomościa odebraną od serwera gg
gg_event* msg = static_cast <gg_event*> (event->data.event);
__ TUTAJ KOD __
}
}
// kończymy działanie funkcji
return 0;
}
--
Aby poprawnie to skompilować, zbudować i uruchomić to musisz mieć libgadu oraz libgadu.lib albo w ścieżkach albo w katalogu i odpowiednio ustawione katalogi. LibGadu wymaga również nagłówków biblioteki OpenSSL oraz standardowych linuxowych nagłówków których brakuje w VS.NET