QQ界面的模拟实现(下)

源源110317

源源110317

2016-01-29 12:09

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

QQ界面的模拟实现(下)

作者:小帅

下载源代码

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

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

五、动感十足的抽屉菜单

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

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

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

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

// 将该对话框放置到右上角;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函数产生一个对话框实例,本程序是这样实现的:

void CMyQQDlg::OnDblclkMyFriend(NMHDR* pNMHDR, LRESULT* pResult) {NM_LISTVIEW* pNMListView = (NM_L      
展开更多 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刺客新符文搭配推荐

javamail在jsp中调用

javamail在jsp中调用

从零开始学习创建单选按钮

从零开始学习创建单选按钮
下拉加载更多内容 ↓