16,748
社区成员
发帖
与我相关
我的任务
分享
TForm6 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
private
{ Private declarations }
Fimg: TImage;
public
{ Public declarations }
end;
var
Form6: TForm6;
implementation
{$R *.dfm}
type
TBudded = class(TImage)
private
{ private declarations }
FHandle: HWND;
protected
{ protected declarations }
procedure WndProc(var Msg: TMessage); virtual;
procedure WMChar(var Message: TWMChar);
public
{ public declarations }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
{ published declarations }
end;
{ TBudded }
constructor TBudded.Create(AOwner: TComponent);
begin
inherited;
FHandle := AllocateHWnd(WndProc);
Canvas.TextOut(10, 10, 'Budded');
end;
destructor TBudded.Destroy;
begin
DeallocateHWnd(FHandle);
inherited;
end;
procedure TBudded.WMChar(var Message: TWMChar);
begin
Canvas.TextOut(10, 25, Char(Message.CharCode));
end;
procedure TForm6.FormCreate(Sender: TObject);
begin
Fimg := TBudded.Create(Self);
with TBudded(Fimg) do
Parent := Self;
end;
procedure TBudded.WndProc(var Msg: TMessage);
begin
if Msg.Msg = wm_char then
WMChar(TWMChar(msg))
else
with Msg do Result := DefWindowProc(FHandle, Msg, wParam, lParam);
end;
procedure TForm6.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
SendMessage(TBudded(Fimg).FHandle, wm_char, Key, 0);
end;
TForm6 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
private
{ Private declarations }
Fimg: TImage;
public
{ Public declarations }
end;
var
Form6: TForm6;
implementation
{$R *.dfm}
type
TBudded = class(TImage)
private
{ private declarations }
FHandle: HWND;
protected
{ protected declarations }
procedure WndProc(var Msg: TMessage); virtual;
procedure WMChar(var Message: TWMChar);
public
{ public declarations }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
{ published declarations }
end;
{ TBudded }
constructor TBudded.Create(AOwner: TComponent);
begin
inherited;
FHandle := AllocateHWnd(WndProc);
Canvas.TextOut(10, 10, 'Budded');
end;
destructor TBudded.Destroy;
begin
DeallocateHWnd(FHandle);
inherited;
end;
procedure TBudded.WMChar(var Message: TWMChar);
begin
Canvas.TextOut(10, 25, Char(Message.CharCode));
end;
procedure TForm6.FormCreate(Sender: TObject);
begin
Fimg := TBudded.Create(Self);
with TBudded(Fimg) do
Parent := Self;
end;
procedure TBudded.WndProc(var Msg: TMessage);
begin
if Msg.Msg = wm_char then
WMChar(TWMChar(msg))
else
with Msg do Result := DefWindowProc(FHandle, Msg, wParam, lParam);
end;
procedure TForm6.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
SendMessage(TBudded(Fimg).FHandle, wm_char, Key, 0);
end;