Título: [Solucionado] Ayuda setparent y ubicacion Publicado por: Cromatico en 22 Noviembre 2010, 19:34 pm Hola de nuevoo :P
Una pregunta, yo estoy usando Setparent para incrustar mi formulario adentro de otro (este otro se encuentra en otro proceso) Mi pregunta es, hay alguna forma de, luego de que ya este inscrustado, ubicarlo siempre en la misma posicion? Tengo que sacar las medidas del form del otro proceso para lograr esto? Gracias!! Título: Re: Ayuda setparent y ubicacion Publicado por: BlackZeroX en 22 Noviembre 2010, 20:28 pm GetParent()
Antes de incrustarlo guarda el Origen (Hwnd Origen con GetPArent()). Dulce Infierno Lunar!¡. Título: Re: Ayuda setparent y ubicacion Publicado por: Cromatico en 22 Noviembre 2010, 22:18 pm Mmmm creo que no es lo que busco, ese api creo que retorna el HWND, yo ya tengo el hwnd de el form principal donde quiero incrustarlo, e incluso se incrusta bien, pero lo que intento hacer es luego de incrustarlo, moverlo a la posicion X, Y de ese form, nose si me explico...
Por ejemplo, una ves incrustado en el form del otro proceso, centrarlo en el medio del mismo... Gracias!! Título: Re: Ayuda setparent y ubicacion Publicado por: Dessa en 22 Noviembre 2010, 23:57 pm Mi pregunta es, hay alguna forma de, luego de que ya este inscrustado, ubicarlo siempre en la misma posicion? Tengo que sacar las medidas del form del otro proceso para lograr esto? mmm... no se luego de incrustrar, si fuera propiante un control de la aplicacion externa se podria cambiar de tamaño o posicion con SetWindowPos, pero este no es caso, creo que el Hwnd de la ventana de tu aplicación no va a figurar como hijo de la aplicación externa (aunque lo incrustes) Mi pregunta es, hay alguna forma de, luego de que ya este inscrustado, ubicarlo siempre en la misma posicion? Tengo que sacar las medidas del form del otro proceso para lograr esto? No se si hay alguna forma directa de hacerlo, pero para saber la posicion y tamaño de una aplicacion externa podes usar GetWindowRect con esas dimenciones tratá de centrar tu formulario desde el codigo, probalo ( pero nunca lo hice con un Form incrustado) Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long Private Type RECT Left As Long: Top As Long: Right As Long: Bottom As Long End Type Dim TR As RECT "LEFT" = TR.Left * 15 "TOP" = TR.Top * 15 "WIDTH " = TR.Bottom * 15 - TR.Top * 15 "HEIGHT"= TR.Right * 15 - TR.Left * 15 Título: Re: Ayuda setparent y ubicacion Publicado por: Cromatico en 23 Noviembre 2010, 02:18 am Hola Dessa gracias por contestar!!!
Me funcionó lo que me dijiste y lo hice de la siguiente manera: ret = hwnd del form externo strings = WidthExt y HeighExt +2720 y -4950 Son los dos valores que le sume y reste para ubicarlo en la posicion que yo queria no en el centro :P Call SetParent(Form2.hWnd, ret) Form2.Show Dim TR As RECT Call GetWindowRect(ret, TR) WidthExt = TR.Bottom * 15 - TR.Top * 15 HeighExt = TR.Right * 15 - TR.Left * 15 Form2.Move ((WidthExt - Form2.Width) \ 2) + 2720, ((HeightExt - Form2.Height) \ 2) - 4950 Saludos y gracias!!! Título: Re: [Solucionado] Ayuda setparent y ubicacion Publicado por: Dessa en 23 Noviembre 2010, 02:59 am Buenísimo, tenia dudas si podia servir, creo que puse al reves el retorno de HEIGHT y WIDTH, :xD :xD :xD , sería así:
"LEFT" = TR.Left * 15 "TOP" = TR.Top * 15 "HEIGHT"= TR.Bottom * 15 - TR.Top * 15 "WIDTH" = TR.Right * 15 - TR.Left * 15 Saludos Título: Re: [Solucionado] Ayuda setparent y ubicacion Publicado por: Cromatico en 23 Noviembre 2010, 04:20 am jjajajaja ya me parecia raro, porque no quedaba muy muy en el centro ya que el form no es un cuadrado perfecto, pero igual me servia ya que siempre lo posicionaba en las mismas coordenadas.
Entonces ya corregido me quedo: ret = hwnd del form externo strings = WidthExt y HeighExt +1230 y -3500 Son los dos valores que le sume y reste para ubicarlo en la posicion que yo queria no en el centro Call SetParent(Form2.hWnd, ret) Form2.Show Dim TR As RECT Call GetWindowRect(ret, TR) WidthExt = TR.Right * 15 - TR.Left * 15 HeightExt = TR.Bottom * 15 - TR.Top * 15 Form2.Move ((WidthExt - Form2.Width) \ 2) + 1230, ((HeightExt - Form2.Height) \ 2) - 3500 Gracias nuevamente! |