Cita:
Empezado por roman
al menos en mi caso, aunque sí muestra el menú, no responde a los comandos.
|
Cierto en mi caso tampoco... ?¿?¿? Curioso, no me había dado cuenta.
Revisando la API
TrackPopupMenu dice lo siguiente:
hWnd
Identifies the window that owns the shortcut menu. This window receives all messages from the menu. The window does not receive a WM_COMMAND message from the menu until the function returns.
y ésto:
Remarks
Accelerator keystrokes that select items from the window menu are translated into WM_SYSCOMMAND messages.
Por lo tanto si el Handle que se le pasa como parámetro recibe el mensaje, se supone que se puede capturar ese mensaje y enviarlo a la cola de mensajes para que se procese.
Define en la parte privada el método:
Código Delphi
[-]
procedure WMCommand(var msg: TWMCommand); message WM_COMMAND;
...
procedure TForm1.WMCommand(var msg: TWMCommand);
begin
PostMessage(handle, WM_SYSCOMMAND, TMessage(msg).WParam, TMessage(msg).LParam);
inherited;
end;
Funciona, pero la cosa se va complicando... La solución de Román como mínimo es más corta y funciona igual de bien.