QQ界面的模拟实现(下)

2016-01-29 12:09 14 1 收藏

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

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

QQ界面的模拟实现(下)

作者:小帅

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

下载源代码

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

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

五、动感十足的抽屉菜单

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

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

// 将该对话框放置到右上角;GetWindowRect(&dlgrect);MoveWindow(GetSystemMetrics(SM_CXSCREEN)-dlgrect.Width()-20, 0,dlgrect.Width(), dlgrect.Height(), true);///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 获取得第一个按钮和最后一个按钮的位置GetDlgItem(IDC_QQFRIEND)->GetWindowRect(&rect0);ScreenToClient(&rect0);GetDlgItem(IDC_QQQUN)->GetWindowRect(&rect1);ScreenToClient(&rect1);
用一个重要的函数分别处理当按下不同铵钮时的反应:
void CMyQQDlg::ChangeView(){// 开始对按钮进行各个处理if(TopButtonNum!=1&&clicknum==1){//////////////////////////////////////////////////////////////////////////// QQ好友按钮已经置于最上层// 所以无需移动// 其余全置于下面m_QQothers.MoveWindow(0, rect1.bottom,rect0.Width(), rect0.Height(), true);m_QQqun.MoveWindow(0, rect1.bottom-rect0.Height(),rect0.Width(), rect0.Height(), true);//////////////////////////////////////////////////////////////////////////// QQ好友 if(isBigFace){m_List1.SetImageList(&m_imagelist2, LVSIL_SMALL);}else{m_List1.SetImageList(&m_imagelist1, LVSIL_SMALL);}m_List1.DeleteAllItems();for(int i=1; i<34; i++){m_List1.InsertItem(0xffff,"", -1);m_List1.InsertItem(0xffff,"n"+myClass[i-1], i);}m_List1.InsertItem(0xffff,"", -1);//////////////////////////////////////////////////////////////////////////// 显示该栏目的下的QQ好友, 隐藏其它栏目;m_List1.ShowWindow(SW_SHOW);m_List2.ShowWindow(SW_HIDE);treeCtrl.ShowWindow(SW_HIDE);return;}if(TopButtonNum!=2&&clicknum==2){// 先将排在它上面的按钮置上不闻;m_QQqun.MoveWindow(0, rect0.bottom,rect0.Width(), rect0.Height(), true);// 将排在它后面的按钮置后;m_QQothers.MoveWindow(0, rect1.bottom, rect0.Width(), rect0.Height(), true);// 显示该栏目的下的QQ群, 隐藏其它栏目;m_List1.ShowWindow(SW_HIDE);m_List2.ShowWindow(SW_HIDE);treeCtrl.ShowWindow(SW_SHOW);return;}////////////////////////////////////////////////////////////////////////////* ignoring these codes;if(TopButtonNum!=3&&clicknum==3){// 全部挤到上面去m_QQfriend.MoveWindow(0, rect0.top, rect0.Width(), rect0.Height(), true);m_QQqun.MoveWindow(0, rect0.bottom,rect0.Width(), rect0.Height(), true);m_QQothers.MoveWindow(0, rect0.bottom+rect0.Height(), rect0.Width(), rect0.Height(), true);//////////////////////////////////////////////////////////////////////////// 随机产生最近联系人m_List2.DeleteAllItems();for(int i=1; i<18; i++){int j=rand()%33;m_List2.InsertItem(0xffff,"", -1);m_List2.InsertItem(0xffff,"n我的朋友"+i, j);}m_List2.InsertItem(0xffff,"", -1);// 显示该栏目的下的QQ联系人或其它, 隐藏其它栏目;m_List1.ShowWindow(SW_HIDE);treeCtrl.ShowWindow(SW_HIDE);m_List2.ShowWindow(SW_SHOW);return;}//*///////////////////////////////////////////////////////////////////////////
  另外大家在处理的过程中,可以在QQ好友和最后一个菜单,这里是最近联系人,可以加一个picture控件,将其设置成很细小,且不可视,定制在对话框的最上和最下位置,这样你就可以随时获得你所需要的按钮移向的位置,另外每个按钮的长宽相同,方便啦处理!

六、发送消息对话框

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

在这里只讲两部分:

1.动态产生消息对话框
2.按Ctrl+Enter键发送消息

动态产生对话框,一般是先在资源中建立一个对话框模板,用Create函数产生一个对话框实例,本程序是这样实现的:

void CMyQQDlg::OnDblclkMyFriend(NMHDR* pNMHDR, LRESULT* pResult) {NM_LISTVIEW* pNMListView = (NM_L
                        

来源:http://www.tulaoshi.com/n/20160129/1484816.html

延伸阅读
标签: Web开发
表单,我相信这是前端开发者工作中最难处理的一个作业了.表单设计中几乎涉及了所有前端各方面的思想与技术.其用户注册页面即为最典型的代表,我要说设计本身没有对与错只有好与坏,就好像人的脸,只有漂亮与不漂亮,不能说某人的脸长错了.当然这其中就会有尺度去衡量,但难就难在这个尺度本身没有标准.好的,我已经为我将要阐述的观点铺好了下去的...
小鸡模拟器界面说明   我们打开新版小鸡模拟器,欢迎界主色调不变,新版本号1.2.3清晰可见。 新版本UI的结构并无太大的改动,不过右下角的按钮改为,新增新功能按钮。 在主界面中,可看到上方有5页,分别是、、、、,用手指在手机屏幕上左右滑动即可在各页面间切换,如图: 底部也有5个选项,分...
界面是什么? 是的,有些时候,我就在想这个简单的问题,而那时我的答案还是:界面是对软件应用解决方案的显性,使用图形化符号,向使用者解释它的功能与任务。 但最近一些认知却让我对这个问题有了新的回答:界面就是软件应用它本身。它不是一份对软件应用功能的图形化说明书,不是对软件应用功能与任务的图形化翻译,它就是软件应用本身,并...
标签: Web开发
不太像,而且比较耗资原,不知道有没有更好的办法=.= 火焰 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
本期特约:海外美术团队 Lyson 1.浏览器的差别跟用户分辨率差别是我们首先考虑的问题; 2.游戏页面设计,需贴主题、游戏背景等主线关系; 3.布局跟文案很重要; 一、浏览器的差别跟用户分辨率差别是我们首先考虑的问题; 首先在这里想要再次为新人提下,现在霸占互联网最小分辨率的还会是1024用户(特别是中国),加之IE、FF主流浏览器的比例...

经验教程

526

收藏

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