Ver Mensaje Individual
  #5  
Antiguo 05-05-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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;
  ...
  
  // Y su implementacion...
  
  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.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita