VC模拟实现QQ界面(上)

2016-02-19 21:46 112 1 收藏

清醒时做事,糊涂时读书,大怒时睡觉,无聊时关注图老师为大家准备的精彩内容。下面为大家推荐VC模拟实现QQ界面(上),无聊中的都看过来。

【 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功能,并逐一实现!

  三、登陆时任务栏图标的动态显示

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

  基础部分:本文发表于http://bianceng.cn(编程入门网)

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

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();

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

  仅仅是个模拟,并没有考虑到程序的具体操作过程,也可以定义一个时间,然后用 KillTime 函数终止也可以!

来源:http://www.tulaoshi.com/n/20160219/1627091.html

延伸阅读
     一般情况下,程序开发人员都希望自己的程序美观大方,为了达到这一个要求,想尽办法美化自己的程序,如果在界面上适当的地方添加并显示3D文字,将不失为一个好的选择,可以达到事半功倍的效果,本文针对这一问题,通过一个简单的小程序,介绍如何实现这一目标。有兴趣的读者可以稍加改动,将该方法应用到自己的程序中...
DES算法及其在VC++6.0下的实现(上) 作者:航天医学工程研究所四室 朱彦军 下载本文示例源代码 摘要: 本文介绍了一种国际上通用的加密算法—DES算法的原理,并给出了在VC++6.0语言环境下实现的源代码。最后给出一个示例,以供参考。 关键字:DES算法、明文、密文、密钥、VC; ...
引言 工具条作为大多数标准的Windows应用程序的一个重要组成部分,使其成为促进人机界面友好的一个重要工具。通过工具条极大方便了用户对程序的操作,但是在由Microsoft Visual C++开发环境所创建的应用程序框架中的工具条只是一个简单的按钮的集合,在功能上也仅仅是起到了菜单快捷方式的作用,而没有做到象VC、Word等软件的工具条那样,...
相信QQ2004大家玩过吧!其中对好友的IP和哪个地方的显示是不是很爽的啊。哪就跟我来让我看来看究竟。以下为实现原理。 首先载入Winsock动态库,代码如下: int CIPAddressDlg::StartUp() { WORD wVersionRequested; WSADATA wsaData; int err; wVersionReuqested=MAKEWORD(2,0); err=WSAStartup(wVersionReuqested, &wsaDa...
看过徐景周写过的一篇“程序界面多模式显示的实现”,在一个应用程序中使程序拥有多种显示模式,但是这个界面是由SDI的MFC文档视图结构实现,但是使用的代码在MDI的多文档/视图中不能实现,通过MSDN我找到了一些实现 MDI 的多模式实现方法,不敢独享,与大家分享 。 利用SDI和MDI实现这种多模式的显示的应用程序,第一步首先要实现的...

经验教程

881

收藏

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