WEB开发网
开发学院软件开发VC VC模拟实现QQ界面(下) 阅读

VC模拟实现QQ界面(下)

 2007-10-04 20:11:17 来源:WEB开发网   
核心提示:六、发送消息对话框在这里只讲两部分:1.动态产生消息对话框2.按Ctrl+Enter键发送消息动态产生对话框,一般是先在资源中建立一个对话框模板,VC模拟实现QQ界面(下)(2),用Create函数产生一个对话框实例, 本程序是这样实现的:void CMyQQDlg::OnDblclkMyFriend(NMHDR* p

六、发送消息对话框

在这里只讲两部分:

1.动态产生消息对话框

2.按Ctrl+Enter键发送消息

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

void CMyQQDlg::OnDblclkMyFriend(NMHDR* pNMHDR, LRESULT* pResult)
{
   NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
   int m_nCurrentSel = pNMListView->iItem;
   CString str;
   str=m_List1.GetItemText(m_nCurrentSel, NULL);
  
   CQQSendMessage *dlg=new CQQSendMessage;
   dlg->msg=str;
   dlg->Create(IDD_QQ_MESSAGE);
   dlg->SetWindowText("你正在与"+str+"聊天当中");
   dlg->SetIcon(AfxGetApp()->LoadIcon(IDR_MAINFRAME), false);
   dlg->ShowWindow(SW_SHOW);
  
   *pResult = 0;
}
第2个键盘发送可以做如下处理:BOOL CQQSendMessage::PreTranslateMessage(MSG* pMsg)
{
   // TODO: Add your specialized code here and/or call the base class
   if(pMsg->message==WM_KEYDOWN)
   { 
     if(pMsg->wParam==VK_RETURN  &&  GetKeyState(VK_CONTROL)&0x80)
     { 
       {
         //处理发送对话的内容 
         OnSend();
         return  1; 
       }
     } 
   } 
   return CDialog::PreTranslateMessage(pMsg);
}
这样你按下Ctrl+Enter键后就会处理OnSend()函数,这样就可以实现快捷键发送消息啦!

七、在桌面顶端上悬挂QQ

这样的实现不知道满意不满意,可以用一个时间片,时刻测试鼠标的坐标,并判断它所处的范围,以判断是否悬挂对话框!

悬挂QQ,并不是让其隐藏而是要留下只剩下一根细线,当鼠标移到这根细线的时候,就立刻反显示!悬挂代码如下:

  LPPOINT pt=new CPoint;
   GetCursorPos(pt);
   CRect rect;
   GetWindowRect(&rect);
   if(rect.PtInRect(*pt))
   {
     if(rect.top<=2)
     {
       MoveWindow(rect.left, rect.top,
         dlgrect.Width(), dlgrect.Height(), true);
     }
   }
   else
   {
     if(rect.top<=2)
     {
       MoveWindow(rect.left, 0, rect.Width(), 3, true);
     }
   }
   delete pt;

小结:

不知道通过上面的讲述,你是否感爱到QQ的巧妙?由于本人也在学习阶段,所以分析的也不是很到位,但也希望通过这次学习能有所提高,可以与本人联系: xuwenq88@126.com

上一页  1 2 

Tags:VC 模拟 实现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接