QQ界面的模拟实现(上)

2016-01-29 12:08 36 1 收藏

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

【 tulaoshi.com - C语言心得技巧 】

QQ界面的模拟实现(上)

作者:小帅

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

下载源代码

  大凡用过电脑,上过网的朋友都用过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 函数终止也可以!

来源:https://www.tulaoshi.com/n/20160129/1484801.html

延伸阅读
标签: 电脑入门
好多网友看到qq透明皮肤教程的会发现有的登陆界面也是透明的,上面还可以添加文字,而且还可以随心所欲的更换文字内容,快来学习一起制作吧!喜欢的朋友可以收藏一下。 修改登陆界面的字体如图所示: 1.首先点击qq图标查看属性,点击上一步图标 2.有一个I18N 文件,打开进入2052文件 3.找到PreLoadStringBundle.xml文件 4....
轻松实现类VC界面 作者:浙江省温岭电信局 王骏 下图是一个类似VC的界面,左边、底下有两个可浮动、可变大小的控制窗口。许多朋友都希望在自己的程序中实现类似的界面,因为此种类型的界面用途很广、通用性很强,所以笔者总结了一下实现的步骤,辑此一文,并提供源代码供大家参考! 下载本文示例工程 44.3...
标签: 服务器
在Ubuntu系统上安装KDE图形化界面的教程   KDE Plasma 5.2已经发布一段时间了,在本篇中我们将看到如何在Ubuntu 14.10 上安装KDE Plasma 5.2。 Ubuntu的默认桌面环境Unity很漂亮还有很多特性,但是如果你问任何有经验的Linux用户关于桌面定制能力,他的回答将是KDE。KDE在定制上是王者并且它得到流行大概是由于Ubuntu有官方的KDE...
标签: 电脑入门
工具/原料QQ账号,电脑一台。 1登陆QQ 2然后找到最上方处的管理界面器,图老师小编此处以新闻咨询为例,比如说放到前面 3选择旁边的+号图标 4打开界面管理页面,然后在右边框,选择自己想要的栏目,同时顺序也是可以调动的。上下移动 5如下图可以看到,新闻资讯被调到前面来了。 6如果想全部选择,那么展现的样子会是如下...
Buoy 是一个构建在 Swing 之上的免费用户界面(UI)工具包,它为 UI 开发人员提供了方便性和简单性。在本文中作者用一个简单的 fractal 用户界面程序,介绍了 Buoy 可以做什么、为什么这么做。第一次尝试用 Java 语言构建简单的用户界面时,我对 Swing 接口的复杂性感到有些惊奇。老实说,有点想打退堂鼓。最近,一个朋友向我提到,他使用...

经验教程

346

收藏

48
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部