QQ界面的模拟实现(上)

guangbjq911

guangbjq911

2016-01-29 12:08

QQ界面的模拟实现(上),QQ界面的模拟实现(上)

QQ界面的模拟实现(上)

作者:小帅

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/cyuyanjiaocheng/)

下载源代码

  大凡用过电脑,上过网的朋友都用过QQ,对QQ的一些交互界面可能垂慕已久,的确,无论是其生动的企鹅形象,还是“滴滴的”消息声音,以及“刷”的菜单等功能,简单单的消息发送,以及快速的回显和众多卡通的QQ头像等铸就了其在网络的良好地位,本人对其研究虽不够透彻,但也做一些探索性的尝试,并简单的实现了比较突出的功能,在s模拟的过程中,主要实现了以下几部分的功能: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){//初始化nidnid.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 函数终止也可以!
展开更多 50%)
分享

猜你喜欢

QQ界面的模拟实现(上)

C语言教程 C语言函数
QQ界面的模拟实现(上)

QQ界面的模拟实现(下)

C语言教程 C语言函数
QQ界面的模拟实现(下)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

VC模拟实现QQ界面(上)

编程语言 网络编程
VC模拟实现QQ界面(上)

VC模拟实现QQ界面(下)

编程语言 网络编程
VC模拟实现QQ界面(下)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

VC界面的实现

C语言教程 C语言函数
VC界面的实现

Android仿QQ空间主页面的实现

编程语言 网络编程
Android仿QQ空间主页面的实现

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

jsp中任意文字转Unicode的通用模块

jsp中任意文字转Unicode的通用模块

《全民飞机大战》史上最酷炫boss详细讲解

《全民飞机大战》史上最酷炫boss详细讲解
下拉加载更多内容 ↓