Autor Wątek: [Podstawy] Przekazywanie/odbieranie struktur przez fnCall  (Przeczytany 1075 razy)

0 Użytkowników i 1 Gość przegląda ten wątek.

Offline Inoex

  • Narybek
  • *
[Podstawy] Przekazywanie/odbieranie struktur przez fnCall
« dnia: Wrzesień 23, 2010, 10:38:08 am »
Witam,

z uwagi na brak mojego doświadczenia w C, mam problem pewnie z błachą sprawą. Proszę o wyrozumiałość :)


w hooku na WTW_ON_PROTOCOL_EVENT -> WTW_PEV_MESSAGE_RECV wywołuje:

    wtwMessageDef*    pMsg  = (wtwMessageDef *) wL;

    __int64 itemHandle = pF->fnCall( WTW_CTL_FND_CONTACT, (WTW_PARAM)&pMsg->contactData, NULL);

if (itemHandle) {

          wtwContactListItem* cL;
          __int64 wynik = pF->fnCall( WTW_CTL_GET_CONTACT, (WTW_PARAM)itemHandle, (WTW_PARAM)&cL );

}

       

Dostaje ItemHandle, ale nie potrafię odebrać ContactListItem (wynik zwraca 0). Pewnie coś przekombinowałem albo niedoczytałem, dlatego proszę o pomoc.



---------------------------------------

Z racji tego, że nikt nie odpowiedzial, sam znalazłem rozwiazanie.

 wtwMessageDef*    pMsg  = (wtwMessageDef *) wL;
 wtwContactDef cDef = pMsg->contactData;

    __int64 itemHandle = pF->fnCall( WTW_CTL_FND_CONTACT, (WTW_PARAM)&cDef, NULL);

 if (!itemHandle) return 0;

          wtwContactListItem cList;
          initStruct(cList);

          __int64 wynik = pF->fnCall( WTW_CTL_GET_CONTACT, (WTW_PARAM)itemHandle, (WTW_PARAM)&cList );

   if (!wynik) return 0;

        // jeżeli wszystko ok, to w cList mamy wszystko o danym kontakcie
       // np. cList.itemText  <-- nazwa kontaktu na liście


Temat można zamknąć albo dalej kontynuować jako tutorial dla potomnych.
« Ostatnia zmiana: Wrzesień 23, 2010, 18:32:32 pm wysłana przez Inoex »

Offline Kaworu

  • Ryszard
  • Szlachta
  • *
  • Twój Koszmar Senny
    • k2t.eu
Re: [Podstawy] Przekazywanie/odbieranie struktur przez fnCall
« Odpowiedź #1 dnia: Wrzesień 23, 2010, 19:24:12 pm »
    __int64 itemHandle = pF->fnCall( WTW_CTL_FND_CONTACT, (WTW_PARAM)&pMsg->contactData, NULL);

Dla zachowania swojego zdrowia psychicznego w razie jakby się typu dane miały zmieniać, używaj typów zdefiniowanych w wtw (w celu grzebania w api), czyli nie __int64 a WTW_PTR (który notabene na x86 wcale nie jest zdefiniowany jako __int64 tylko int) ;P

Offline Inoex

  • Narybek
  • *
Re: [Podstawy] Przekazywanie/odbieranie struktur przez fnCall
« Odpowiedź #2 dnia: Wrzesień 23, 2010, 20:04:52 pm »
Dzięki za info, już zmienione :) co do __int64, to dlatego, ponieważ VS rzucał warningiem (pracuje na x64)