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 02-02-2021
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Obtener coordenadas relativas de la ventana por posicion

Buenas, el titulo no creo que sea todo lo correcto.
Lo que tengo es una pequeña aplicación con la que obtengo las coordenadas de un boton dentro de una ventana, o sea, me voy desplazando por la ventana y voy viendo las coordenadas desde el lado derecho y superior de la ventana pero cuando me coloco encima de cualquier componente las coordenadas pasan a ser relativas a ese componente, o sea, toma como inicio la esquina superior izquierda del componente.
Eso esta bien pero quiero que no tome las coordenadas del boton, sino que me muestre solo las de la ventana aunque esté encima de un boton o lo que sea, solo de la ventana principal del proceso en el que esté el cursor. No se si me explico bien.
Ahora mismo tengo esto:
Código PHP:
void __fastcall TForm1::TimerTimer(TObject *Sender)
{
   
//Detengo el timer mientras se realizan las operaciones
   
Timer->Enabled false;

   
//Compruebo si tengo pulsada alguna de las dos teclas Ctrl
   //Si es así entro
   
if(CtrlDown() == true){
      
char nameClass[MAX_CLASS_NAME];
      
char nameWnd[512];
      
HWND hWnd;
      
int retval;
      
tagPOINT coordenadas;

      
//Obtengo la posicion del puntero
      
GetCursorPos(&coordenadas);

      
//Obtengo el hwnd de la ventana o componente sobre el que estoy situado
      
hWnd WindowFromPoint(coordenadas);

      
//Obtengo las coordenadas relativas a la ventana
      
RECT rect;
      
GetWindowRect(hWnd,&rect);
      
coordenadasRelativas.x=coordenadas.rect.left;
      
coordenadasRelativas.y=coordenadas.rect.top;
      
LabelCoorRelX->Caption coordenadasRelativas.x;
      
LabelCoorRelY->Caption coordenadasRelativas.y;
   }
   
Timer->Enabled true;

Responder Con Cita
  #2  
Antiguo 06-02-2021
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Prueba buscando el Parent:

Código PHP:
void __fastcall TForm1::TimerTimer(TObject *Sender)
{
   
//Detengo el timer mientras se realizan las operaciones
   
Timer->Enabled false;

   
//Compruebo si tengo pulsada alguna de las dos teclas Ctrl
   //Si es así entro
   
if(CtrlDown() == true){
      
char nameClass[MAX_CLASS_NAME];
      
char nameWnd[512];
      
HWND hWnd;
      
int retval;
      
tagPOINT coordenadas;

      
//Obtengo la posicion del puntero
      
GetCursorPos(&coordenadas);

      
//Obtengo el hwnd de la ventana o componente sobre el que estoy situado
      
hWnd WindowFromPoint(coordenadas);
      while(
GetParent(hWnd)) hWnd GetParent(hWnd); // <<------------------

      //Obtengo las coordenadas relativas a la ventana
      
RECT rect;
      
GetWindowRect(hWnd, &rect);

      
coordenadasRelativas.coordenadas.rect.left;
      
coordenadasRelativas.coordenadas.rect.top;

      
LabelCoorRelX->Caption coordenadasRelativas.x;
      
LabelCoorRelY->Caption coordenadasRelativas.y;
   }
   
Timer->Enabled true;  

Saludos.
Responder Con Cita
  #3  
Antiguo 06-02-2021
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Wow lo pruebo el lunes y te digo que tal pero la verdad es que es algo tan sencillo que me jode bastante que no se me ocurrieron 😅
Responder Con Cita
  #4  
Antiguo 08-02-2021
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Fue perfecto, gracias.
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
Obtener las verdaderas coordenadas de una ventana en Windows 10 escafandra Trucos 9 28-04-2020 08:54:27
Obtener Coordenadas de un Form deliriun Varios 2 22-04-2015 04:04:57
Posición de una ventana adebonis Varios 1 25-05-2007 21:20:49
Obtener Coordenadas X, Y en un DBGRID al hacer click lechefrita Conexión con bases de datos 3 09-03-2007 13:42:15
Ventana de la aplicación en una sola posición dec Trucos 0 30-06-2006 14:09:42


La franja horaria es GMT +2. Ahora son las 21:55:07.


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