手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>C/C++>列表

用VisualC 实现QQ界面的模拟

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
  大凡用过电脑,上过网的朋友都用过QQ,对QQ的一些交互界面可能垂慕已久,的确,无论是其生动的企鹅形象,还是“滴滴的”消息声音,以及“刷”的菜单等功能,简单单的消息发送,以及快速的回显和众多卡通的QQ头像等铸就了其在网络的良好地位,本人对其研究虽不够透彻,但也做一些探索性的尝试,并简单的实现了比较突出的功能,在模拟的过程中,主要实现了以下几部分的功能:

  QQ菜单,也称抽屉菜单(也有的叫导航菜单);

  QQ头像的列表显示;

  简易的消息发送模拟;

  简易的上线,隐身模拟;

  悬挂QQ;

  本程序的运行界面如图:


  当然啦,现在的QQ功能强大,如QQ直播,联系人,个人设置等功能,视频聊天等众多强悍功能,本人能力不及,并没有实现!下面,就开始QQ模拟之旅吧!

  一、准备

  在实现QQ界面之前,有一些准备工作,请确定你已经有如下知识:

  1.具备C,C ,VC的初步知识!

  2.具备一定的思考能力!

  3.要有一定的想法

  4.熟悉QQ界面

  5.具备一些软件工具:如Visual C , Resource Hack(这个可以找到.exe、.dll 文件的资源,包括对话框和控件的属性.

  二、剖析QQ界面

  1.QQ头像和图标

  这是QQ做的特别好的地方,大家如果留心的话会发现QQ附带的功能实在强悍,可以视频聊天,截图,发送文件,记录我的好友等信息,等这些功能全部仅在一个对话框或一个设置框中实现,给人很轻松的感觉,企鹅的形象深入民心,获取关键的图标是很必要的。

  用Resource Hacker对你安装的QQ.exe进行资源导出吧,这样获取的图标文件.ico为你所用,不要再为没有形象ICO而烦恼啦!

  在你的QQ安装目录下面有个QQface,里面有QQ所需要用到的所有QQ头像,如果你不知道的话,也可以直接下载本人的源代码,里面已经将100张QQ头像嵌在里面啦,直接用,不要客气!

  2.登陆界面

  QQ的登陆界面简单易了,风格明朗,本人已尝试做了一个,可以到知识库里下一下看,做的并不好,但长的蛮像的!本人并未实现网络登陆功能,以至很多朋友有被欺骗的感觉,本人在这说明:已经在程序说明部分说明并未实现网络功能,如果对登陆器,或外挂比较感兴趣可以从网络上搜索一些资料,应该有的下载!

  3.登陆时任务栏图标

  这个可能对网速慢的朋友可能会注意到,这又是QQ花心思的地方。

  4.上线时的声音及消息显示时的人物跳动

  任务栏的图标也跟着改变啦,可以近ctrl alt z快捷键迅速查看留言啦!

  5.快捷方便的抽屉菜单

  我个人非常欣赏该功能,所以讲解的过程中本人会做最详细的阐述!

  6.发送消息对话框

  消息来时候的很清脆的声音及快速的回显!

  7.在桌面顶端上悬挂QQ

  这使QQ占用很少的桌面空间,值得注意!

  将在下面重点讲述实现3到7功能,并逐一实现!
  三、登陆时任务栏图标的动态显示

  网络上关于在任务栏上添加图标的代码说明不少,本人也是参考了书书籍和借签了一部分代码后,并做了以下模拟处理。

  基础部分:

NOTIFYICONDATA nid;
//此处在类中定义

void CMyQQDlg::DisplayInTask()
{
if(isDisplayInTask)
{
//初始化nid
nid.cbSize = sizeof(NOTIFYICONDATA);
nid.hWnd =this->m_hWnd;
nid.uID = IDR_QQMENU;
nid.uFlags = NIF_ICON | NIF_TIP|NIF_MESSAGE ;
nid.hIcon = m_hIcon;
strcpy (nid.szTip, "任务栏图标");
nid.uCallbackMessage=WM_DISPLAYTASKICON;
Shell_NotifyIcon(NIM_ADD,&nid);
isDisplayInTask=FALSE;
}
else
{
Shell_NotifyIcon(NIM_DELETE,&nid);
isDisplayInTask=true;
}
}
  关于Shell_NotifyIcon这个函数共有三种操作,分别为NIM_ADD, NIM_MODIFY, NIM_DELETE,为系统函数,大家对这个不熟悉也不要紧,也就是实现在任务栏上显示的功能,在程序的OnInitDialog函数中添加如下代码:

isDisplayInTask=true;
DisplayInTask(); //显示到任务栏里面去;
Sleep(500);
OnOutline();
Sleep(500);
OnHidden();
Sleep(500);
OnOutline();
Sleep(500);
OnHidden();
  仅仅是个模拟,并没有考虑到程序的具体操作过程,也可以定义一个时间,然后用 KillTime 函数终止也可以!

  四、上线时的声音及消息显示时的人物跳动

  本人并未实现人物跳动,并不知道是切换图片,还是更改图片的位置,所以此功能有待各位的指点!

  五、动感十足的抽屉菜单

  我对QQ的这个菜单印象特深,犹其是配的“刷”的声音,充分体验到QQ的生动!下面就详细介绍自己是如何一步步实现的:

  说明:

  在程序的一开始就获得最顶端按钮的位置:

// 将该对话框放置到右上角;
GetWindowRect(&dlgrect);
MoveWindow(GetSystemMetrics(SM_CXSCREEN)-dlgrect.Width()-20, 0,
dlgrect.Width(), dlgrect.Height(), true);
//////////////////////////////////////////////////////////////////////

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

热点关注
IDC资讯 虚拟主机 域名注册 托管租用 vps主机 智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 价格总览 | 资讯中心 | 友情链接 | 网站地图 | 招贤纳士 | RSS