// **********************************************************************

        protected override void OnAfterConnect(DdeConversation dc)
        {
            XlDdeChannel channel = channels[dc.Topic];

            dc.Tag = channel;
            channel.AddConversation(dc);
        }
        // **********************************************************************

        public void RmvChannel(XlDdeChannel channel)
        {
            channels.Remove(channel.Topic);

            foreach (DdeConversation c in channel.DropConversations())
            {
                try { base.Disconnect(c); }
                catch { }
            }
        }
        // **********************************************************************

        public void AddChannel(XlDdeChannel channel)
        {
            channels.Add(channel.Topic, channel);
        }