QQ界面的模拟实现(下)

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

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

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

QQ界面的模拟实现(下)

作者:小帅

下载源代码

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

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

(本文来源于图老师网站,更多请访问https://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控件,将其设置成很细小,且不可视,定制在对话框的最上和最下位置,这样你就可以随时获得你所需要的按钮移向的位置,另外每个按钮的长宽相同,方便啦处理!

六、发送消息对话框

在这里只讲两部分:

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

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)
void CMyQQDlg::OnDblclkMyFriend(NMHDR* pNMHDR, LRESULT* pResult) {NM_LISTVIEW* pNMListView = (NM_L
                        

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

延伸阅读
标签: 电脑入门
好多网友看到qq透明皮肤教程的会发现有的登陆界面也是透明的,上面还可以添加文字,而且还可以随心所欲的更换文字内容,快来学习一起制作吧!喜欢的朋友可以收藏一下。 修改登陆界面的字体如图所示: 1.首先点击qq图标查看属性,点击上一步图标 2.有一个I18N 文件,打开进入2052文件 3.找到PreLoadStringBundle.xml文件 4....
轻松实现类VC界面 作者:浙江省温岭电信局 王骏 下图是一个类似VC的界面,左边、底下有两个可浮动、可变大小的控制窗口。许多朋友都希望在自己的程序中实现类似的界面,因为此种类型的界面用途很广、通用性很强,所以笔者总结了一下实现的步骤,辑此一文,并提供源代码供大家参考! 下载本文示例工程 44.3...
标签: 电脑入门
工具/原料QQ账号,电脑一台。 1登陆QQ 2然后找到最上方处的管理界面器,图老师小编此处以新闻咨询为例,比如说放到前面 3选择旁边的+号图标 4打开界面管理页面,然后在右边框,选择自己想要的栏目,同时顺序也是可以调动的。上下移动 5如下图可以看到,新闻资讯被调到前面来了。 6如果想全部选择,那么展现的样子会是如下...
Buoy 是一个构建在 Swing 之上的免费用户界面(UI)工具包,它为 UI 开发人员提供了方便性和简单性。在本文中作者用一个简单的 fractal 用户界面程序,介绍了 Buoy 可以做什么、为什么这么做。第一次尝试用 Java 语言构建简单的用户界面时,我对 Swing 接口的复杂性感到有些惊奇。老实说,有点想打退堂鼓。最近,一个朋友向我提到,他使用...
轻松实现类 MSDN 2002 界面 作者:Cuick 下载源代码 看到这个标题大家肯定会想到王骏发表在知识库第十一期的《轻松实现类VC界面》,呵呵,没错,俺参考并借用了他的部分代码,在这里先表示感谢! 一直想实现类似 MSDN 2002 式样的界面,到 codeproject 也没找...

经验教程

824

收藏

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