Я пытаюсь переопределить метод "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;
Как мне решить эту проблему?