2017-01-27 17:37:51 +02:00
|
|
|
unit uCEFWindowParent;
|
|
|
|
|
2018-05-12 14:50:54 +02:00
|
|
|
{$IFDEF FPC}
|
|
|
|
{$MODE OBJFPC}{$H+}
|
|
|
|
{$ENDIF}
|
|
|
|
|
2017-02-05 21:56:46 +02:00
|
|
|
{$I cef.inc}
|
|
|
|
|
2022-02-19 19:56:41 +02:00
|
|
|
{$IFNDEF TARGET_64BITS}{$ALIGN ON}{$ENDIF}
|
|
|
|
{$MINENUMSIZE 4}
|
|
|
|
|
2017-01-27 17:37:51 +02:00
|
|
|
interface
|
|
|
|
|
|
|
|
uses
|
2017-02-05 21:56:46 +02:00
|
|
|
{$IFDEF DELPHI16_UP}
|
2018-09-16 10:39:41 +02:00
|
|
|
{$IFDEF MSWINDOWS}WinApi.Windows, WinApi.Messages,{$ENDIF} System.Classes, Vcl.Controls, Vcl.Graphics,
|
2017-02-05 21:56:46 +02:00
|
|
|
{$ELSE}
|
2018-06-03 17:18:54 +02:00
|
|
|
{$IFDEF MSWINDOWS}Windows,{$ENDIF} Classes, Forms, Controls, Graphics,
|
2018-05-12 14:50:54 +02:00
|
|
|
{$IFDEF FPC}
|
|
|
|
LCLProc, LCLType, LCLIntf, LResources, LMessages, InterfaceBase,
|
|
|
|
{$ELSE}
|
|
|
|
Messages,
|
|
|
|
{$ENDIF}
|
2017-02-05 21:56:46 +02:00
|
|
|
{$ENDIF}
|
2022-10-14 16:35:50 +02:00
|
|
|
uCEFWinControl, uCEFTypes, uCEFInterfaces, uCEFConstants;
|
2017-01-27 17:37:51 +02:00
|
|
|
|
|
|
|
type
|
2022-10-14 16:35:50 +02:00
|
|
|
{$IFNDEF FPC}{$IFDEF DELPHI16_UP}[ComponentPlatformsAttribute(pfidWindows)]{$ENDIF}{$ENDIF}
|
2018-09-16 10:39:41 +02:00
|
|
|
TCEFWindowParent = class(TCEFWinControl)
|
2017-01-27 17:37:51 +02:00
|
|
|
protected
|
2019-01-08 20:15:25 +02:00
|
|
|
{$IFDEF MSWINDOWS}
|
2017-01-27 17:37:51 +02:00
|
|
|
procedure WndProc(var aMessage: TMessage); override;
|
2019-01-08 20:15:25 +02:00
|
|
|
{$ENDIF}
|
2017-01-27 17:37:51 +02:00
|
|
|
end;
|
|
|
|
|
2018-05-12 14:50:54 +02:00
|
|
|
{$IFDEF FPC}
|
|
|
|
procedure Register;
|
|
|
|
{$ENDIF}
|
|
|
|
|
2017-01-27 17:37:51 +02:00
|
|
|
implementation
|
|
|
|
|
|
|
|
uses
|
2022-10-14 16:35:50 +02:00
|
|
|
uCEFMiscFunctions, uCEFClient;
|
2017-01-27 17:37:51 +02:00
|
|
|
|
2019-01-08 20:15:25 +02:00
|
|
|
{$IFDEF MSWINDOWS}
|
2017-01-27 17:37:51 +02:00
|
|
|
procedure TCEFWindowParent.WndProc(var aMessage: TMessage);
|
|
|
|
var
|
|
|
|
TempHandle : THandle;
|
|
|
|
begin
|
|
|
|
case aMessage.Msg of
|
|
|
|
WM_SETFOCUS:
|
|
|
|
begin
|
|
|
|
TempHandle := ChildWindowHandle;
|
|
|
|
if (TempHandle <> 0) then PostMessage(TempHandle, WM_SETFOCUS, aMessage.WParam, 0);
|
|
|
|
inherited WndProc(aMessage);
|
|
|
|
end;
|
|
|
|
|
|
|
|
WM_ERASEBKGND:
|
2018-09-16 10:39:41 +02:00
|
|
|
if (ChildWindowHandle = 0) then inherited WndProc(aMessage);
|
2017-01-27 17:37:51 +02:00
|
|
|
|
|
|
|
CM_WANTSPECIALKEY:
|
|
|
|
if not(TWMKey(aMessage).CharCode in [VK_LEFT .. VK_DOWN, VK_RETURN, VK_ESCAPE]) then
|
|
|
|
aMessage.Result := 1
|
|
|
|
else
|
|
|
|
inherited WndProc(aMessage);
|
|
|
|
|
|
|
|
WM_GETDLGCODE : aMessage.Result := DLGC_WANTARROWS or DLGC_WANTCHARS;
|
|
|
|
|
|
|
|
else inherited WndProc(aMessage);
|
|
|
|
end;
|
|
|
|
end;
|
2019-01-08 20:15:25 +02:00
|
|
|
{$ENDIF}
|
2017-01-27 17:37:51 +02:00
|
|
|
|
2018-05-12 14:50:54 +02:00
|
|
|
{$IFDEF FPC}
|
|
|
|
procedure Register;
|
|
|
|
begin
|
2018-06-03 17:18:54 +02:00
|
|
|
{$I res/tcefwindowparent.lrs}
|
2018-05-12 14:50:54 +02:00
|
|
|
RegisterComponents('Chromium', [TCEFWindowParent]);
|
|
|
|
end;
|
|
|
|
{$ENDIF}
|
|
|
|
|
2017-01-27 17:37:51 +02:00
|
|
|
end.
|