Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-10-2013
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
usar la ruedita del mouse en Builder 6

Saludos,
Recientemente encontré un código para implementar el uso de la rueda del mouse (wheel) en los Grid y otros componentes. El código estaba en Pascal y como trabajo con C++ lo traduje quedando algo asi
Código Pascal en el sitio web

Código Delphi [-]
procedure TForm1.ApplicationEvents1Message
   (var Msg: TMsg; var Handled: Boolean) ;
var
   i: SmallInt;
begin
   if Msg.message = WM_MOUSEWHEEL then
   begin
     Msg.message := WM_KEYDOWN;
     Msg.lParam := 0;
     i := HiWord(Msg.wParam) ;
     if i > 0 then
       Msg.wParam := VK_UP
     else
       Msg.wParam := VK_DOWN;

     Handled := False;
   end;
end;

Una ves traducido quedó algo asi.
Código C++
Código:
void __fastcall TForm3::ApplicationEvents1Message(tagMSG &Msg,
      bool &Handled)
{
	int i;
	if (Msg.message == WM_MOUSEWHEEL)
	{
		Msg.message = WM_KEYDOWN;
		Msg.lParam = 0;
		i = HIWORD(Msg.wParam);
		if (i == 120)
		{
			Msg.wParam = VK_UP;
		} 
	        else
	        {
		        Msg.wParam = VK_DOWN;
	        }
	        Handled = false;
       }
}
Como pueden ver en el código en Pascal no me funcionaba bien con el i > 0 porque i solo obtenía dos valores 65416 cuando se usaba el Wheel Down y 120 cuando se usaba el Wheel Up. Por lo que lo modifique en mi código en c++ poniendo i == 120
La pregunta concreta es, eso esta bien, I siempre obtiene esos valores en c++ o pueden variar, en caso de variar debería poner la condición i > algo, pues cual seria ese algo?
Gracias de antemano por su tiempo
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________
Responder Con Cita
  #2  
Antiguo 04-10-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Impadron.

En realidad no entendí bien cuál es el problema, pero yo lo tengo implementado de este modo y funciona correctamente.

Header:
Código:
...
private:	
  void __fastcall MouseWheel(tagMSG &Msg, bool &Handled)
...
cpp:
Código:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 Application->OnMessage = MouseWheel;
}

void __fastcall TForm1::MouseWheel(tagMSG &Msg, bool &Handled)
{
  if (Msg.message == WM_MOUSEWHEEL) {
    Msg.message = WM_KEYDOWN;
    Msg.lParam = 0;
    if ((char)HIWORD(Msg.wParam) > 0)
      Msg.wParam = VK_UP;
    else
      Msg.wParam = VK_DOWN;
    Handled = false;
  }
}
Saludos

Edito: El cast a char permite el desborde que se evalua en el condicional.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 04-10-2013 a las 23:14:38. Razón: comentario
Responder Con Cita
  #3  
Antiguo 05-10-2013
j0seant j0seant is offline
Miembro
 
Registrado: feb 2006
Posts: 38
Poder: 0
j0seant Va por buen camino
En lugar de HIWORD, hay una macro pensada para esto:

GET_WHEEL_DELTA_WPARAM(Msg.wParam)
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
duda con Shapes y mouse move en C++ Builder paton C++ Builder 2 18-11-2008 12:27:12
Capturar 'ruedita' del ratón Jose_Pérez API de Windows 6 11-04-2008 15:08:10
usar el mouse en DBLookup, se puede ? JuanHC Conexión con bases de datos 2 23-11-2007 10:49:29
usar imagen en builder cocke C++ Builder 2 27-11-2006 02:44:10
Usar builder en otra pc... pagoti C++ Builder 4 05-02-2005 21:29:11


La franja horaria es GMT +2. Ahora son las 00:59:22.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi