客户端开发接口文挡说明

  void SetServer(BSTR bstrServerIP, short wServerPort)

设置登录服务器的地址和端口。

参数说明:
    BSTR    bstrServerIP  服务器要运行的地址。
    short   wServerPort   服务器要帮定的端口。

返回值:
    无。

例子:
    SetServer (_T("202.139.2.58"), 5000) ;

  void GetServer(BSTR* pbstrServerIP, short* pwServerPort)

获取登录服务器的地址和端口

参数说明:
    BSTR *   pbstrServerIP [out] 返回的登录服务器的地址
   short * pwServerPort  [out]  返回的登录服务器的端口 

返回值:
    无。

  void SetMaskServer(BSTR bstrServerIP, short wServerPort)

设置登录服务器的掩码地址和端口(显示用,防止把服务器地址直接暴露给用户)

参数说明:
    BSTR    bstrServerIP  要显示的掩码地址。
    short   wServerPort   要显示的掩码端口。

返回值:
    无。

例子:
    SetMaskServer (_T("202.139.2.58"), 5000) ;

  void GetMaskServer(BSTR* pbstrServerIP, short* pwServerPort)

获取服务器的掩码地址和端口

参数说明:
    BSTR *   pbstrServerIP [out] 返回服务器的掩码地址
   short * pwServerPort  [out]  返回服务器的掩码端口 

返回值:
    无。

  void SetProxy(VARIANT varProxy)

设置代理服务器的信息。

参数说明:
    VARIANT varProxy 代理服务器信息

返回值:
    无

例子:

const UINT uProxy_None = 0 ;
const UINT uProxy_Socks4 = 1 ;
const UINT uProxy_Socks4A = 2 ;
const UINT uProxy_Socks5 = 3 ;
const UINT uProxy_Http = 4 ;
const UINT uProxy_Udp = 5 ;

#pragma pack(1)
 // 代理服务器结构定义
typedef struct _tagProxyInfo
{
BYTE byProxyType ; // 代理类型 SOCKS 4, SOCKS 4A, SOCKS 5, HTTP, UDP
UINT uProxyIP ; // 代理服务器地址
WORD wProxyPort ; // 代理服务器端口
char szUserName[256] ; // 用户验证姓名
char szUserPwd[256] ; // 用户验证口令
char szDomain[64] ; // 域,用于 NTLM 验证,对应 HTTP

_tagProxyInfo()

byProxyType = uProxy_None ;
uProxyIP = 0 ;
wProxyPort = 0 ;
memset ( szUserName, 0, 256 ) ;
memset ( szUserPwd, 0, 256 ) ;
memset ( szDomain, 0, 64 ) ;
}

const _tagProxyInfo & operator=(const _tagProxyInfo & proxy)
{
byProxyType = proxy .byProxyType ;
uProxyIP = proxy .uProxyIP ;
wProxyPort = proxy .wProxyPort ;
strncpy ( szUserName, proxy .szUserName, 256 ) ;
strncpy ( szUserPwd, proxy .szUserPwd, 256 ) ;
strncpy ( szDomain, proxy .szDomain, 64 ) ;
return *this ;
}

}PROXYINFO, *LPPROXYINFO ;

#pragma pack()
PROXYINFO  proxy ;
...// 配置代理服务器
VARIANT  var ;
var .byref = &proxy ;
SetProxy (var) ;

  void GetProxy(VARIANT varProxy)

获取代理服务器信息

参数说明:
    VARIANT varProxy [out] 返回的代理服务器的信息

返回值:
    无

例子: 
PROXYINFO  proxy ;
VARIANT var ;
var .byref = &proxy ;
GetProxy (var) ;

  long RegisterNewUser(VARIANT varNewUserInfo)

注册一个新的用户

参数说明:
    const VARIANT FAR & varNewUserInfo  新用户注册的信息。

返回值:
    0 表明成功    -1 表明内部主窗口初始化失败   -2 传入的参数不能为空   -3 指定的 ID 不合法,所有的 ID 必须大于等于 100 (100之内全部为系统
   ID)  -4 表明已经存在此 ID  -5 表明提交注册信息失败

例子:

#pragma pack(1)
 // 用户注册信息
typedef struct _tagPPRegInfo
{
DWORD dwUserID ;                       // 用户 ID
char szRealName[uNameLen] ;        // 用户的真实姓名
char szUserPwd[uPwdLen] ;            // 用户密码
char szNickName[uNickNameLen] ;// 用户的呢称
BYTE byBloodType ;             // 血型
BYTE byConstellation ;         // 星座
BYTE byCareer ;                // 职业
BYTE byShengXiao ;             // 生肖
char szFinishSchool[128] ;     // 毕业学校
char szHomePage[64] ;          // 个人主页
char szBrief[256] ;            // 个人描述
char szEmail[64] ;             // 电子邮件地址
char szLinkAddress[128] ;      // 联系地址
char szPostCode[8] ;           // 邮政编码
char szFixedPhone[16] ;        // 办公电话
char szMobile[16] ;            // 手机
DATE dtBirthday ;              // 生日
BYTE byAge ;                   // 年龄
BYTE bySex ;                   // 性别
char szCountry[64] ;           // 国家
char szProvince[64] ;          // 省或州
char szCity[64] ;              // 城市
BYTE byImgIdx ;                // 图像索引

_tagPPRegInfo () ;

}PPREGINFO, *LPPPREGINFO ;

inline _tagPPRegInfo::_tagPPRegInfo()
{
dwUserID = 0 ; 
byBloodType = 0;
byConstellation = 0 ;
byCareer = 0 ;
byShengXiao = 0 ;
byAge = 0 ;
bySex = 0 ;
dtBirthday = 0 ;
byImgIdx = 0 ;

memset ( szRealName, 0, uNameLen ) ;
memset ( szUserPwd, 0, uPwdLen ) ;
memset ( szNickName, 0, uNickNameLen ) ;
memset ( szFinishSchool, 0, 128 ) ;
memset ( szHomePage, 0, 64 ) ;
memset ( szBrief, 0, 256 ) ;
memset ( szEmail, 0, 64 ) ;
memset ( szLinkAddress, 0, 128 ) ;
memset ( szPostCode, 0, 8 ) ;
memset ( szFixedPhone, 0, 16 ) ;
memset ( szMobile, 0, 16 ) ;
memset ( szCountry, 0, 64 ) ;
memset ( szProvince, 0, 64 ) ;
memset ( szCity, 0, 64 ) ;
}
#pragma pack()

PPREGINFO  reg ;
... // 初始化新用户注册的信息
VARIANT var ;
var .byref = &reg ;
int nRet = RegisterNewUser (&var); ;
if (nRet != 0) printf("新用户注册不成功!");

  long Logon(VARIANT varUserInfo)

登录到到服务器

参数说明:
    VARIANT varUserInfo  用户的登录信息

返回值:
    0 表明成功    -1 表明内部主窗口初始化失败   -2 传入的参数不能为空  -3 已经处于登录状态,如果您想重新登录,请首先调用 Logoff,然后再登录
    -4 别的错误

例子:
typedef struct _tagLogonInfo
{
DWORD dwUserID ;
char szUserName [64] ;
char szPwd [16] ;
}LOGON_USER ;


LOGON_USER  logon ;
...// 初始化登录信息
VARIANT  var ;
var .byref = &logon ;
Logon (var) ; 

  long IsLogon()

判断当前用户是否已经登录

参数说明:
    无

返回值:
    0 表明已经登录    -1 表明内部主窗口初始化失败 

  long Logoff() 

注销当前的登录,下线

参数说明:
    无

返回值:
    0 表明成功    -1 表明内部主窗口初始化失败   

  long GetOnlineCount(long * plOnlineCount)

获取当前在线用户的个数,不包括当前在线的好友,在线好友可以通过 GetFriendInfo 接口获取。

参数说明:
    long  * plOnlineCount [out] 返回的当前在线用户的个数。

返回值:
    0 表明成功    -1 表明内部主窗口初始化失败   -2 传入的参数不能为空

例子:
    long lOnlineCount = 0 ;
    GetOnlineCount (&lOnlineCount) ;

  long GetOnlineInfo(VARIANT * pvarOnline)

获取当前在线用户的简洁信息

参数说明:
    VARIANT  * pvarOnline [out] 返回当前在线用户的信息

返回值:
    0 表明成功    -1 表明内部主窗口初始化失败   -2 传入的参数不能为空  -3 传入的参数内存空间不够,引发内存读取异常

例子:
    typedef struct _tagSimpleUser
   {
   DWORD dwUserID ;
   char szUserName[64] ;    // 用户的名称
   WORD wSex ;              // 用户的性别 0 - 男、 1 - 女
   WORD wCurState ;         // 0 不在线, 不等于 0 在线
   }SIMPLE_USER, *LPSIMPLE_USER ;

   long lOnlineCount = 0 ;
   GetOnlineCount (&lOnlineCount) ;
   SIMPLE_USER * pSimpleUser = new SIMPLE_USER[lOnlineCount] ;
   VARIANT var ;
   var .byref = pSimpleUser ;
   GetOnlineInfo (&var) ;
   ...//
   delete []pSimpleUser ;
   pSimpleUser = NULL ;
 

  long AskHand(long dwPeerID, BSTR bstrAskReason)

请求加对方为自己的好友

参数说明:
    long dwPeerID               对方的 ID
    BSTR bstrAskReason  请求说明,大小小于 1000 字节

返回值:
    0 表明请求发送成功    -1 表明内部主窗口初始化失败   

例子:
   AskHand (1000, "Hello, My good friend, nice to meet you!") ;

  long DelFriend(long lFriendID)

删除一个好友

参数说明:
    long lFriendID  好友的 ID 

返回值:
    0 表明成功    -1 表明内部主窗口初始化失败   -2 向服务器提交请求失败

  long GetFriendCount(long* plFriendCount)

获取好友用户的个数

参数说明:
    long * pLFriendCount  好友用户的个数

返回值:
    0 表明成功    -1 表明内部主窗口初始化失败   -2 传入的参数不能为空  

例子:
   参考 GetOnlineCount () ;

  long GetFriendInfo(VARIANT * pvarFriendInfo)

获取好友用户的简洁信息

参数说明:
    VARIANT  * pvarFriendInfo [out] 返回好友用户的简洁信息

返回值:
    0 表明成功    -1 表明内部主窗口初始化失败   -2 传入的参数不能为空  -3 传入的参数内存空间不够,引发内存读取异常

例子:
    typedef struct _tagSimpleUser
   {
   DWORD dwUserID ;
   char szUserName[64] ;
   WORD wSex ;
   WORD wCurState ;
   }SIMPLE_USER, *LPSIMPLE_USER ;

   long lFriendCount = 0 ;
   GetFriendCount (&lFriendCount) ;
   SIMPLE_USER * pSimpleUser = new SIMPLE_USER[lFriendCount] ;
   VARIANT var ;
   var .byref = pSimpleUser ;
   GetFriendInfo (&var) ;
   ...//
   delete []pSimpleUser ;
   pSimpleUser = NULL ;
 

  long SendMsg(long lFriendID, BSTR bstrMsg)

发送文本消息到好友用户

参数说明:
    long  lFriendID      好友用户的 ID
   BSTR  bstrMsg         发送的消息内容,大小小于 1000 字节

返回值:
    0 表明成功    -1 表明内部主窗口初始化失败   -2 、-3不存在此用户  -4 此用户不在线  -5 与对方建立通讯失败 -6 发送的消息内容过大 -7 发送消
   息失败 

例子:
    Send (1000, "Hello, good morning!") ;
 

  long AddGroup(BSTR bstrNewGroupName, long* plNewGroupID)

添加一个新组

参数说明:
    BSTR  bstrNewGroupName        新组的名字。
    long * lNewGroupID  [out] 添加新组成功后,所分配的新的 ID 

返回值:
    0 表明成功    -1 表明内部主窗口初始化失败   -2 传入的参数名称不能为空  -3 向服务器提交数据失败

例子:
     long lGroupID = 0 ;
    AddGroup ("我的同事", &lGroupID) ; 

  long MdfGroup(long lGroupID, LPCTSTR bstrNewGroupName) 

修改组的名称

参数说明:
    long lGroupID                          组的 ID
    LPCTSTR bstrNewGroupName  组的新名字

返回值:
    0 表明成功    -1 表明内部主窗口初始化失败   -2 新组的名称不能为空  -3 、-4 不存在此组  -5 提交组的新名字到服务器失败

例子:
    MdfGroup (1000, "我的朋友") ; 

  long DelGroup(long lGroupID)

删除一个指定的组

参数说明:
    long  lGroupID  组的 ID

返回值:
    0 表明成功    -1 表明内部主窗口初始化失败   -2 、-3、-4 传入的参数不能为空  -5 提交服务器失败

  long SendGroupMsg(long lGroupID, BSTR bstrGroupMsg)

发送组消息,发送给组内所有在线用户文本消息,消息大小小于 1000 字节

参数说明:
    long  lGroupID         组的 ID
    BSTR bstrGroupMsg    所要发送的消息

返回值:
    0 表明成功    -1 表明内部主窗口初始化失败   -2 发送的内容不能为空  

  long MovePeerUser(long lPeerUserID, long lNewGroupID)

转移一个用户到指定的组

参数说明:
    long lPeerUserID    好友用户的 ID
    long lNewGroupID   转移到组的名字

返回值:
    0 表明成功    -1 表明内部主窗口初始化失败   -2、-3 找不到组或用户的接点  -4 转移用户提交服务器失败

  long GroupCount(long * plGroupCount) 

获取组的个数 

参数说明:
    long  * plGroupCount [out]  获取当前组的个数

返回值:
    0 表明成功    -1 表明内部主窗口初始化失败   -2 传入的参数不能为空  

例子:
    long lGroupCount = 0 ;
    GetGroupCount (&lGroupCount) ;

  long GetGroupInfo(VARIANT * pvarGroupInfo)

获取组的信息

参数说明:
    VARIANT  * pvarGroupInfo [out] 返回组的信息

返回值:
    0 表明成功    -1 表明内部主窗口初始化失败   -2 传入的参数不能为空  -3 传入的参数内存空间不够,引发内存读取异常

例子:
    typedef struct _tagGroup
   {
   WORD wGroupID ;
   char szGroupName [MAX_PATH] ;
   }GROUP_INFO, *LPGROUP_INFO ;

    long lGroupCount = 0 ;
    GetGroupCount (&lGroupCount) ;
   GROUP_INFO * pGroup = new GROUP_INFO [lGroupCount] ;
   VARIANT var ;
   var .byref = pGroup ;
   GetGroupInfo (&var) ;
   ...//
   delete []pGroup ;
   pGroup = NULL ; 

  long GetGroupUserCount(long lGroupID, long* plUserCount)

获取指定组内好友用户的个数

参数说明:
    long lGroupID                         组的 ID
   long * plUserCount [out]   用户的个数

返回值:
    0 表明成功    -1 表明内部主窗口初始化失败   -2 传入的参数不能为空 

例子:
    long lUserCount = 0 ;
    GetGroupUserCount (1000, &lUserCount) ;

  long GetGroupUserInfo(long lGroupID, VARIANT * pvarUserInfo)

获取组内各个用户的简洁信息

参数说明:
    long  lGroupID                         组的 ID
    VARIANT * pvarUserInfo [out]  返回组内成员的简洁信息

返回值:
    0 表明成功    -1 表明内部主窗口初始化失败   -2 传入的参数不能为空  -3 传入的参数内存空间不够,引发内存读取异常

例子:
    typedef struct _tagSimpleUser
   {
   DWORD dwUserID ;
   char szUserName[64] ;
   WORD wSex ;
   WORD wCurState ;
   }SIMPLE_USER, *LPSIMPLE_USER ;

    long lUserCount = 0 ;
    GetGroupUserCount (1000, &lUserCount) ;
   SIMPLE_USER * pGroupUser = new SIMPLE_USER [lUserCount] ;
   VARIANT var ;
   var .byref = pGroupUser ;
   GetGroupUserInfo (1000, &var) ;
   ...//
   delete []pGroupUser  ;
   pGroupUser  = NULL ; 

  long ShowLogon()

显示登录对话框

参数说明:
    无

返回值:
    0 表明成功    -1 表明内部主窗口初始化失败  

  long ShowConfig()

显示配置对话框

参数说明:
    无

返回值:
    0 表明成功    -1 表明内部主窗口初始化失败   

  long ShowOnline()

显示在线对话框

参数说明:
    无

返回值:
    0 表明成功    -1 表明内部主窗口初始化失败   

  long ShowPeerInfo(long lPeerUserID, long lIsUpdate)

以对话框的形式,显示指定用户的信息

参数说明:
    long lPeerUserID    此用户的 ID
    long lIsUpdate       是否更新此用户的信息 0 不更新, 1 更新

返回值:
    0 表明成功    -1 表明内部主窗口初始化失败   -2 提取此用户的信息失败

  long GetCurUser(long * plUserID, BSTR * bstrUserName)

获取当前的用户 ID 和 名称

参数说明:
    long * plUserID  [out]        当前用户的 ID
    BSTR * bstrUserName [out]  当前用户的姓名

返回值:
    0 表明成功    -1 表明内部主窗口初始化失败   -2 参数不能为空

  void SetClientMode(long lSvrMode)

设置客户端的模式,是登录集群服务器还是单服务器。(系统会自动识别,此接口意义不大)

参数说明:
    long     lSvrMode [in]    0 - 集群服务器, 1 - 单服务器

  (运行过程中,不能设置此接口)

  short SetDownload(BSTR pstrDownloadUrl)

设置软件的更新地址(对应登录界面界面上的“下载最新版本>>”,默认是 cici 的官方下载地址)

参数说明:
    BSTR    pstrDownloadUrl [in]  NULL 表示不显示,非空则用户点击时,自动连接到目标地址

返回值:
    0 表明成功    -1 表示失败

  long IsClientServe(long dwUserID)

判断对方是否是客服人员(对于 Web 应用,此接口未实现)

参数说明:
    long   dwUserID        查询的用户 ID

返回值:
    0 表明成功    -1 失败

  void SetSpaceURL(BSTR strSpaceURL)

设置“我的空间”页面页面连接地址 (对应“我的空间”面板,默认是 cici 的空间地址)

参数说明:
    BSTR    pstrDownloadUrl [in] 设置空间地址,让用户访问所提供连接空间的服务(比如:社区,BBS,博客等)

返回值:
    0 表明成功    -1 表示失败