Я пытаюсь переопределить метод «wndProc» для моей winform. Так что я могу реализовать свой собственный метод wndproc для конкретных сообщений. Я умею это успешно делать. Однако теперь я столкнулся с другой проблемой, с которой никогда раньше не сталкивался.
После успешной компиляции я запустил программу, и она выскочила со следующим сообщением об ошибке: «Запуск второго цикла сообщений в одном потоке не является допустимой операцией. Вместо этого используйте Form.ShowDialog».
Мой переопределенный метод winproc в спецификаторе защищенного доступа:
method WndProc(var m:Message); override;
Мое определение метода winproc выглядит следующим образом:
method MainForm.WndProc(var m: Message);
const WM_NCLBUTTONDOWN = 161;
const WM_SYSCOMMAND = 274;
const HTCAPTION = 2;
const SC_MOVE = 61456;
begin
if ((m.Msg = WM_SYSCOMMAND) and (m.WParam.ToInt32 = SC_MOVE)) then
begin
exit;
end;
if ((m.Msg = WM_NCLBUTTONDOWN) and (m.WParam.ToInt32 = HTCAPTION)) then
begin
exit;
end;
end;
Ошибка возникает в файле program.pas:
[STAThread]
class method Program.Main(args: array of string);
begin
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.ThreadException += OnThreadException;
using lMainForm := new MainForm do
Application.Run(lMainForm); < --------Raised here.
end;
Как мне это решить?