亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? redockercontent.cs

?? Magic Library 1.7,有說明文檔
?? CS
?? 第 1 頁 / 共 2 頁
字號:
// *****************************************************************************
// 
//  (c) Crownwood Consulting Limited 2002 
//  All rights reserved. The software and associated documentation 
//  supplied hereunder are the proprietary information of Crownwood Consulting 
//	Limited, Haxey, North Lincolnshire, England and are supplied subject to 
//	licence terms.
// 
//  Magic Version 1.7 	www.dotnetmagic.com
// *****************************************************************************

using System;
using System.Drawing;
using System.Collections;
using System.Windows.Forms;
using Crownwood.Magic.Docking;
using Crownwood.Magic.Collections;

namespace Crownwood.Magic.Docking
{
    public class RedockerContent : Redocker
    {
        public enum Source
        {
            RawContent,
            ContentInsideWindow,
            WindowContent,
            FloatingForm
        }

        // Class constants
        protected static int _hotVectorFromEdge = 2;
        protected static int _hotVectorBeforeControl = 5;

        // Instance fields
        protected ContainerControl _container;
        protected Source _source;
        protected Content _content;
        protected HotZone _currentHotZone;
        protected Control _callingControl;
        protected FloatingForm _floatingForm;
        protected HotZoneCollection _hotZones;
        protected WindowContent _windowContent;
        protected DockingManager _dockingManager;
        protected Rectangle _insideRect;
        protected Rectangle _outsideRect;
        protected Point _offset;

        public RedockerContent(Control callingControl, Content c, Point offset)
        {
            InternalConstruct(callingControl, Source.RawContent, c, null, null, c.DockingManager, offset);
        }

        public RedockerContent(Control callingControl, Content c, WindowContent wc, Point offset)
        {
            InternalConstruct(callingControl, Source.ContentInsideWindow, c, wc, null, c.DockingManager, offset);
        }

        public RedockerContent(Control callingControl, WindowContent wc, Point offset)
        {
            InternalConstruct(callingControl, Source.WindowContent, null, wc, null, wc.DockingManager, offset);
        }

        public RedockerContent(FloatingForm ff, Point offset)
        {
            InternalConstruct(ff, Source.FloatingForm, null, null, ff, ff.DockingManager, offset);
        }

        protected void InternalConstruct(Control callingControl, 
                                         Source source, 
                                         Content c, 
                                         WindowContent wc, 
                                         FloatingForm ff,
                                         DockingManager dm,
                                         Point offset)
        {
            // Store the starting state
            _callingControl = callingControl;
            _source = source;
            _content = c;
            _windowContent = wc;
            _dockingManager = dm;
            _container = _dockingManager.Container;
            _floatingForm = ff;
            _hotZones = null;
            _currentHotZone = null;
            _insideRect = new Rectangle();
            _outsideRect = new Rectangle();
            _offset = offset;

            // Begin tracking straight away
            EnterTrackingMode();
        }

        public override void EnterTrackingMode()
        {
            // Have we entered tracking mode?
            if (!_tracking)
            {
                base.EnterTrackingMode();

                // Source must provide a valid manager instance
                if (_dockingManager == null)
                    throw new ArgumentNullException("DockingManager");

                // Generate the hot spots that represent actions
                GenerateHotZones();
            }
        }

        public override bool ExitTrackingMode(MouseEventArgs e)
        {
            // Have we exited tracking mode?
            if (_tracking)
            {
                base.ExitTrackingMode(e);
	
                // Is there a current HotZone active?
                if (_currentHotZone != null)
                {
					// Convert from Control coordinates to screen coordinates
					Point mousePos = _callingControl.PointToScreen(new Point(e.X, e.Y));
					
					// Let the zone apply whatever change it represents
					return _currentHotZone.ApplyChange(mousePos, this);
                }
            }

            return false;
        }

        public override void QuitTrackingMode(MouseEventArgs e)
        {
            // Have we quit tracking mode?
            if (_tracking)
            {
                if (_callingControl.Handle != IntPtr.Zero)
                {
                    // Remove any visible tracking indicator
                    if (_currentHotZone != null)
                        _currentHotZone.RemoveIndicator(new Point(0,0));
                }
                                    
                base.QuitTrackingMode(e);
            }
        }

        public override void OnMouseMove(MouseEventArgs e)
        {
			if (_callingControl.Handle != IntPtr.Zero)
			{
				// Convert from Control coordinates to screen coordinates
				Point mousePos = _callingControl.PointToScreen(new Point(e.X, e.Y));

				// Find HotZone this position is inside
				HotZone hz = _hotZones.Contains(mousePos);

				if (hz != _currentHotZone)
				{
					if (_currentHotZone != null)
						_currentHotZone.RemoveIndicator(mousePos);

					_currentHotZone = hz;

					if (_currentHotZone != null)
						_currentHotZone.DrawIndicator(mousePos);
				}
				else
				{
					if (_currentHotZone != null)
						_currentHotZone.UpdateForMousePosition(mousePos, this);
				}
			}

            base.OnMouseMove(e);
        }

        public override bool OnMouseUp(MouseEventArgs e)
        {
			if (_callingControl.Handle != IntPtr.Zero)
			{
				if (_currentHotZone != null)
					_currentHotZone.RemoveIndicator(_callingControl.PointToScreen(new Point(e.X, e.Y)));
			}

            return base.OnMouseUp(e);
        }

        public Source DockingSource
        {
            get { return _source; }
        }

        public Content Content
        {
            get { return _content; }
        }

        public WindowContent WindowContent
        {
            get { return _windowContent; }
        }

        public DockingManager DockingManager
        {
            get { return _dockingManager; }
        }

        public FloatingForm FloatingForm
        {
            get { return _floatingForm; }
        }

        protected void GenerateHotZones()
        {
            // Need the client rectangle for the whole Form
            Rectangle formClient = _container.RectangleToScreen(_container.ClientRectangle);

            // Create a fresh collection for HotZones
            _hotZones = new HotZoneCollection();

            // We do not allow docking in front of the outer index entry
            int outerIndex = FindOuterIndex();

            // Create lists of Controls which are docked against each edge	
            ArrayList topList = new ArrayList();
            ArrayList leftList = new ArrayList();
            ArrayList rightList = new ArrayList();
            ArrayList bottomList = new ArrayList();
            ArrayList fillList = new ArrayList();

            PreProcessControlsCollection(topList, leftList, rightList, bottomList, fillList, outerIndex);

            int vectorH;
            int vectorV;

            // Find the vectors required for calculating new sizes
            VectorDependsOnSourceAndState(out vectorH, out vectorV);

            GenerateHotZonesForTop(topList, formClient, vectorV, outerIndex);
            GenerateHotZonesForLeft(leftList, formClient, vectorH, outerIndex);
            GenerateHotZonesForRight(rightList, formClient, vectorH, outerIndex);
            GenerateHotZonesForBottom(bottomList, formClient, vectorV, outerIndex);
            GenerateHotZonesForFill(fillList, outerIndex);
            GenerateHotZonesForFloating(SizeDependsOnSource());
        }

        protected void PreProcessControlsCollection(ArrayList topList, ArrayList leftList, ArrayList rightList, ArrayList bottomList, ArrayList fillList, int outerIndex)
        {
            // Find space left after all docking windows has been positioned
            _insideRect = _container.ClientRectangle; 
            _outsideRect = _insideRect; 

            // We want lists of docked controls grouped by docking style
            foreach(Control item in _container.Controls)
            {
                bool ignoreType = (item is AutoHidePanel);

                int controlIndex = _container.Controls.IndexOf(item);

                bool outer = (controlIndex >= outerIndex);

                if (item.Visible)
                {
                    if (item.Dock == DockStyle.Top)
                    {
                        topList.Insert(0, item);

                        if (_insideRect.Y < item.Bottom)
                        {
                            _insideRect.Height -= item.Bottom - _insideRect.Y;
                            _insideRect.Y = item.Bottom;
                        }

                        if (outer || ignoreType)
                        {
                            if (_outsideRect.Y < item.Bottom)
                            {
                                _outsideRect.Height -= item.Bottom - _outsideRect.Y;
                                _outsideRect.Y = item.Bottom;
                            }
                        }
                    }

                    if (item.Dock == DockStyle.Left)
                    {
                        leftList.Insert(0, item);

                        if (_insideRect.X < item.Right)
                        {
                            _insideRect.Width -= item.Right - _insideRect.X;
                            _insideRect.X = item.Right;
                        }

                        if (outer || ignoreType)
                        {
                            if (_outsideRect.X < item.Right)
                            {
                                _outsideRect.Width -= item.Right - _outsideRect.X;
                                _outsideRect.X = item.Right;
                            }
                        }
                    }

                    if (item.Dock == DockStyle.Bottom)
                    {
                        bottomList.Insert(0, item);

                        if (_insideRect.Bottom > item.Top)
                            _insideRect.Height -= _insideRect.Bottom - item.Top;

                        if (outer || ignoreType)
                        {
                            if (_outsideRect.Bottom > item.Top)
                                _outsideRect.Height -= _outsideRect.Bottom - item.Top;
                        }
                    }

                    if (item.Dock == DockStyle.Right)
                    {
                        rightList.Insert(0, item);

                        if (_insideRect.Right > item.Left)
                            _insideRect.Width -= _insideRect.Right - item.Left;

                        if (outer || ignoreType)
                        {
                            if (_outsideRect.Right > item.Left)
                                _outsideRect.Width -= _outsideRect.Right - item.Left;
                        }
                    }

                    if (item.Dock == DockStyle.Fill)
						fillList.Insert(0, item);
                }
            }

            // Convert to screen coordinates
            _insideRect = _container.RectangleToScreen(_insideRect);
            _outsideRect = _container.RectangleToScreen(_outsideRect);
        }

        protected int FindOuterIndex()
        {
            // We do not allow docking in front of the outer index entry
            int outerIndex = _container.Controls.Count;
			
            Control outerControl = _dockingManager.OuterControl;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频一区在线| 欧美视频完全免费看| 国产欧美一区二区精品婷婷| 国产精品资源站在线| 国产网红主播福利一区二区| 国产成人精品一区二区三区网站观看| 国产亚洲精品久| 99久久精品免费精品国产| 亚洲乱码精品一二三四区日韩在线| 色综合久久99| 偷窥少妇高潮呻吟av久久免费| 日韩欧美高清一区| 丰满少妇久久久久久久| 亚洲欧美乱综合| 91精品国产色综合久久不卡电影| 精品中文字幕一区二区小辣椒| 国产日韩精品一区二区三区在线| 一本一本大道香蕉久在线精品| 亚洲成人免费看| 久久蜜桃av一区精品变态类天堂| 99视频有精品| 美女一区二区视频| 中文字幕欧美一| 3d动漫精品啪啪1区2区免费| 国产成人精品免费视频网站| 亚洲欧美日韩国产成人精品影院 | 首页国产欧美久久| 日韩精品一区二区三区中文不卡| 成人性生交大片免费看中文| 亚洲va国产天堂va久久en| 欧美精品一区二区高清在线观看| 99久久精品国产导航| 免费日本视频一区| 亚洲精品免费在线观看| 久久免费美女视频| 欧美精品丝袜久久久中文字幕| 韩国女主播一区二区三区| 一区二区久久久| 国产欧美一二三区| 91精品国产欧美一区二区成人 | 欧美在线短视频| 国产一区二区剧情av在线| 亚洲综合激情另类小说区| 国产午夜精品一区二区三区视频| 91精品国产综合久久精品麻豆| 成人黄色av电影| 国产一区二区三区黄视频| 天堂va蜜桃一区二区三区| 亚洲欧洲国产日韩| 国产视频视频一区| 欧美电视剧免费全集观看| 色诱视频网站一区| 成人久久视频在线观看| 激情综合五月天| 日本欧美一区二区| 午夜精品福利在线| 亚洲综合区在线| 亚洲视频免费观看| 亚洲国产精品成人综合色在线婷婷| 日韩欧美一二三| 日韩欧美一区二区视频| 欧美高清精品3d| 欧美巨大另类极品videosbest| 一本高清dvd不卡在线观看| 99久久精品国产一区| 国产盗摄女厕一区二区三区| 久久99热这里只有精品| 日本系列欧美系列| 奇米亚洲午夜久久精品| 午夜精品福利一区二区蜜股av | 性久久久久久久| 亚洲黄色免费网站| 亚洲精品成人少妇| 亚洲精选在线视频| 亚洲愉拍自拍另类高清精品| 亚洲最大成人综合| 亚洲欧美经典视频| 夜夜嗨av一区二区三区网页| 亚洲精品国产a久久久久久| 亚洲激情六月丁香| 亚洲成人在线网站| 日本欧美一区二区在线观看| 狂野欧美性猛交blacked| 裸体健美xxxx欧美裸体表演| 老司机精品视频线观看86| 美国精品在线观看| 国产一区二区不卡| 成人av在线播放网站| 色综合久久中文综合久久牛| 欧美色倩网站大全免费| 欧美日韩精品久久久| 日韩精品一区二区三区视频| 久久久久高清精品| 中文字幕精品—区二区四季| 中文字幕综合网| 亚洲高清免费观看| 美女一区二区三区| 成人免费视频一区| 欧美伊人久久大香线蕉综合69| 在线播放国产精品二区一二区四区| 日韩小视频在线观看专区| 国产三级精品视频| 伊人开心综合网| 蜜桃视频一区二区三区在线观看| 国产精品资源在线看| 99久久婷婷国产| 欧美人妇做爰xxxⅹ性高电影| 日韩精品一区在线| 亚洲日本乱码在线观看| 午夜伊人狠狠久久| 国产一区二区在线视频| 91小视频免费观看| 欧美电影精品一区二区| 一色桃子久久精品亚洲| 天堂va蜜桃一区二区三区| 国产成人超碰人人澡人人澡| 欧美在线短视频| 国产情人综合久久777777| 亚洲免费在线视频| 精品中文字幕一区二区小辣椒| 91美女视频网站| 精品少妇一区二区三区日产乱码 | 亚洲欧洲综合另类在线 | 国产在线观看免费一区| 91网页版在线| 久久久久久99精品| 日韩在线一二三区| 97精品久久久久中文字幕 | 精品视频一区 二区 三区| 精品国产凹凸成av人导航| 亚洲美女视频一区| 国产精品亚洲综合一区在线观看| 欧美色图天堂网| 国产精品美女久久久久久| 日韩福利电影在线| 欧洲国内综合视频| 中文字幕一区不卡| 极品美女销魂一区二区三区免费| 精品视频一区三区九区| 中文字幕精品在线不卡| 激情偷乱视频一区二区三区| 69精品人人人人| 亚洲欧美电影院| 99麻豆久久久国产精品免费优播| 精品久久久久久久久久久院品网| 亚洲自拍偷拍九九九| 91香蕉视频污在线| 国产精品成人在线观看| 极品销魂美女一区二区三区| 欧美一区二区三区视频在线 | 日韩主播视频在线| 欧美无乱码久久久免费午夜一区 | 欧美激情一区二区三区在线| 久久精品免费看| 91麻豆精品国产91久久久更新时间| 日韩伦理av电影| 成人国产精品免费| 国产亚洲精品bt天堂精选| 国产精品系列在线播放| 精品国产乱码久久| 国产在线麻豆精品观看| 精品国产91洋老外米糕| 精品一区二区三区久久久| 日韩欧美激情一区| 三级精品在线观看| 在线播放中文字幕一区| 午夜成人免费视频| 日韩欧美一区二区视频| 精品亚洲免费视频| 久久天天做天天爱综合色| 黄页网站大全一区二区| 久久综合色播五月| 国产馆精品极品| 亚洲欧洲国产日本综合| 色婷婷精品久久二区二区蜜臀av | 亚洲人精品午夜| 色先锋久久av资源部| 一区二区日韩电影| 欧美日韩成人一区| 久久国产麻豆精品| 日本一区二区免费在线| 成人av资源站| 亚洲一区中文在线| 欧美一区中文字幕| 久久99精品久久只有精品| 国产视频在线观看一区二区三区| av影院午夜一区| 午夜精品久久久久| 久久影院午夜论| 99久久国产综合精品女不卡| 亚洲美女电影在线| 51精品视频一区二区三区| 精品一区二区三区免费毛片爱| 欧美高清在线一区| 欧美性色aⅴ视频一区日韩精品| 日本欧美大码aⅴ在线播放| 国产日本欧美一区二区| 色综合网色综合| 久久丁香综合五月国产三级网站| 精品国产91洋老外米糕|