Ver Mensaje Individual
  #46  
Antiguo 22-09-2014
engranaje engranaje is offline
Miembro
 
Registrado: may 2011
Posts: 163
Reputación: 14
engranaje Va por buen camino
Si no me equivoco, sucede que cuando creas una ventana desde delphi 7, bien creando tu propio form, con un showmessage o con un messagedlg, al final y siguiendo la vcl vas a llegar al
Código Delphi [-]
  TCustomForm.CreateWindowHandle(const Params: TCreateParams)


y dentro a la llamada a la api en cuestion bien a
Código Delphi [-]
WindowHandle := SendMessage(Application.MainForm.ClientHandle,
      WM_MDICREATE, 0, Longint(@CreateStruct));
http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

o a

Código Delphi [-]
CreateWindowEx(ExStyle, WinClassName, Caption, Style,
      X, Y, Width, Height, WndParent, 0, WindowClass.hInstance, Param);

http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

Según los parametros que en útima instancia se le esten pasando a CreateWindowHandle. Bien, si no me equivoco al llamar a otra aplicación con ShellExecute, esa otra aplicación pasa a estar activa mientras la nuestra pasa a segundo plano. Con la nuestra en segundo plano al llamar amn showmessage o messagedlg al final lo que hace es enviar al sistema un mensaje WM_MDICREATE creando una nueva ventana que tiene como "padre" en el zorder al mainform. Lo que creo es que como nuestra aplicación no está activa la ventana se crea efectivamente pero no como esperamos.

Siento no poder ser de mucha ayuda pero si ya has sido capaz de llegar hasta ese punto yo solo probaría con ese form propio asegurandote de que el padre y el owner es el form desde el que se llama para que finalmente la llamada a la api sea a createWindowEx y el wndParent sea el form desde el que se llama (si no me equivoco el activo en nuestra aplicación). Creo de veras que de este modo podria solucionarse el problema.
Responder Con Cita