/// <summary> /// 聊天窗口打开事件 /// </summary> /// <param name="sender"></param> public void listView_fd_OpenChatEvent(Friend sender) { if (InvokeRequired) { // Windows Forms are not Thread Safe, we need to invoke this :( // We're not in the UI thread, so we need to call BeginInvoke BeginInvoke(new QQListViewEx.delegate_openChat(listView_fd_OpenChatEvent), new object[] { sender }); return; } System.GC.Collect(); //for (int i = 0; i < 50; i++) //{ // ChatFromMsg chat = new ChatFromMsg(sender.Ritem.Jid, XmppCon); // chat.Show(); //} if (!Util.ChatForms.ContainsKey(sender.Ritem.Jid.Bare)) { try { string nickName = listView_fd.GetFriendNickName(sender.Ritem.Jid.Bare); ChatFromMsg chat = new ChatFromMsg(sender.Ritem.Jid, XmppCon, nickName); chat.UpdateFriendOnline(sender.IsOnline);//设置好友在线状态 ChatMessageBox.GetInstance(this).RemoveFriend(sender.Ritem.Jid); if (msgBox.ContainsKey(sender.Ritem.Jid.ToString())) { chat.FristMessage(msgBox[sender.Ritem.Jid.ToString()]); msgBox.Remove(sender.Ritem.Jid.ToString()); } chat.Show(); if (ChatMessageBox.GetInstance(this).FrienMessageCount() > 0) Debug.WriteLine("?"); else { notifyIcon_MessageQueue.Icon = CSS.IM.UI.Properties.Resources.Iico; timer_MessageAlert.Enabled = false; } } catch (Exception ex) { MessageBox.Show(ex.Message); } } else { try { ChatFromMsg chatform = Util.ChatForms[sender.Ritem.Jid.Bare] as ChatFromMsg; chatform.WindowState = FormWindowState.Normal; chatform.Activate(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } System.GC.Collect(); }
/// <summary> /// 通过消息盒子打开消息窗体 /// </summary> /// <param name="friend"></param> /// <param name="sender"></param> /// <param name="CName"></param> void QQMainForm_OpenChatEvent(Friend friend, Jid sender, string CName) { RosterItem ritem = new RosterItem(sender); friend.Ritem = ritem; //throw new NotImplementedException(); //friendListView_OpenChatEvent(friend); if (!Util.ChatForms.ContainsKey(friend.Ritem.Jid.Bare)) { listView_fd.UpdateFriendFlicker(friend.Ritem.Jid.Bare); string nickName = listView_fd.GetFriendNickName(friend.Ritem.Jid.Bare); ChatFromMsg chat = new ChatFromMsg(friend.Ritem.Jid, XmppCon, nickName); Friend flfriend = listView_fd.Rosters[friend.Ritem.Jid.Bare]; if (flfriend != null) { chat.UpdateFriendOnline(flfriend.IsOnline); } if (msgBox.ContainsKey(friend.Ritem.Jid.Bare.ToString())) { chat.FristMessage(msgBox[friend.Ritem.Jid.Bare.ToString()]); msgBox.Remove(friend.Ritem.Jid.Bare.ToString()); } chat.Show(); } else { try { ChatFromMsg chatform = Util.ChatForms[friend.Ritem.Jid.Bare] as ChatFromMsg; chatform.WindowState = FormWindowState.Normal; chatform.Activate(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } if (ChatMessageBox.GetInstance(this).FrienMessageCount() > 0) Debug.WriteLine("?"); else { notifyIcon_MessageQueue.Icon = CSS.IM.UI.Properties.Resources.Iico; timer_MessageAlert.Enabled = false; } }
private void tsmi发送消息_Click(object sender, EventArgs e) { if (treeView_nt.SelectedNode == null) return; if (treeView_nt.SelectedNode.Tag == null) return; Jid j = new Jid(treeView_nt.SelectedNode.Tag.ToString(), XmppCon.Server, null); if (!Util.ChatForms.ContainsKey(j.Bare)) { listView_fd.UpdateFriendFlicker(j.Bare); string nickName = listView_fd.GetFriendNickName(j.Bare); ChatFromMsg chat = new ChatFromMsg(j, XmppCon, nickName); Friend friend; if (listView_fd.Rosters.ContainsKey(j.Bare)) { friend = listView_fd.Rosters[j.Bare]; } else { friend = null; } if (friend != null) { chat.UpdateFriendOnline(listView_fd.Rosters[j.Bare].IsOnline); } if (msgBox.ContainsKey(j.Bare.ToString())) { chat.FristMessage(msgBox[j.Bare.ToString()]); msgBox.Remove(j.Bare.ToString()); } try { chat.Show(); } catch (Exception) { } } }
protected override void DefWndProc(ref System.Windows.Forms.Message m) { switch (m.Msg) { case WM_COPYDATA: COPYDATASTRUCT mystr = new COPYDATASTRUCT(); Type mytype = mystr.GetType(); mystr = (COPYDATASTRUCT)m.GetLParam(mytype); //MessageBox.Show(mystr.lpData); Jid openJid = new Jid(mystr.lpData, XmppCon.Server,null); //MessageBox.Show(openJid.ToString()); Friend item=null; if (listView_fd.Rosters.ContainsKey(openJid.Bare)) { item = listView_fd.Rosters[openJid.Bare]; if (!Util.ChatForms.ContainsKey(item.Ritem.Jid.Bare)) { try { string nickName = listView_fd.GetFriendNickName(openJid.Bare); ChatFromMsg chat = new ChatFromMsg(openJid, XmppCon, nickName); chat.UpdateFriendOnline(item.IsOnline);//设置好友在线状态 chat.Show(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } else { try { ChatFromMsg chatform = Util.ChatForms[item.Ritem.Jid.Bare] as ChatFromMsg; chatform.WindowState = FormWindowState.Normal; chatform.Activate(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } else { if (!Util.ChatForms.ContainsKey(openJid.Bare)) { listView_fd.UpdateFriendFlicker(openJid.Bare); string nickName = listView_fd.GetFriendNickName(openJid.Bare); ChatFromMsg chat = new ChatFromMsg(openJid, XmppCon, nickName); Friend friend; if (listView_fd.Rosters.ContainsKey(openJid.Bare)) { friend = listView_fd.Rosters[openJid.Bare]; } else { friend = null; } if (friend != null) { chat.UpdateFriendOnline(listView_fd.Rosters[openJid.Bare].IsOnline); } if (msgBox.ContainsKey(openJid.Bare.ToString())) { chat.FristMessage(msgBox[openJid.Bare.ToString()]); msgBox.Remove(openJid.Bare.ToString()); } try { chat.Show(); } catch (Exception) { } } else { try { ChatFromMsg chatform = Util.ChatForms[openJid.Bare.ToString()] as ChatFromMsg; chatform.WindowState = FormWindowState.Normal; chatform.Activate(); } catch (Exception ex) { MessageBox.Show("打开窗体错误:"+ex.Message); } } } break; default: base.DefWndProc(ref m); break; } }