Newsgroup: it.comp.lang.visual-basic
Titolo: [?2] API dal C a VB

Io so usare le API se però mi viene detto come si dichiarano e che parametri
passare. Per le API di ICQ la documentazione spiega per il linguaggio C.
Sapete dirmi come dichiarare e che tipi di dati passare alle seguenti API?
Riconosco che è una faticaccia rispondermi, ma abbiate pietà: non so più che
pesci pigliare.
GRAZIE E ANCORA GRAZIE
-----------------------------------------
 ICQAPICall_GetFullUserData
 BOOL WINAPI ICQAPICall_GetFullUserData(BSICQAPI_User *pUser, int iVersion);
· In (Arguments): pUser , iVersion
   · pUser - a pointer to a user struct (BSICQAPI_USER) with the m_iUIN
field set to the user ICQ#.
   · iVersion - the ICQ API version the caller application expect to work
with.
· Out (Returns): pUser
   · pUser - the struct is filled with the user's
---------------------------------------------
 ICQAPICall_GetOnlineListDetails
 BOOL WINAPI ICQAPICall_GetOnlineListDetails(int &iCount, BPSICQAPI_User
**ppUsers);
· In (Arguments): None
· Out (Returns): iCount, ppUsers
   · iCount - the number of Users to follow
   · ppUsers - a pointer to the users' array.
-------------------------------------------------
 ICQAPICall_SetLicenseKey
 BOOL WINAPI ICQAPICall_SetLicenseKey(char *pszName, char *pszPassword, char
*pszLicense);
· In (Arguments): pszName, pszPassword, pszLicense
   · pszName - the application developer name.
   · pszPassword - the application developer chosen password
   · pszLicense - the license key the application developer got while
applying for the API.
· Out (Returns): None
-------------------------------------------------
 ICQAPICall_GetVersion
BOOL WINAPI ICQAPICall_GetVersion(int &iVersion);
· In (Arguments): None
· Out (Returns): iVersion
   · iVersion - the version of the API which the ICQ Client is using. The
high word is the major version, the low word the minor.
-------------------------------------------
 ICQAPIUtil_SetUserNotificationFunc
 void WINAPI ICQAPIUtil_SetUserNotificationFunc(UINT uNotificationCode, void
*pUserFunc);
· In (Arguments): uNotificationCode, pUserFunc
   · uNotificationCode - a notification code as specified in the
Notification reference above.
   · pUserFunc - the user function to be activated by the notification. For
each notification code there is a prototype of a function as specified in
the Notification reference above.
--
W il Manifesto del newsgroup
Jimmy
E-mail: 
jimmy...@hotmail.com
ICQ#: 41646051
--------------------------------------------------------------
IL MIO SPONSOR:
visita il sito:
http://www.geocities.com/radiocece

GRAZIE E ANCORA GRAZIE
Penso che occorra scrivere un bell'articoletto da inviare al sito comune (se
già non c'è) sull'argomento.
Penso che il tuo problema maggiore sia il BSICQAPI_User *pUser che se non
sbaglio si traduce con un ByVal pUser As BSICQAPI_User, ma una funzione in
VB non accetta come parametro un Type passato ByVal.
Non tutti sanno che esiste però un trucchetto per "imbrogliare" VB e cioè
passare ByVal tutti i singoli membri del type.
Ad esempio, nel Win32Api.txt c'è un'api con lo stesso problema: è dichiarata
Declare Function PtInRect Lib "user32" Alias "PtInRect" (lpRect As RECT, pt
As POINTAPI) As Long
Così va in crash perchè dovrebbe essere dichiarata con ByVal pt As POINTAPI,
ma può essere aggirato il problema con
Private Declare Function PtInRect Lib "user32" (lpRect As TRgnRECT, ByVal
PtX As Long, ByVal PtY As Long) As Long
Ciao.

 PtX As Long, ByVal PtY As Long) As Long
Ma quindi come faccio con queste benedette API?