Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Cromatico en 17 Noviembre 2010, 02:16 am



Título: [Solucionado] Ayuda Dibujar en picture con el hwnd
Publicado por: Cromatico en 17 Noviembre 2010, 02:16 am
Hola que tal, mi nombre es Sebastian, queria hacer una consulta...
Es posible dibujar en un picture de otro proceso con su hwnd?
Por ejemplo para dibujar un punto en un picture dentro de mi proyecto puedo usar PSET, pero para hacerlo con un picture externo digamos, es posible hacerlo?
Estuve tratando de buscar informacion para ver si se podia hacer con sendmessage pero no logre encontrar nada respecto al dibujo sobre una picture externa...

Saludos y gracias!!


Título: Re: Ayuda Dibujar en picture con el hwnd
Publicado por: BlackZeroX en 17 Noviembre 2010, 04:34 am
.
SI, si es posible, debes usar las apis GDI (en la API Guide estan o tambien en el visor de texto API de VB) debes obtener el DC del Hwnd descrito con el api GetDC(Hwnd) donde Hwnd es la entrada del Hwnd de la ventana (llamese Boton, Form, checkbox, ListBox, ListView, etc...).

un ejemplo seria este codigo:

http://infrangelux.sytes.net/Blog/index.php?option=com_content&view=article&id=19:artgdi32lineasaleatoriasonthe-fly&catid=12:catgraficos&Itemid=20

En el ejemplo; Hwnd es 0 y es para pintar en TODO, se puede limitar...  HDC = GetDC(0)...

Dulces Lunas!¡.


Título: Re: Ayuda Dibujar en picture con el hwnd
Publicado por: Cromatico en 17 Noviembre 2010, 23:49 pm
Primero que nada dejame felicitarte, llevo mucho tiempo leyendo posts (como visitante) y siempre ayudas y solucionas los problemas o dudas de nosotros (me incluyo ahora)

Segundo, el codigo me funciono genial en el picture, el unico problema es que el picture actualiza muy rapido y la linea que dibuje en la posicion que puse yo, (hasta con el timer en intervalo 1) como que titila pero no es nada grave...

Y por otro lado queria consultarte si se puede aumentar el grosor de la linea o bien algun estilo de punto mas con mas diametro, gracias BlackZeroX!

Saludos!


Título: Re: Ayuda Dibujar en picture con el hwnd
Publicado por: BlackZeroX en 18 Noviembre 2010, 04:55 am
.
CreatePen()

El 1 indica que tan grusa debera ser, el primer parametro es el style y el 3er parametro el color.

Código
  1.  
  2. hPen = CreatePen(PS_SOLID, 1, vbRed)
  3.  
  4.  

Código:

· fnPenStyle
Specifies the pen style. It can be any one of the following values:
PS_SOLID
 Pen is solid.
PS_DASH
 Pen is dashed. This style is valid only when the pen width is one or less in device units.
PS_DOT
 Pen is dotted. This style is valid only when the pen width is one or less in device units.
PS_DASHDOT
 Pen has alternating dashes and dots. This style is valid only when the pen width is one or less in device units.
PS_DASHDOTDOT
 Pen has alternating dashes and double dots. This style is valid only when the pen width is one or less in device units.
PS_NULL
 Pen is invisible.
PS_INSIDEFRAME
 Pen is solid. When this pen is used in any graphics device interface (GDI) drawing function that takes a bounding rectangle, the dimensions of the figure are shrunk so that it fits entirely in the bounding rectangle, taking into account the width of the pen. This applies only to geometric pens.

· nWidth
Specifies the width of the pen, in logical units. If nWidth is zero, the pen is a single pixel wide, regardless of the current transformation.

· crColor
Specifies a color reference for the pen color.



Segundo, el codigo me funciono genial en el picture, el unico problema es que el picture actualiza muy rapido y la linea que dibuje en la posicion que puse yo, (hasta con el timer en intervalo 1) como que titila pero no es nada grave...

No estoy muy seguro, pero creo si subclasificas dicha ventana e intervienes solo antes/despues de pintar y cancelas algunos mensajes que le llegan ( WS_Paint, me parece ) evitaras el tilde que mensionas.

Dulces Lunas!ˇ.

Sangriento Infierno Lunar!ˇ.


Título: Re: Ayuda Dibujar en picture con el hwnd
Publicado por: Cromatico en 18 Noviembre 2010, 05:20 am
Mejor imposible, muchisimas gracias de nuevo!!

Solucionado!