Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: calk9 en 27 Septiembre 2011, 03:34 am



Título: Buscar en ListBox
Publicado por: calk9 en 27 Septiembre 2011, 03:34 am
Buenas a todos, a continuación les dejo mi código el cual agrega a un listbox el color del píxel en donde se encuentra el mouse, al moverse el mismo. Para saber cuando se mueve he instalado un hook mediante SetWindowsHookEx, pero eso no es lo importante. El problema es que utilizo SendMessage, con la Constante LB_FINDSTRINGEXACT la cual busca una Cadena. Pero me estoy volviendo loco ya que hago una condición (sentencia if) la cual dicta que si devuelva False, la función que busca el Color en el listbox, no agregue al color obtenido. Esto para evitar que se me agreguen múltiples veces el mismo color, y después me vuelvo loco identificando cada uno. Pero no me devuelve false, o algún error estoy cometiendo en el código que no puedo identificar, por eso estoy aqui! He aquí el código:

La función que busca el string:

Código:
Public Function Encuentra(Frase As String) As Boolean
 
Dim Indice As Long
     
    ' Tipo de búsqueda
    Indice = SendMessage(fMain.List1.hwnd, LB_FINDSTRINGEXACT, -1, Frase)
     
     
    If Indice < 0 Then
        'no se encontró
        Encuentra = False
    Else
        ' se encontró la frase entonces la selecciona
        Encuentra = True
    End If
   
End Function

Aquí donde se utiliza:

Código:
Dim hdc As Long

    Call GetCursorPos(Mouse)

'Get Color
hdc = GetDC(0)
pxColor = GetPixel(hdc, Mouse.x, Mouse.y)
ReleaseDC 0, hdc

'Set color
Picture1.BackColor = pxColor


If Encuentra(Hex(pxColor)) = False Then
    List1.AddItem Hex(pxColor)
End If

Por algúna razón me agrega varias veces el mismo color encontrado, lo cual no debería, si es que lo encuentra en la condición planteada.

Gracias desde ya, saludos!


Título: Re: Buscar en ListBox
Publicado por: BlackZeroX en 27 Septiembre 2011, 04:37 am
.
* Jamas uses los controles X como un amacen de datos... es algo que no se deberia de hacer; separa la parte grafica de la parte interna de tu programa...
* A razon de tu problema te dejo esta clase.

Quizas te sirva mi clase.
http://foro.elhacker.net/programacion_visual_basic/source_cpushsort-t340133.0.html

Dulces Lunas!¡.


Título: Re: Buscar en ListBox
Publicado por: raul338 en 27 Septiembre 2011, 14:15 pm
Tal vez te funcione llamándolo así

Indice = SendMessage(fMain.List1.hwnd, LB_FINDSTRINGEXACT, -1, ByVal Frase)

Todo depende de la declaración de SendMessage que tengas  :)


Título: Re: Buscar en ListBox
Publicado por: calk9 en 27 Septiembre 2011, 21:17 pm
.
* Jamas uses los controles X como un amacen de datos... es algo que no se deberia de hacer; separa la parte grafica de la parte interna de tu programa...
* A razon de tu problema te dejo esta clase.

Quizas te sirva mi clase.
http://foro.elhacker.net/programacion_visual_basic/source_cpushsort-t340133.0.html

Dulces Lunas!¡.

No he entendido a que te refieres con el primer asterisco, gracias por la respuesta.

Tal vez te funcione llamándolo así

Indice = SendMessage(fMain.List1.hwnd, LB_FINDSTRINGEXACT, -1, ByVal Frase)

Todo depende de la declaración de SendMessage que tengas  :)

Exactamente eso necesitaba! Gracias!  ;D

Saludos.