void SetAccount( LPCTSTR lpszQQ, LPCTSTR lpszPwd );
//设置账户
//lpszQQ - QQ号码
//lpszPwd - 密码
BOOL CheckNeedVerify();
//检测是需要验证码
//返回值 - 需要验证返回 TRUE,不需要则返回 FLASE
HGLOBAL LoadVerify();
//读取验证码
//返回值 - jpg格式的验证码图片数据
void FreeHGlobal( HGLOBAL hMem );
//释放内存
//hMem - 内存地址
void SetVerify( LPCTSTR lpszVer );
//设置验证码。需要验证码的情况下才有必要调用该方法,验证码由 LoadVerify 得到,由用户输入
//lpszVer - 用户输入的验证码
UINT Login();
//登录
//返回值 - 登录成功返回 LOGIN_SECCEED,验证码错误返回 LOGIN_VMISSED,密码错误返回 LOGIN_PMISSED,未知错误返回 LOGIN_UNKNOW
BOOL QueryFriendsList();
//请求好友列表。请求成后列表存放在内存中
//返回值 - 成功返回 TRUE,否则返回 FALSE
LPFRIENDINFO GetFriendAt( int nIndex );
//通过索引得到指定好用信息
//nIndex - 索引值,从0开始
//返回值 - 返回好友信息结构体指针,请看其定义
int GetFriendsSize();
//得到列表总好友的总数
//返回值 - 返回总数
BOOL PublishShuoshuo( LPCTSTR lpszContent, BOOL bSync = FALSE, BOOL bPrivate = FALSE );
//发表说说
//lpszContent - 说说内容
//bSync - 是否同步到签名
//bPrivate - 是否为私密说说(只有自己可见)
//返回值 - 发表成功返回 TRUE,否则为 FALSE
BOOL LeaveMessage( LPCTSTR lpszMessage, LPCTSTR lpszTagQQ );
//给指定QQ留言
//lpszMessage - 内容
//lpszTagQQ - 目标QQ
//返回值 - 成功返回 TRUE,否则 FALSE
SHUOINFO* GetShuoshuos( LPCTSTR lpszTagQQ, const int iStartPos, int& iAmount );
//得到指定QQ的说说。用完一定要调用 ReleaseShuoshuos 释放内存,不然会内存溢出
//iStartPos - 指定从第几条开始,索引为0
//iAmount - 这个整形引用,指定要获取的条数,如果说说总数少于其值,则函数返回后 iAmount 的值就是实际数量的值
//返回值 - 说说信息结构体数组的首地址指针,失败返回 NULL
void ReleaseShuoshuos( SHUOINFO *pShuo );
//释放说说所占用的内存
//pShuo - 说说信息结构体数组的首地址指针
BOOL CommentShuoshuo( LPCTSTR lpszTagQQ, LPCTSTR lpszTid, LPCTSTR lpszText );
//评论指定QQ的说说
//lpszTagQQ - 目标QQ
//lpszTid - topic ID,SHUOINFO 的一个成员
//lpszText - 评论内容
//返回值 - 成功返回 TRUE,否则 FALSE
BOOL CommentShuoshuo( SHUOINFO shuoInfo, LPCTSTR lpszText );
//评论指定QQ的说说,重载
//shuoInfo - 说说信息结构体
//lpszText - 评论内容
//返回值 - 成功返回 TRUE,否则 FALSE
BOOL PublishBlog( LPCTSTR lpszSubject, LPCTSTR lpszContent );
//发表日志
//lpszSubject - 日志的主题
//lpszContent - 日志的内容
//返回值 - 发表成功返回 TRUE,失败返回 FALSE
BLOGINFO* GetBlogs( LPCTSTR lpszTagQQ, const int iStartPos, int& iAmount );
//得到指定QQ的日志。用完一定要调用 ReleaseBlogs 释放内存,不然会内存溢出
//iStartPos - 指定从第几条开始,索引为0
//iAmount - 这个整形引用,指定要获取的条数,如果日志总数少于其值,则函数返回后 iAmount 的值就是实际数量的值
//返回值 - 日志信息结构体数组的首地址指针,失败返回 NULL
void ReleaseBlogs( BLOGINFO *pBlog );
//释放日志所占用的内存
//*pBlog - 日志信息结构体数组的首地址指针
BOOL CommentBlog( LPCTSTR lpszTagQQ, LPCTSTR lpszBlogId, LPCTSTR lpszText );
//评论指定QQ的说说
//lpszTagQQ - 目标QQ
//lpszBlogId - 日志 ID,BLOGINFO 的一个成员
//lpszText - 评论内容
//返回值 - 成功返回 TRUE,否则 FALSE
BOOL CommentBlog( BLOGINFO blogInfo, LPCTSTR lpszText );
//评论指定QQ的日志,重载
//blogInfo - 日志信息结构体
//lpszText - 评论内容
//返回值 - 成功返回 TRUE,否则 FALSE
SHUOINFO* GetFreshShuoshuos( const int iStartPos, int& iAmount );
//得到所有好友最新发表的说说。用完一定要调用 ReleaseShuoshuos 释放内存,不然会内存溢出
//iStartPos - 指定从第几条开始,索引为0
//iAmount - 这个整形引用,指定要获取的条数,如果日志总数少于其值,则函数返回后 iAmount 的值就是实际数量的值
//返回值 - 说说信息结构体数组的首地址指针,失败返回 NULL
BLOGINFO* GetFreshBlogs( const int iStartPos, int& iAmount );
//得到所有好友最新发布的日志。用完一定要调用 ReleaseBlogs 释放内存,不然会内存溢出
//iStartPos - 指定从第几条开始,索引为0
//iAmount - 这个整形引用,指定要获取的条数,如果说说总数少于其值,则函数返回后 iAmount 的值就是实际数量的值
//返回值 - 日志信息结构体数组的首地址指针,失败返回 NULL
HGLOBAL GetHeadImage( LPCTSTR lpszTagQQ, BOOL bBig = TRUE );
//得到指定QQ的jpg格式头像图片数据
//lpszTagQQ - 目标QQ
//bBig - 指定取大图还是小图,TRUE 为大图,FALSE 为小图
void About();
//关于