elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  problema: obtener Rect de un item de ListView
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problema: obtener Rect de un item de ListView  (Leído 3,184 veces)
<[(x)]>

Desconectado Desconectado

Mensajes: 215



Ver Perfil
problema: obtener Rect de un item de ListView
« en: 13 Abril 2009, 04:57 am »

holas

   Como dije lo q busco es obtener la la estructura rect de un item de un ListView x. Me puse a ver un cacho y logre sacar este code.

Código
  1. Public Type RECT
  2.    Left As Long
  3.    Top As Long
  4.    Right As Long
  5.    Bottom As Long
  6. End Type
  7.  
  8. Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal Hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
  9. Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
  10. Public Declare Function GetParent Lib "user32" (ByVal Hwnd As Long) As Long
  11.  
  12.  
  13.  
  14. Public Function tapRectItem(ByVal lnghWnd As Long, ByVal Index As Integer)
  15.  
  16. Dim lRet As Long
  17. Dim tRec As RECT
  18.  
  19. lRet = SendMessage(lnghWnd, LVM_GETITEMRECT, Index, VarPtr(tRec))
  20.  
  21.  
  22.  
  23. With Form1.Picture1
  24.  
  25.  .Top = tRec.Top
  26.  .Left = tRec.Left
  27.  .Height = tRec.Bottom - tRec.Top
  28.  .Width = tRec.Right - tRec.Left
  29.  
  30.  .Visible = True
  31.  lRet = SetParent(.Hwnd, lnghWnd)
  32. End With
  33.  
  34. End Function
  35.  

 El  problema es que no me carga la variable 'trec' con los valores.

Espero puedan ayudarme y desde ya gracias --<[(x)]>-..
 
 


En línea

<[(x)]>
LeandroA
Moderador
***
Desconectado Desconectado

Mensajes: 760


www.leandroascierto.com


Ver Perfil WWW
Re: problema: obtener Rect de un item de ListView
« Respuesta #1 en: 13 Abril 2009, 06:21 am »

Hola a como no declares las varibles mucho no va a funcionar  ;)

y bueno si es que la declaraste el problema es como declaraste SendMessage

Código:
Option Explicit

Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type


Private Const LVM_FIRST As Long = &H1000
Private Const LVM_GETITEMRECT As Long = (LVM_FIRST + 14)

Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function GetParent Lib "user32" (ByVal Hwnd As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
                            (ByVal Hwnd As Long, _
                            ByVal wMsg As Long, _
                            ByVal wParam As Long, _
                            lParam As Any) As Long
 
 
Public Function tapRectItem(ByVal lnghWnd As Long, ByVal Index As Integer)
 
 Dim lRet As Long
 Dim tRec As RECT
 
 lRet = SendMessage(lnghWnd, LVM_GETITEMRECT, Index, tRec)
 
 Debug.Print tRec.Right, tRec.Bottom
 
 With Form1.Picture1
 
  .Top = tRec.Top
  .Left = tRec.Left
  .Height = tRec.Bottom - tRec.Top
  .Width = tRec.Right - tRec.Left
 
  .Visible = True
  lRet = SetParent(.Hwnd, lnghWnd)
 End With
 
End Function

bueno a como veo esto te digo, el formulario tiene que estar Me.ScaleMode = vbPixels o bien llevar las cordenadas a escala.
igual hacer esto es una chanchada porque en cuanto agas un scroll sobre el listview el picture va a pasar por devajo de este.
y si pensas hacer esto para un listview externo a tu aplicacion no te va a funcionar.

Saludos


En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: problema: obtener Rect de un item de ListView
« Respuesta #2 en: 13 Abril 2009, 06:26 am »

mmm ya se me adelanto LeandroA...¡! bueno ya ni que.

para que veas si cambia el pinture de tamaño solo convierte en comentario esta linea:

Código
  1. lRet = SetParent(.Hwnd, lnghWnd)

...¡!

Dulces Lunas.!¡
« Última modificación: 13 Abril 2009, 06:30 am por ░▒▓BlackZeroҖ▓▒░ » En línea

The Dark Shadow is my passion.
<[(x)]>

Desconectado Desconectado

Mensajes: 215



Ver Perfil
Re: problema: obtener Rect de un item de ListView
« Respuesta #3 en: 13 Abril 2009, 20:37 pm »

mmm
 
gracias
y conocen alguna forma para hacer esto con un listview externo a mi aplicación??


En línea

<[(x)]>
xkiz ™


Desconectado Desconectado

Mensajes: 1.252


Ver Perfil WWW
Re: problema: obtener Rect de un item de ListView
« Respuesta #4 en: 13 Abril 2009, 20:49 pm »

perdon si me mando cualquiera, pero proba con FindWindow...
En línea

LeandroA
Moderador
***
Desconectado Desconectado

Mensajes: 760


www.leandroascierto.com


Ver Perfil WWW
Re: problema: obtener Rect de un item de ListView
« Respuesta #5 en: 14 Abril 2009, 20:56 pm »

Hola para obtener el Rect de un item de un listview externo fijate este ejemplo mira dentro del modulo MdlListview tenes una funcion que te crea un array con el caption y el rect de cada item del listview, eso si, tenes que pasarle el hwnd del listview ya que este utiliza el del escritorio.

Saludos
En línea

<[(x)]>

Desconectado Desconectado

Mensajes: 215



Ver Perfil
Re: problema: obtener Rect de un item de ListView
« Respuesta #6 en: 15 Abril 2009, 01:14 am »



Muchisisismas Gracias LeandroA es exactamente lo q buscaba . ;-)
En línea

<[(x)]>
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines