Самая простой пример добавление кнопки в заголовок окна, написание формы на уровне api как то не вариант.
Вообще мне такая политика ограничения не понятна, вроде бы если разрабы лазаруса не хотят обрабатывать не кроссплатформенные сообщения их право, зачем же создавать трудности остальным?
Добавлено спустя 1 час 3 минуты 26 секунд:Как говорится стоит поругать разрабов и все начинает работать
, решил перепроверить метод с GetWindowLong/SetWindowLong и к удивлению он заработал. Хотя раньше не хотел
Всем откликнувшимся спасибо
На всякий случай прикладываю код.
- Код: Выделить всё
unit Unit1;
{$mode delphi}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
LMessages, Messages, Windows ;
type
{ TForm1 }
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
FWndInstance: TFarProc;
FPrevWndProc: TFarProc;
{ private declarations }
procedure NewWndProc(var message: TMessage);
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
FWndInstance := MakeObjectInstance(NewWndProc);
FPrevWndProc := Pointer(GetWindowLong(Handle, GWL_WNDPROC));
SetWindowLong(Handle, GWL_WNDPROC, LongInt(FWndInstance));
end;
procedure TForm1.NewWndProc(var message: TMessage);
begin
case message.msg of
LM_NCHITTEST : {Чего нибудь делаем} ;
end;
with message do Result := CallWindowProc(FPrevWndProc, Handle, Msg, wParam, lParam);
end;
end.