龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

VC模拟实现QQ界面(下)[图]

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
四、上线时的声音及消息显示时的人物跳动 本人并未实现人物跳动,并不知道是切换图片,还是更改图片的位置,所以此功能有待各位的指点! 五、动感十足的抽屉菜单 我对QQ的这个

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

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

  五、动感十足的抽屉菜单

  我对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,"
"+myClass[i-1], i);
     }
     m_List1.InsertItem(0xffff,"", -1);

精彩图集

赞助商链接