Ho una forma con MainMenu e voglio intercettare quando l'utente seleziona una voce di comando da un menu. questo funziona a Delfi:Problema con WM_COMMAND su Lazarus/FPC
type
TForm1 = class(TForm)
... // Memo and MainMenu created
protected
procedure WMCommand(var Info: TWMCommand); message WM_COMMAND;
end;
procedure TForm1.WMCommand(var Info: TWMCommand);
begin
if (Info.ItemID < 10) then
Memo1.Lines.Add('WMCommand ' + IntToStr(Info.ItemID));
end;
In MainMenu ho aggiunto alcuni elementi e quando seleziono tali invii dal menu, quindi mia Memo1 è pieno di:
WMCommand 2
WMCommand 3
WMCommand 3
WMCommand 2
WMCommand 5
...
ho portato questa applicazione per FPC/Lazarus , ma sembra che il gestore WM_COMMAND non venga chiamato! Quando ho impostato il punto di interruzione in TForm1.WMCommand
in Delphi, Delphi si è fermato molte volte prima della comparsa del modulo principale. Lazarus non ha mai fermato su questo punto di interruzione. Penso che qualcosa sia rotto con WM_COMMAND a Lazzaro, ma forse non so qualcosa. Qualche idea?
Uso Lazarus 0.9.28.2 beta con FPC 2.2.4 su WinXP.
EDIT:
Utilizzando Winspector ho controllato che MainMenu genera WM_COMMAND:
WM_COMMAND
Code: 0
Control ID: 2
Control HWND: 0x00000000
Message Posted
Time: 09:37:14.0968
Penso che ci sia bug in Lazarus/FPC in WM_COMMAND movimentazione metodo messaggio e mi ha riferito che: http://bugs.freepascal.org/view.php?id=15521
Non è forse un bug/funzionalità mancante che LM_COMMAND e CN_COMMAND non funzionano, non è possibile nemmeno catturare sul livello portatile dell'evento? –