/// <summary>
        /// 显示即时消息
        /// </summary>
        /// <param name="message"></param>
        /// <param name="MsgParamter"></param>
        private void ShowReciveMessage(TrasenMessage.IMessageProcessor IMessage)
        {
            TrasenMessage.MessageCommunication msg = (TrasenMessage.MessageCommunication)IMessage;
            lock ( _objLock )
            {
                msg.WriteMessage(Application.StartupPath);

                if (msg.ShowType == 0)
                {
                    ////如果是气泡方式显示。对变量赋值后,由定时器去处理消息(待改进)
                    //this.newMsg = true;
                    //this.msgSender = msg.Sender;
                    //this.msgContents = msg.MessageString;
                    //this.showTime = msg.ShowTime;
                    //this.showMsg = false;

                    //向主窗口发消息
                    SendMessageToMainForm(msg);
                }
                else
                {
                    lock ( _objLock )
                    {
                        //this.Invoke( new ShowMessageFormHandler( showMessagePopForm ) , msg );
                        showMessagePopForm(msg);
                    }
                }
            }
        }
Пример #2
0
        private void addItem(TrasenMessage.MessageCommunication message)
        {
            UCMessageTip ucTip = new UCMessageTip(message);

            ucTip.Dock              = DockStyle.Top;
            ucTip.Tag               = message.MessageId;
            ucTip.ClickedLinkLabel += new UCMessageTip.OnClickedLinkLabelHandler(ucTip_ClickedLinkLabel);
            this.plMessageList.Controls.Add(ucTip);
        }
Пример #3
0
        public UCMessageTip(TrasenMessage.MessageCommunication message)
        {
            InitializeComponent();
            _message                  = message;
            this.lblSender.Text       = message.Sender;
            this.lblSendTime.Text     = message.SendTime.ToString("yyyy-MM-dd HH:mm:ss");
            this.chkSummary.Text      = message.MessageString;
            this.chkSummary.ForeColor = message.Color;

            this.llbView.LinkClicked    += new LinkLabelLinkClickedEventHandler(llbView_LinkClicked);
            this.llbClose.LinkClicked   += new LinkLabelLinkClickedEventHandler(llbClose_LinkClicked);
            this.lblNextTip.LinkClicked += new LinkLabelLinkClickedEventHandler(lblNextTip_LinkClicked);
        }
 /// <summary>
 /// 显示消息弹出窗口
 /// </summary>
 /// <param name="message"></param>
 private void showMessagePopForm(TrasenMessage.MessageCommunication message)
 {
     if (dlgMsg == null)
     {
         dlgMsg = new TrasenMessage.DlgImmediatelyMessage();
         dlgMsg.MessageContentClicked   += new TrasenMessage.OnMessageContentClickedHander(dlgMsg_MessageContentClicked);
         dlgMsg.SetCheckedMessageStatus += new TrasenMessage.OnSetCheckedMessageStautsHandler(dlgMsg_SetCheckedMessageStatus);
         dlgMsg.TopMost = true;
     }
     dlgMsg.Show();
     dlgMsg.BringToFront();
     while (!dlgMsg.IsHandleCreated)
     {
         //空循环,防止窗口句柄还未创建就执行Invoke方法
     }
     dlgMsg.AddMessage(message);
 }
        /// <summary>
        /// 显示未处理的消息
        /// </summary>
        private void DisplayUnDealMessage(int systemId, int deptId, int employeeId)
        {
            TrasenClasses.DatabaseAccess.RelationalDatabase database = new TrasenClasses.DatabaseAccess.MsSqlServer();
            database.Initialize(TrasenFrame.Classes.WorkStaticFun.GetConnnectionString_Default(TrasenFrame.Classes.ConnectionType.SQLSERVER));

            List <TrasenFrame.Classes.MessageInfo> undealMessages = TrasenFrame.Classes.MessageInfo.GetUnDealMessageList(systemId, deptId, employeeId, database);

            if (undealMessages.Count > 0)
            {
                foreach (TrasenFrame.Classes.MessageInfo msg in undealMessages)
                {
                    TrasenMessage.MessageCommunication message = new TrasenMessage.MessageCommunication(msg.MessageId, msg.Summary, msg.SenderName, msg.IsMustRead ? 1 : 0, msg.ShowTime);
                    message.SendTime = msg.SendTime;
                    message.Color    = msg.FontColor;
                    ShowReciveMessage(message);
                }
            }
        }
        /// <summary>
        /// 向主窗口发送消息
        /// </summary>
        /// <param name="content"></param>
        private void SendMessageToMainForm(object content)
        {
            string msgString = "";

            if (content.GetType() == typeof(Guid))
            {
                msgString = "0$" + (new Guid(content.ToString())).ToString();
            }
            else
            {
                TrasenMessage.MessageCommunication msg = (TrasenMessage.MessageCommunication)content;
                msgString = string.Format("1${0},{1},{2}", msg.Sender, msg.MessageString, msg.ShowTime);
            }

            byte[]         sarr = System.Text.Encoding.Default.GetBytes(msgString);
            int            len  = sarr.Length;
            COPYDATASTRUCT cds;

            cds.dwData = (IntPtr)100;
            cds.lpData = msgString;
            cds.cbData = len + 1;
            SendMessage(_MW_Handle.ToInt32(), WM_COPYDATA, 0, ref cds);
        }
Пример #7
0
 /// <summary>
 /// 将收到的消息添加到消息列表
 /// </summary>
 /// <param name="message"></param>
 public void AddMessage(TrasenMessage.MessageCommunication message)
 {
     //message.MessageId 消息标记,该标记将存储在显示该条消息的Tag属性中,
     //当用户在消息弹出窗口点击某条消息时,则应获取该ID构造出消息对象,然后对该消息做进一步的处理,如显示具体的处理界面等。。
     this.plMessageList.Invoke(new AddListItem(addItem), message);
 }