|
六、发送消息对话框
在这里只讲两部分:
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
|