BandaAncha

  • 🔍 en 📰 artículos ⏎
  • 🔍 en 💬 foros ⏎
  • 🔍 en 👇 este 💬 foro ⏎
  • 🔍 en 👇 este 💬 tema ⏎
Regístrate Regístrate Identifícate Identifícate

Trucos de programación de BASpeed (C y Delphi)

djnacho
2

Hola a tod@s :)

Como BASpeed ha llegado a una fase muy estable (la mayoría de errores que me mandan, suelen ser o bien, fallos del propio Windows Vista, por culpa del UAC, o bien, fallos involuntarios del usuario al haber borrado algún archivo esencial del programa), voy a explicar algunos trucos de programación, que he usado en BASpeed, y que quizá, a algunos programadores que ya se han iniciado en C o en Delphi, pueden usar en sus programas.

En este caso, y para comenzar por algún sitio, os voy a explicar como se realiza la animación de aparición / desaparición de la ventana principal de BASpeed.
Para poder usar este efecto, vamos a usar una única función del API de Windows, que justamente realiza esa función de animar una ventana. Esta función del API de Windows es AnimateWindow

Como podeis ver, esta función tiene tres parámetros de entrada: hwnd, que es el handle (el identificador) de la ventana que se va a animar, dwTime, que es el tiempo en milisegundos que va a durar la animación, y dwFlags que le indica a la función, el tipo de animación a usar en la ventana.

Supongamos que queremos ocultar la ventana principal de la aplicación, con una duración de 500 ms. En delphi, esto es muy sencillo. La ventana principal de la aplicación, siempre se denomina Form1. Y para poder ocultarla, simplemente debemos escribir lo siguiente:

 AnimateWindow(Form1.Handle, 500, AW_HIDE);

En C, es igual de sencillo. Hay que incluir la libreria windows.h, para poder crear la ventana y mostrarla. Teniendo en cuenta que la función CreateWindow, nos devuelve el handle (identificador) de la ventana creada, y suponiendo que hemos almacenado ese valor en una variable denominada HandleVentana, de tipo HWND, entonces se puede llamar a la función de la misma forma que en delphi:

 AnimateWindow(HandleVentana, 500, AW_HIDE);

No existe un valor que nos permita realizar la animación en sentido inverso, es decir, que de estar oculta pase a estar visible, realizando una animación. En este caso, hay que usar las funciones estándar de Delphi, o bien visualizar directamente la ventana de nuevo, en C. Para delphi, se puede hacer así:

 Form1.Show;

Y para C, se tiene que usar la función estándar de ShowWindow de la forma siguiente:

 ShowWindow(HandleVentana, SW_SHOW);

Espero que esto sirva de inspiración para vuestros programas, y cuando tenga algo más de tiempo, poder explicar más truquillos, que se han usado en BASpeed, y que seguro que a más de un programador, le resultarán de utilidad.

Un saludo a tod@s :)

gaku-dadodebaja

Gracias Nacho, muy interesante. Yo también estoy haciendo una aplicación (en VB NET) bastante interesante para medir la potencia de transferencia Wireless, Josh sabe algo sobre el tema.

A ver cuando puedo adelantar algo ;)

Salu2 crack!!

🗨️ 4
djnacho
1

No hay de que ;) Para eso estamos :)
Ya nos contarás, a ver que tal va el tema ;) (muy interesante tu aplicación, estaré encantado de probarla cuando la lances en beta :) :) )

Un saludo :)

🗨️ 3
gaku-dadodebaja

Así será! Gracias de nuevo Nacho ;)

Saludos maestro :)

🗨️ 2
manrovi
1

¿Has metido el banner de bitarea dentro de tu mensaje o es un bug?

🗨️ 1
LineBenchmark

Muy pronto, otra cosita más. ;)

LineBenchmark

Mira la bandeja de entrada...

🗨️ 1
djnacho

Mirada, leída, probado y.... fenómenooooooo :) :)
Mira tu bandeja de entrada. En cuanto pueda lo incluyo, compi :)

Un saludo :)