Foros del Web » Programación para mayores de 30 ;) » Programación General »

Habilitar Botón del medio del mause en MSHFlexGrid

Estas en el tema de Habilitar Botón del medio del mause en MSHFlexGrid en el foro de Programación General en Foros del Web. Cómo puedo yo habilitar el Botón del medio del mause en un MSHFlexGrid?...
  #1 (permalink)  
Antiguo 16/11/2004, 12:56
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Habilitar Botón del medio del mause en MSHFlexGrid

Cómo puedo yo habilitar el Botón del medio del mause en un MSHFlexGrid?
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #2 (permalink)  
Antiguo 16/11/2004, 13:06
Avatar de aavg  
Fecha de Ingreso: abril-2002
Ubicación: Morelia México
Mensajes: 356
Antigüedad: 22 años
Puntos: 1
Necesitas un control ocx, por propiedades del mshflexgrid no
__________________
Abraham Velasco
Usuario # 516 en los Foros del Web.
El hombre no vale por lo que sabe, sino por lo que transmite
C'est parce qu'il y a un Dieu que nous sommes libres
  #3 (permalink)  
Antiguo 16/11/2004, 13:56
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 2 meses
Puntos: 1
Mensaje

Al botón de en medio? te refieres al wheel (ruedita)?

Pues tengo una pequeñas historia con eso.

Pues ya estaba aburrido que el scroll del mouse no me funcionara con Visual Basic y con ninguno de mis programas escolares hecho.

Una vez vi en la PC de un amigo que si le funciona el scrroll, le pregunte que fue lo que había hecho, me ha constestado que solo instalo los drivers de su ratón.

Fui a mi casa busque los drivers para mi mouse y los instale y como por arte de magia ya funcionaba el scroll en VB y en mi programas.

Que simple verdad?

PD: en mi trabajo no funciona ... no me podido encontrar los drivers para un mouse dell y eso que tengo los discos de fabricas ....
__________________
Leer es Saber, REEL.
Mi Blog
  #4 (permalink)  
Antiguo 16/11/2004, 14:04
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Cita:
Necesitas un control ocx, por propiedades del mshflexgrid no
No es que quiero hacerlo por las propiedades del MSHFLEXGRID, sino algún código que haga que funcione. Tienes algún API que pueda utilizar?

Cita:
reel Al botón de en medio? te refieres al wheel (ruedita)?
Si, me refiero a la ruedita.
No me parece que sea problemas de DLL. Tengo entendido que el flexgrid no soporta la ruedita...
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #5 (permalink)  
Antiguo 16/11/2004, 14:13
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 2 meses
Puntos: 1
si funciona ...

yo le hecho funcionar con tan solo instalar los drivers respectivo del mouse osea, no usar los genericos que vienen con windows.

Saludes
__________________
Leer es Saber, REEL.
Mi Blog
  #6 (permalink)  
Antiguo 16/11/2004, 14:24
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Podes hacer subclassing con el handle del control y procesar los mensajes correspondientes a WM_MOUSEWHEEL.

Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance << No uses MSHFlexGrid ni Visual Basic y listo.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #7 (permalink)  
Antiguo 16/11/2004, 14:45
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Cita:
Podes hacer subclassing con el handle del control y procesar los mensajes correspondientes a WM_MOUSEWHEEL.
No entendí. Que es el handle del control y que el WM_MOUSEWHEEL?



Cita:
No uses MSHFlexGrid ni Visual Basic y listo.
Cuál es el lenguaje de tu gusto?
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #8 (permalink)  
Antiguo 16/11/2004, 15:07
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
El handle del control es el identificador que le asigna el Sistema Operativo al mismo.

C/C++ y assembly.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #9 (permalink)  
Antiguo 16/11/2004, 15:34
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Ok, el handle VB lo maneja por la propiedad hWnd.
Ahora bien, en que evento pudiera yo disparar el movimiento de la ruedita?
Cómo utilizo el handle en este caso?


Cita:
C/C++ y assembly.
Esos lenguajes son buenos para aplicaciones que manejen periféricos. Aplicaciones más robustas.
Prefiero Visual Basic por la rapidez con lo que uno hace aplicaciones comerciales.
Una aplicación comercial pudiera tomarme hacerla en C++ 3 o 4 meses, mientras que en VB me tomaría un mes.
En asambler duraría... sin comentarios...
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #10 (permalink)  
Antiguo 17/11/2004, 01:27
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 3 meses
Puntos: 7
Antes de pasar al código, una pequeña nota sobre subclassing.
Subclassing en el contexto de los mensajes de windows (no en el contexto de OOP), no es otra cosa sino crear un procedimiento que habrá de procesar los mensajes que el sistema operativo envía a la ventana, y "colgar" este procedimiento en la cola de mensajes. Normalmente, el procedimiento creado procesará sólo algunos mensajes (antes o después del procedimiento normal) y dejará los demás para que los procese el procedimiento normal.
El sistema operativo, para cada ventana busca un procedimiento al cual pasarle notificaciones de lo que ocurre con la ventana. En VB, esto queda perfectamente oculto, dejándonos con los eventos.
Por ejemplo, al hacer click en un botón o en el formulario, el sistema operativo debe informar al procedimiento del formulario que hubo un click.

¿Como lo Hace en C?
En lenguaje C, el procedimiento suele estar definido como:
LRESULT CALLBACK WndProc( HWND hWnd, UINT messg, WPARAM wParam, LPARAM lParam )
Para detectar el click en el Boton, vemos si messg es igual a WM_COMMAND, si es así, verificamos si el Word bajo de wParam corresponde a algún identificador de botón que hayamos definido, para luego decidir que hacer.
Para detectar el click en la ventana, windows no enviará WM_COMMAND, sino WM_LBUTTONDOWN ó WM_RBUTTONDOWN ó WM_MBUTTONDOWN seguido de WM_LBUTTONUP ó WM_RBUTTONUP ó WM_MBUTTONUP (según el caso, y pueden haber otros mensajes entre estos.) Entonces, se tiene que verificar que el mensaje de sistema que avisa que el botón de mouse ha sido liberado, ocurra sobre la ventana, para validar el click. Aunque esto suene un poco complicado, no lo es realmente.

¿Como lo Hace en VB?
En VB todo este proceso queda oculto. Los mensajes son agrupados en grupos que el usuario identifica (click en este caso) independientemente de que para el SO sean notificaciones distintas, y se entrega un evento acorde. Y los mensajes que los desarrolladores consideraron que no llegaríamos a usar, simplemente no están.

¿Qué tiene que ver esto con el tema?
Todo. Es precisamente por esta simplificación por la que muchos programadores abandonaron VB. Llega un punto en el que se tienen que hacer muchos malabares para obtener una funcionalidad que en otros lenguajes se da por hecha. Sin embargo, es esta misma simplificación la que lo hace un lenguaje popular. La simplificación nos limita mucho, porque si una funcionalidad no está ya en el control que se usa, lo primero que te recomendarán es "cámbiate de lenguaje" o "consigue otro control".

Aunque VB oculte los mensajes del SO, podemos poner nuestro propio procedimiento, y manipular del mismo modo que en C los mensajes (subclassing). El problema con subclassing, es que casi todas las librerías que encontrarás resultarán inestables. He programado en VB desde la versión 4, y para hacer subclassing he intentado de todo: DLL's OCX's, archivos de clase que sólo funcionan en el programa compilado, etc. En la versión 5, hacer subclassing se volvió algo más simple, pero siempre inestable. Presionar el botón STOP en el Ide, era un error de sistema asegurado... En VB6, intenté hacer mi propio método, pero no era mejor que los que había usado. La librería más estable que encontré fue la de www.vbaccelerator.com , pero hace algunos meses, encontré un código de Paul Caton que eliminaba todos los problemas, usando ensamblador en VB, para crear el procedimiento de ventana. Desde entonces, uso esas rutinas, y uso ensamblador embebido para mejorar el desempeño de mis rutinas VB (antes reemplazaba al compilar el código objeto generado por VB con uno propio), pero eso es otra historia.

El código que te presento, permite mover los scrollBars del grid, pero la estructura del programa, por el modo en que maneja los mensajes, tiene más tintes de C que de VB. Te recomiendo que veas en el SDK las definiciones de las funciones y las constantes usadas, para que te resulte más claro. Nada te impide que crees un clase a manera de envoltorio en la cual definirías los eventos que pudieras llegar a usar.

Como nota final, reitero que el código en los módulos de clase, no es mío, sino de Paul Caton, buscando en la red seguramente encontrarás más referencias sobre su técnica de meter ensamblador en VB6 ("Assembler Code Tunk" si bien recuerdo).

http://www.ag-info.com/MsGrid_SC.zip

Y a pesar de todos los posibles inconvenientes que el lenguaje Basic puede llegar a presentar para muchos, yo me sigo quedando con el, no porque no sepa usar otros, o porque vaya a hacer más rápido mi aplicación, sino porque me gusta...
  #11 (permalink)  
Antiguo 17/11/2004, 01:41
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Si, es excelente para generar programas de gran tamaño y con poca funcionalidad.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #12 (permalink)  
Antiguo 17/11/2004, 02:31
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 3 meses
Puntos: 7
Eternal Idol:
Conste que escribí Lenguaje Basic, y no me refería precisamente al dialecto de Microsoft, VB6.
El lenguaje basic, ¿tiene cuanto? ¿40 años? En ese tiempo, han desarrollado muy buenos compiladores y algunos muy malos desde luego, lo mismo que con C++. Y aunque te reconozco que VB es un excelente generador de BloatWare, no puedes generalizar sobre esa base. Hay algunos compiladores Basic que en cuanto a tamaño de archivo generado rivalizan con compiladores de C++. Un ejemplo que me viene a la mente en este momento es PowerBasic. También está el RealBasic, capaz de generar aplicaciones multiplataforma. Pero incluso, en los campos menos esperados, existen compiladores excelentes con Basic. Y ahora me refiero a mi campo, el de microcontroladores. Existen compiladores fabulosos, como el Bascom para los microcontroladores AVR de Atmel... O veamos el caso de unas tarjetas muy populares, las BasicStamp de Paralax... ¿Por que escogieron Basic y no C++?
¿Poca funcionalidad? Creo que no tienes idea de lo que dices. Obtengo la misma funcionalidad que compiladores similares con otros lenguajes (C/C++, ADA). Al fin y al cabo, lo único que importa es el código máquina entregado, y reitero, muchos compiladores Basic entregarán código tan eficiente como el de los compiladores C/C++ (o mejor). Lo más rápido en ejecución y pequeño podría lograrse con ensamblador solamente. Pero dime, tú que sabes ensamblador (para X86 supongo), ¿crees que es redituable o práctico aprender el ensamblador de una docena de microprocesadores/microcontroladores diferentes? Es más rápido y eficiente generar la aplicación con la mejor herramienta disponible y optimizar sectores críticos con ensamblador. Aún con VB y ASM juntos he hecho aplicaciones que tienen que ver con mi ramo, como captura y análisis de señales en tiempo real. con un desempeño que díficilmente puedo mejorar con una aplicación hecha con C/C++; y, aunque está mal que lo diga, no soy un mal programador en C++.

No creo que alguien llegue a pensar que C++ apesta sólo porque usó VC++.
No puedes descalificar al lenguaje sólo por un mal dialecto.

Última edición por Beakdan; 17/11/2004 a las 02:34
  #13 (permalink)  
Antiguo 17/11/2004, 07:08
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Muchas Gracias Beakdan.
Excelente explicación!
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #14 (permalink)  
Antiguo 17/11/2004, 07:38
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Estabamos hablando de Visual Basic, de cualquier manera BASIC es un lenguaje para principiantes y si te cabe alguna duda solo mira el significado de sus iniciales.

Lo ideal sería saber el ensamblador de cada uno de los microprocesadores que uno utiliza, obviamente. Que sea factible o que no tenga un rédito económico es otra historia.

La frase era "Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance " sigo sosteniendo que Visual Basic o cualquire BASIC son lo mediocre y no lo excelente.

Realmente ya tuve demasiadas discuciones acerca del PowerBasic y no me interesan en lo más mínimo, entrá a la página de iczelion y decí lo que quieras sobre ese compilador.

El que quiera lo mediocre que siga con BASIC.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO

Última edición por Eternal Idol; 17/11/2004 a las 08:03
  #15 (permalink)  
Antiguo 30/09/2005, 06:30
Avatar de VisualGuallabo  
Fecha de Ingreso: marzo-2005
Mensajes: 288
Antigüedad: 19 años
Puntos: 2
Eternal Idol siempre con lo mismo si tanto te apesta el Basic que ases en este foro que trata de Basic. YO estoy iniciandome en el mundo de Linux y nunca criticare al Basic aunque el c me sea millones de veses mas util o el lengua que escoja para linux. al fin y al cabo c++ y Vb son productos Microsoft. si crees que Vb es mediocre crea un lenguaje que no lo sea que lo dudo.
__________________
"No hay lenguaje de programación potente que sea inferior a otro semejante cuando existe un buen programador que lo defiende"

Yosvanis Cruz Alias VisualGuallabo
Ycruz
  #16 (permalink)  
Antiguo 30/09/2005, 07:53
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Primero que nada este es el foro de programacion y no trata en lo absoluto de Basic. A ver si abrimos los ojos antes de responder.

Segundo estas respondiendo a un mensaje del 17-11-2004.

Tercero, ¿Pensas que diciendo que te estas iniciando en el mundo Linux me impresionas o algo por el estilo? Sino no entiendo que tiene ver porque nadie hablo del mismo. Un apunte al margen, busca el lenguaje en el cual esta hecho el susodicho Kernel.

Finalmente, ¿C++ es un producto de Microsoft? Porque no dejas de hacer el ridiculo ...
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:14.