Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Quiero enviar mensajes a Windows (https://www.clubdelphi.com/foros/showthread.php?t=5488)

champy 23-11-2003 13:11:18

Quiero enviar mensajes a Windows
 
A ver, realmente lo que quiero es enviar el mensaje WM_NextDlgCtl a Windows para que haga saltar el foco al siguiente control, he estado buscando informacion al respecto y he averiguado que es recomendable mandar el mensaje con la funcion del Api PostMessage(Handle, Mensaje, parametro, parametro) es decir, estoy intentando hacer...

PostMessageW(HWND_BROADCAST, WM_NextDlgCtl ,0 ,0);

Pero por alguna extraña razon que escapa a mi comprension esto no funciona, compila pero no hace absolutamente nada.... ¿Alguien podria decirme Porque?

Un saludo a tod@s

roman 23-11-2003 20:15:34

Cita:

champy comentó:
PostMessageW(HWND_BROADCAST, WM_NextDlgCtl ,0 ,0);

¿De dónde sale HWND_BROADCAST? Esto se usa para mandar un mensaje a todas las ventanas y no creo que un mensaje como el que quieres pueda trabajar así ya que sólo una ventana tiene el foco.

En lugar de eso tienes que poner el 'handle' de la ventana donde deseas mover el foco.

// Saludos

champy 24-11-2003 21:37:11

Muchas gracias, problema resuelto, lo solucionado pasandole en AOwner Como TForm

PostMessage((AOwner as TForm).handle, wm_nextdlgctl ,0 ,0);

con esto funciona perfectamente ;) ¿Se nota mucho que estoy empezando con los coponentes y que aun no tengo mucha idea? jjeje

Aun así, si se crea el componente en ejecucion y se pasa NIL al AOwner, no podria enviar enviar el mensaje ¿Alguien sabe si hay otra forma de averiguar quien es el formulario padre ?, Lo probaria con parent pero noes valido puesto que este puede ser un TPanel ...

Muchas gracias

jachguate 25-11-2003 00:32:15

No se exactamente si funcionaría... pero podes enviarle el mensaje a la aplicación, que siempre existirá, no??

O bien al Parent, que siempre será un TWinControl:

PostMessage((Parent as TWinControl).handle, wm_nextdlgctl ,0 ,0);

Probalo y me contas...

;)


La franja horaria es GMT +2. Ahora son las 07:15:32.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi