예제 #1
0
        private void MyCtor(Control parent)
        {
            _mono       = Type.GetType("Mono.Runtime") != null;
            this.Parent = parent;
            SetStyle(ControlStyles.AllPaintingInWmPaint, true);

            Console.WriteLine("can enable ime:" + this.CanEnableIme);

            this.ImeMode = ImeMode.On;

            lifeSpanHandler = new CfxLifeSpanHandler();
            lifeSpanHandler.OnAfterCreated += lifeSpanHandler_OnAfterCreated;

            renderHandler = new CfxRenderHandler();

            renderHandler.GetRootScreenRect += renderHandler_GetRootScreenRect;
            renderHandler.GetScreenInfo     += renderHandler_GetScreenInfo;
            renderHandler.GetScreenPoint    += renderHandler_GetScreenPoint;
            renderHandler.GetViewRect       += renderHandler_GetViewRect;
            renderHandler.OnCursorChange    += renderHandler_OnCursorChange;
            renderHandler.OnPaint           += renderHandler_OnPaint;

            //renderHandler.OnPopupShow += renderHandler_OnPopupShow;
            //renderHandler.OnPopupSize += renderHandler_OnPopupSize;
            //renderHandler.OnScrollOffsetChanged += renderHandler_OnScrollOffsetChanged;
            //renderHandler.StartDragging += renderHandler_StartDragging;
            //renderHandler.UpdateDragCursor += renderHandler_UpdateDragCursor;

            loadHandler = new CfxLoadHandler();

            loadHandler.OnLoadError += loadHandler_OnLoadError;


            keyboardHandler = new CfxKeyboardHandler();


            keyboardHandler.OnPreKeyEvent += KeyboardHandler_OnPreKeyEvent;

            client = new CfxClient();
            client.GetLifeSpanHandler += (sender, e) => e.SetReturnValue(lifeSpanHandler);
            client.GetRenderHandler   += (sender, e) => e.SetReturnValue(renderHandler);
            client.GetLoadHandler     += (sender, e) => e.SetReturnValue(loadHandler);
            client.GetKeyboardHandler += (sender, e) => e.SetReturnValue(keyboardHandler);


            var settings = new CfxBrowserSettings();

            var windowInfo = new CfxWindowInfo();

            windowInfo.SetAsWindowless(this.Parent.Handle);
            //windowInfo.SetAsWindowless(this.Parent.Handle);

            // Create handle now for InvokeRequired to work properly
            // CreateHandle();

            if (string.IsNullOrEmpty(initialUrl))
            {
                initialUrl = "about:version";
            }

            CfxBrowserHost.CreateBrowser(windowInfo, client, initialUrl, settings, null);
        }
        private void MyCtor(Control parent)
        {
            _mono       = Type.GetType("Mono.Runtime") != null;
            this.Parent = parent;

            //SetStyle(

            //    ControlStyles.ResizeRedraw
            //    | ControlStyles.FixedWidth
            //    | ControlStyles.FixedHeight
            //    | ControlStyles.StandardClick
            //    | ControlStyles.StandardDoubleClick
            //    | ControlStyles.UserMouse
            //    | ControlStyles.SupportsTransparentBackColor

            //    | ControlStyles.DoubleBuffer
            //    | ControlStyles.OptimizedDoubleBuffer

            //    | ControlStyles.Opaque
            //    , false);

            SetStyle(ControlStyles.AllPaintingInWmPaint, true);

            Console.WriteLine("can enable ime:" + this.CanEnableIme);

            this.ImeMode = ImeMode.On;


            client = new BrowserClient(this);
            //client.GetLifeSpanHandler += (sender, e) => e.SetReturnValue(lifeSpanHandler);
            //client.GetRenderHandler += (sender, e) => e.SetReturnValue(renderHandler);
            //client.GetLoadHandler += (sender, e) => e.SetReturnValue(loadHandler);
            //client.GetKeyboardHandler += (sender, e) => e.SetReturnValue(keyboardHandler);

            //lifeSpanHandler = new CfxLifeSpanHandler();
            //lifeSpanHandler.OnAfterCreated += lifeSpanHandler_OnAfterCreated;

            renderHandler = client.RenderHandler;// new CfxRenderHandler();

            renderHandler.GetRootScreenRect += renderHandler_GetRootScreenRect;
            renderHandler.GetScreenInfo     += renderHandler_GetScreenInfo;
            renderHandler.GetScreenPoint    += renderHandler_GetScreenPoint;
            renderHandler.GetViewRect       += renderHandler_GetViewRect;
            renderHandler.OnCursorChange    += renderHandler_OnCursorChange;
            renderHandler.OnPaint           += renderHandler_OnPaint;

            //renderHandler.OnPopupShow += renderHandler_OnPopupShow;
            //renderHandler.OnPopupSize += renderHandler_OnPopupSize;
            //renderHandler.OnScrollOffsetChanged += renderHandler_OnScrollOffsetChanged;
            //renderHandler.StartDragging += renderHandler_StartDragging;
            //renderHandler.UpdateDragCursor += renderHandler_UpdateDragCursor;

            loadHandler = client.LoadHandler;// new CfxLoadHandler();

            loadHandler.OnLoadError += loadHandler_OnLoadError;


            keyboardHandler = new CfxKeyboardHandler();


            keyboardHandler.OnPreKeyEvent += KeyboardHandler_OnPreKeyEvent;

            lifeSpanHandler = client.lifeSpanHandler;
            lifeSpanHandler.OnAfterCreated += lifeSpanHandler_OnAfterCreated;



            var settings = new CfxBrowserSettings();

            var windowInfo = new CfxWindowInfo();



            if (CfxRuntime.PlatformOS == CfxPlatformOS.Windows)
            {
                windowInfo.SetAsWindowless(this.Parent.Handle);
            }
            else
            {
                windowInfo.SetAsWindowless(this.Parent.Handle);
            }

            //windowInfo.SetAsWindowless(this.Parent.Handle);

            // Create handle now for InvokeRequired to work properly
            // CreateHandle();

            if (string.IsNullOrEmpty(initialUrl))
            {
                initialUrl = "about:version";
            }


            GlobalObject = new JSObject();
            GlobalObject.SetBrowser("window", this);



            // CreateHandle();
            //  CfxBrowserHost.CreateBrowser(windowInfo, client, "about:blank", settings, null);

            //Browser = CfxBrowserHost.CreateBrowserSync(windowInfo, client, initialUrl, settings, null);

            //if (!CfxBrowserHost.CreateBrowser(windowInfo, client, initialUrl, settings, null))
            //    throw new ChromiumWebBrowserException("Failed to create browser instance.");

            CfxBrowserHost.CreateBrowser(windowInfo, client, initialUrl, settings, null);
        }
예제 #3
0
        public BrowserControl(Control parent)
        {
            _mono       = Type.GetType("Mono.Runtime") != null;
            this.Parent = parent;
            SetStyle(ControlStyles.AllPaintingInWmPaint, true);

            Console.WriteLine("can enable ime:" + this.CanEnableIme);

            this.ImeMode = ImeMode.On;

            lifeSpanHandler = new CfxLifeSpanHandler();
            lifeSpanHandler.OnAfterCreated += lifeSpanHandler_OnAfterCreated;

            renderHandler = new CfxRenderHandler();

            renderHandler.GetRootScreenRect += renderHandler_GetRootScreenRect;
            renderHandler.GetScreenInfo     += renderHandler_GetScreenInfo;
            renderHandler.GetScreenPoint    += renderHandler_GetScreenPoint;
            renderHandler.GetViewRect       += renderHandler_GetViewRect;
            renderHandler.OnCursorChange    += renderHandler_OnCursorChange;
            renderHandler.OnPaint           += renderHandler_OnPaint;

            //renderHandler.OnPopupShow += renderHandler_OnPopupShow;
            //renderHandler.OnPopupSize += renderHandler_OnPopupSize;
            //renderHandler.OnScrollOffsetChanged += renderHandler_OnScrollOffsetChanged;
            //renderHandler.StartDragging += renderHandler_StartDragging;
            //renderHandler.UpdateDragCursor += renderHandler_UpdateDragCursor;

            loadHandler = new CfxLoadHandler();

            loadHandler.OnLoadError += loadHandler_OnLoadError;


            keyboardHandler = new CfxKeyboardHandler();


            keyboardHandler.OnPreKeyEvent += KeyboardHandler_OnPreKeyEvent;

            client = new CfxClient();
            client.GetLifeSpanHandler += (sender, e) => e.SetReturnValue(lifeSpanHandler);
            client.GetRenderHandler   += (sender, e) => e.SetReturnValue(renderHandler);
            client.GetLoadHandler     += (sender, e) => e.SetReturnValue(loadHandler);
            client.GetKeyboardHandler += (sender, e) => e.SetReturnValue(keyboardHandler);

            var settings = new CfxBrowserSettings();

            var windowInfo = new CfxWindowInfo();

            windowInfo.SetAsWindowless(this.Handle);
            //windowInfo.SetAsWindowless(this.Parent.Handle);

            // Create handle now for InvokeRequired to work properly
            // CreateHandle();
            //  CfxBrowserHost.CreateBrowser(windowInfo, client, "about:blank", settings, null);

            //browser = CfxBrowserHost.CreateBrowserSync(windowInfo, client, "about:blank", settings, null);

            if (!CfxBrowserHost.CreateBrowser(windowInfo, client, "about:blank", settings, null))
            {
                throw new ChromiumWebBrowserException("Failed to create browser instance.");
            }
        }