Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Juan Sanchez

#11
Bueno agradezco tu respuesta que siempre es bueno salir de dudas, lo que veo es que el procedimiento
Código (vbnet) [Seleccionar]
Protected Overrides Sub WndProc(ByRef m As Message)
  If m.Msg = WM_MOUSEMOVE Then
    'Este procedimiento quiero que sea del header y no de ListView
  End If
  MyBase.WndProc(m)
End Sub

es de la ventana ListView donde espera todos los mensajes a esa ventana y la ventana o el header es otra entonces se debe esperar casi de la misma forma los mensajes del header, en este caso el header solo envia el mensaje WM_NOTIFY a su ventana padre que es el ListView, no se si estoy equivocado quisiera que me despejen esa duda, y si fuese así como se haría para esperar los mensajes del header al igual que el listview con que apis o funciones se implementaría, leí en la web la API CallWindowProcA y CallWindowProcW pareciera que hacen eso, ahora mi idea se centra en implementar un procedimiento para el header y asi obtener el mensaje WM_MOUSEMOVE y otros como de su ventana padre listview.
Espero que me ayuden con eso, les agradezco por su ayuda, muchas gracias Elektro.
#12
Saludos a todos los integrantes del foro, bueno debo acudir a ustedes por un tema que tal ves no es tan necesario.

al parecer el ListView de VB.NET en la vista detalle no genera el mensaje WM_MOUSEMOVE cuando se pasa el mouse sobre las columnas de la cabecera o como se conoce header, y mi pregunta es como puedo agregar a la cola de mensajes de windows al header de listview en vb net para que cuando pase el mouse encima del header me mande ese mensaje.

Código (vbnet) [Seleccionar]
Protected Overrides Sub WndProc(ByRef m As Message)
  If m.Msg = WM_MOUSEMOVE Then
    'Procesar mensaje cuando pase el mouse encima del header del ListView
  End If
  MyBase.WndProc(m)
End Sub


Gracias de antemano por sus respuestas.
#13
Gracias Lekim por responder a la pregunta, lo que quisiera saber como cambiar el backcolor en el header de la parte derecha del sobrante, es decir que toda la barra del header quede de un solo color.
lo que quiero hacer es que se cambie el backcolor de otro color sin utilizar el evento DrawColumnHeader y sin perder los efectos cuando el mouse pasa por encima, por eso decía si se puede modificar solo el backcolor usando alguna api de windows para eso.

tengo mi código que es lo siguiente, lo repinta toda la barra del header pero lo borra las columnas existentes.

Librerias:
Código (vbnet) [Seleccionar]
Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWndParent As IntPtr, ByVal hwndChildAfter As IntPtr, ByVal lpszClass As String, ByVal lpszWindow As String) As IntPtr
 Private Declare Function GetClientRect Lib "user32.dll" (ByVal hwnd As IntPtr, ByRef lpRect As RECT) As Integer
 Private Declare Function FillRect Lib "USER32.DLL" (ByVal hDC As Integer, ByRef lpRC As RECT, ByVal hBR As Integer) As Integer
 Private Declare Function CreateSolidBrush Lib "GDI32.DLL" (ByVal crColor As Integer) As Integer
 Private Declare Function DeleteObject Lib "GDI32.DLL" (ByVal hObject As Integer) As Integer
 Private Declare Function GetDC Lib "user32" (ByVal hwnd As IntPtr) As Integer
 Private Structure RECT
   Dim Left As Integer
   Dim Top As Integer
   Dim Right As Integer
   Dim Bottom As Integer
 End Structure

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
   Dim m_HdrHwnd As IntPtr, x As IntPtr, rt As RECT, hBrush As Integer, dc As Integer
   m_HdrHwnd = FindWindowEx(ListView1.Handle, 0, "SysHeader32", vbNullString)
   x = GetClientRect(m_HdrHwnd, rt)
   dc = GetDC(m_HdrHwnd)
   hBrush = CreateSolidBrush(14563858)
   FillRect(dc, rt, hBrush)
 End Sub



mas o menos quiero algo así como en esta imagen en el siguiente link



Gracias por responderme.
 
#14
Saludos a todos los componentes de este foro, lo que quiero consultarles es como puedo cambiar el backcolor y forecolor en el header de un listview en vbnet con las apis de windows, se los agradeceré mucho y espero tener suerte...