[C con Clase] Duda WinAPI

luis alfonso jimenez mejia viejolajimenez en gmail.com
Mar Nov 23 17:44:55 CET 2010


le  recomiendo  esta informacion de  seguro  encontrara algo  que le sirva
http://winapi.conclase.net/curso/index.php

El 22 de noviembre de 2010 17:02, Salvador Pozo <salvador en conclase.net>escribió:

> El pasado 2010-11-22 16:38:54, Raúl escribió:
>
> R> Buenas!
> R>        Soy nuevo por aquí y no se exactamente como funciona esto. Espero
> que
> R> sea así y podáis resolverme una duda que tengo. Gracias por adelantado.
> R> Mi problema es que quiero mover una ventana ya existente, y parece facil
> con
> R> MoveWindow. Mi pregunta es, como sé la entrada hwnd? Porque quiero mover
> la
> R> ventana en la que esté el ratón en ese momento, no una que ya he creado
> de
> R> la cual sé todo. No se si me explico bien, q ando un poco liado.
>
> ¡Uf!
> Así como lo explicas no parece fácil, voy a intentar delimitar un poco el
> problema.
>
> ¿Tiene que ser la ventana sobre la que está el ratón, o la ventana activa
> (la que tiene el foco)?
>
> Saber si el ratón está sobre una ventana específica es sencillo, pero hay
> que tener en cuenta que las ventanas se superponen, y que el ratón puede
> estar sobre muchas ventanas a la vez.
>
> Te copio un pequeño programa que averigua sobre qué ventana están unas
> coordenadas concretas (en este caso 300,300).
>
> ----8<------
> // Enlazar con la librería "gdi32"
> #include <windows.h>
> #include <wingdi.h>
> #include <iostream>
>
> using namespace std;
>
> int main()
> {
>    HWND hwnd;
>    char cad[256];
>    RECT re;
>    POINT p = {300, 300};
>    bool encontrada=false;
>
>    hwnd = GetTopWindow(0);
>
>    do {
>        if(ERROR != GetWindowRect(hwnd, &re)) {
>            if(PtInRect(&re, p) && IsWindowVisible(hwnd)) {
>                GetWindowText(hwnd, cad, 256);
>                if(strlen(cad)) cout << "(" << re.left << "," << re.top <<
> "," << re.right << "," << re.bottom << ") " << cad << endl;
>                encontrada = true;
>            }
>        }
>    } while(!encontrada && (hwnd = GetNextWindow(hwnd, GW_HWNDNEXT)));
>    return 0;
> }
> ----8<------
>
> Con algunas modificaciones (que las coordenadas las proporcione un evento
> del ratón), puedes adaptarlo a tus necesidades.
>
> Básicamente lo que hace el programa es obtener el manipulador de la ventana
> "Top", es decir, la que esté más encima, verifica si las coordenadas están
> en el rectángulo de la ventana y si la ventana es visible.
>
> Si es así, hemos encontrado la ventana que buscábamos.
>
> Si no es así, buscamos la siguiente ventana según el orden Z. Windows
> mantiene una lista de ventanas, o más bien un árbol. En este caso sólo nos
> interesan las TOP windows, es decir, las que corresponden con aplicaciones o
> programas ejecutables. Hay otros órdenes, por ejemplo, las ventanas hijas de
> cada una de ellas.
>
> Espero que te sirva.
>
> Hasta pronto.
>
> --
> Salvador Pozo (Administrador)
> mailto:salvador en conclase.net
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20101123/41c657cb/attachment.html>


Más información sobre la lista de distribución Cconclase