Programación en Lenguaje Ensamblador

-El Verdadero Lenguaje de las Máquinas-

¡Salta Por la Ventana (Parte 2)!

–Como Crear Una Ventana en Windows–

Continuamos donde nos quedamos en la creación básica de una ventana del Windows. Lo último que vimos fue la función RegisterClassEx de la API de Windows. Sin embargo, aún estamos un poco lejos de ver una ventana de verdad.

Usando como ejemplo la compra de un automovil, RegisterClassEx puede compararse con las especificaciones generales de cierto modelo de auto. Pero ya que queremos llevarnos uno de un color o equipamiento determinados es cuando hacemos el pedido. La función que nos da una instancia de la clase de ventana se llama CreateWindowEx

De acuerdo con la especificación de Windows, los argumentos de CreateWindowEx son los siguientes:

dwExStyleEstilo de ventana extendido. Este se inicializa con las famosas constantes de Windows

lpClassNameES la posición de memoria de una cadena ASCII-z. aquí es donde entra RegisterClass.

lpWindowName.-Posición de una cadena ASCII-Z del nombre de la ventana.

dwStyle.-Estilo de la ventana definido por constantes de windows. Por cierto, no todas las ventanas son ventanas.

x,yCoordenadas en las que la ventana puede aparecer. Existen constantes para que aparezcan en posiciones determinadas.

nWidth y nHeight.-Ancho y altura de la ventana.

hWndParent.-Indica quien es el padre de la ventana. En general, las ventanas mas complicadas son en realidad familias completas en las que la ventana mayor es el padre y las del centro son los hijos. Esto es llamado estructura jerarquizada por los
matados. Es una pena que los niños no incluyan una variable como esta que podamos leer.

hMenu.-Este es un identificador de menú, pero tambien indica que se trata de una ventana que es hija de alguien mas.

lpParam.-Este es un parámetro pasado por el mensaje WM_CREATE. Se usa cuando un programa crea ventanas de forma automática

De acuerdo, esto es lo básico y es mas o menos textualmente lo que dice en la ayuda de la API de Windows que por cierto está en el mismo sitio del FASM. Ahora veamos algunas cosas interesantes sobre las ventanas:

Una ventana sin padre(aunque en español bien podría ser una ventana sin madre) es una ventana que se apoya directamente sobre el escritorio.

Las ventanas mas complejas que puedan encontrar son familias de ventanas.

No solamente se pueden crear ventanas con CreateWindowEx. Sino que también botones, cajas de texto, scrollbars, radiobotones, controles CheckBox, etc. Estos son considerados como ventanas
hijas de aquella en donde se encuentran.

Por cierto, había olvidado mencionar que el valor devuelto en EAX por CreateWindowEx es ni mas ni menos que el handle de la ventana recién creada.

Una cosa mas, no hay que confundir el handle de instancia de aplicación con el handle de la ventana, pues una aplicación puede tener desde cero hasta 16,384 ventanas. Pero un único handle de aplicación.

Ya para terminar, quiero advertirles que las siguientes dos notas hablarán sobre las dos estructuras mas interesantes de una aplicación de Windows. El ciclo de mensajes y la función Callback. Que es lo que hace que una aplicación de Interfaz Gráfica de Windows sea realmente interactiva.

Anuncios

enero 23, 2009 - Posted by | Uncategorized

4 comentarios »

  1. Hola.. por fin me desido a comentar.. jeje y tengo un pregunta..
    Para crear una ventana, boton, scrollbar u algo asi. Si o si se necesitan utilizar las API de Windows, o puedo crear una mia? Saludos

    Comentario por Pavon | noviembre 27, 2010 | Responder

    • Con ensamblador puedes hacerlo de cualquiera de las dos formas, si quieres puedes usar la API de Windows y tan solo se trata de unas cuantas llamadas a la API, pero en caso de que quieras hacer tus propias ventanas tambien las puedes hacer. El problema es que cuando trabajas para Windows no tienes control completo sobre el hardware como cuando intentas hacer un sistema operativo propio. Aunque en caso de que quieras hacer tus propias ventanas por ejemplo para un juego puedes hacerlas desde cero usando ensamblador.

      Comentario por asm86 | noviembre 28, 2010 | Responder

      • ahh.. =) y.. con las apis Graficas como DirectX, openGl, debo usar estas para crear mis juegos en windows si o si? o tambien puedo crear mi propia api?

        Comentario por Pavon | noviembre 28, 2010

      • La respuesta es complicada. Windows trabaja en Modo Protegido. En este las aplicaciones no pueden tomar el control absoluto de la maquina por motivos de seguridad. En el caso de DirectX puedes obtener ciertos permisos del sistema operativo para controlar el hardware. Puedes llamar tanto a DirectX y OpenGL desde ensamblador. Hacer una API propia tambien es posible mientras conozcas y respetes las reglas de seguridad del sistema operativo Windows.

        Comentario por asm86 | noviembre 29, 2010


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: