112 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Text;
 | 
						|
using System.Windows.Forms;
 | 
						|
using System.Drawing;
 | 
						|
 | 
						|
namespace DevComponents.DotNetBar
 | 
						|
{
 | 
						|
    /// <summary>
 | 
						|
    /// Represents canvas for KeyTips
 | 
						|
    /// </summary>
 | 
						|
    internal class KeyTipsCanvasControl : Control
 | 
						|
    {
 | 
						|
        #region Private variables
 | 
						|
        private Control m_ParentControl=null;
 | 
						|
        private IKeyTipsRenderer m_Renderer=null;
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Internal Implementation
 | 
						|
        public KeyTipsCanvasControl(IKeyTipsRenderer renderer)
 | 
						|
        {
 | 
						|
            this.SetStyle(ControlStyles.UserPaint, true);
 | 
						|
            this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
 | 
						|
            this.SetStyle(ControlStyles.Opaque, true);
 | 
						|
            this.SetStyle(ControlStyles.ResizeRedraw, true);
 | 
						|
            this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
 | 
						|
            this.SetStyle(ControlStyles.ContainerControl, false);
 | 
						|
            this.SetStyle(ControlStyles.Selectable, false);
 | 
						|
            this.BackColor = Color.Transparent;
 | 
						|
            m_Renderer = renderer;
 | 
						|
 | 
						|
        }
 | 
						|
        protected override void Dispose(bool disposing)
 | 
						|
        {
 | 
						|
            if (m_ParentControl != null)
 | 
						|
            {
 | 
						|
                m_ParentControl.Resize -= new EventHandler(ParentControlResize);
 | 
						|
                m_ParentControl = null;
 | 
						|
            }
 | 
						|
 | 
						|
            base.Dispose(disposing);
 | 
						|
        }
 | 
						|
 | 
						|
        protected override void OnPaint(PaintEventArgs e)
 | 
						|
        {
 | 
						|
            if (m_Renderer != null)
 | 
						|
            {
 | 
						|
                m_Renderer.PaintKeyTips(e.Graphics);
 | 
						|
            }
 | 
						|
            base.OnPaint(e);
 | 
						|
        }
 | 
						|
 | 
						|
        protected override void OnParentChanged(EventArgs e)
 | 
						|
        {
 | 
						|
            if (m_ParentControl != null)
 | 
						|
                m_ParentControl.Resize -= new EventHandler(ParentControlResize);
 | 
						|
            
 | 
						|
            m_ParentControl = this.Parent;
 | 
						|
            
 | 
						|
            if(m_ParentControl!=null)
 | 
						|
                m_ParentControl.Resize += new EventHandler(ParentControlResize);
 | 
						|
 | 
						|
            base.OnParentChanged(e);
 | 
						|
        }
 | 
						|
 | 
						|
        protected override void OnPaintBackground(PaintEventArgs e)
 | 
						|
        {
 | 
						|
        }
 | 
						|
 | 
						|
        void ParentControlResize(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            if (m_ParentControl == null)
 | 
						|
                return;
 | 
						|
 | 
						|
            this.Bounds = new Rectangle(0, 0, m_ParentControl.Width, m_ParentControl.Height);
 | 
						|
        }
 | 
						|
 | 
						|
        protected override CreateParams CreateParams
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                const int WS_EX_TRANSPARENT = 0x020;
 | 
						|
                CreateParams p = base.CreateParams;
 | 
						|
                p.ExStyle = (p.ExStyle | WS_EX_TRANSPARENT);
 | 
						|
                return p;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        protected override void WndProc(ref Message m)
 | 
						|
        {
 | 
						|
            if (m.Msg == (int)WinApi.WindowsMessages.WM_NCHITTEST)
 | 
						|
            {
 | 
						|
                m.Result = new IntPtr(-1);
 | 
						|
                return;
 | 
						|
            }
 | 
						|
            base.WndProc(ref m);
 | 
						|
        }
 | 
						|
        #endregion
 | 
						|
    }
 | 
						|
 | 
						|
    internal interface IKeyTipsRenderer
 | 
						|
    {
 | 
						|
        void PaintKeyTips(Graphics g);
 | 
						|
    }
 | 
						|
 | 
						|
    public interface IKeyTipsControl
 | 
						|
    {
 | 
						|
        bool ProcessMnemonicEx(char charCode);
 | 
						|
        bool ShowKeyTips { get;set;}
 | 
						|
        string KeyTipsKeysStack { get; set; }
 | 
						|
    }
 | 
						|
}
 |