Crear una ventana en OSX!!!
Hola a tod@s
Desde aqui voy a intentar aprender y a la vez, enseñar como programar una intro en macosx.
El tema parece un tanto escabroso ya que, por lo que he visto en pouet.net no hay intros para macosx!!!! Solo ports de otras plataformas y que ocupan muchisimo.
Pero bueno, no me lio mas y voy a por ello:
COMO CREAR UNA VENTANA DESDE 0 (Y no morir en el intento)
La documentacion de apple esta muy bien para alguien que ya se conozca como va todo. Pero lo que es empezar desde 0 pues... es poco mas que complicado.
Todo el codigo y el proyecto estan AQUI
Paso a explicar el code por encima:
#include
Sin esto no ira nada ;) tambien tiene que estar en el proyecto los frameworks de Carbon y de libstdc++.
int main (int argc, char * const argv[]) {
Rect contentRect;
OSStatus osError;
WindowRef ventana;
Comienza el follon.
Un Rect no es mas que un rectangulo, una especie de estructura con el tamaño y las coordenadas de donde lo queremos.
OSStatus es simplemente para almacenar los errores que devuelven las funciones... aun no he probado hacerlo con un entero, pero asi ya va :D
WindowRef definira TODOS los parametros de la ventana que vamos a crear, tamaño, event handlers, iconos de reescalado, and so on...
SetRect(&contentRect,100,100,470,340);
SetRect es la funcion con la que podemos asignar unas coordenadas a una estructura Rect. Asi que le pasaremos primero el Rect que vamos a modificar, y despues las coordenadas horizontal de la esquina superior-izquierda, la vertical de la superior-izquierda, horizontal de la inferior-derecha y la vertical de la inferior-derecha.
osError = CreateNewWindow(kDocumentWindowClass, kWindowStandardDocumentAttributes |
kWindowStandardHandlerAttribute,
&contentRect,
&ventana);
Con CreateNewWindow crearemos la ventanita que queremos... pero aun no se vera ;)
Lo primero que se le pasa es el tipo de ventana que queremos. En MacOSX hay unas 15 distintas.
Lo siguiente seran las caracteristicas que queremos para esa ventana. Le paso
kWindowStandardDocumentAttributes | kWindowStandardHandlerAttribute
esto suma los dos atributos en uno. Crearemos una ventana totalmente standard y con un handler standard (Esto ultimo es importante)
Como siguiente parametro, le pasamos el Rect que habiamos definido anteriormente.
Y por ultimo le pasaremos el handler que manejara la ventana, osea el WindowRef
SetPortWindowPort(ventana);
ShowWindow( ventana );
Pasamos el puerto actual de graficos al de la ventana (que aun no se ve...) con el SetPortWindowPort. Y finalmente hago el ShowWindow para que se vea la dichosa ventanita.
RunApplicationEventLoop();
return 0;
}
Finalmente ejecutamos el ApplicationEventLoop, que es lo que respondera a los eventos tipo minimizar, maximizar, arrastrar la ventana o cerrarla.
Yasta! eso es todo :) Si hay alguna duda, dejadla aqui :)
http://www.mataderu.com/madgoblin
Desde aqui voy a intentar aprender y a la vez, enseñar como programar una intro en macosx.
El tema parece un tanto escabroso ya que, por lo que he visto en pouet.net no hay intros para macosx!!!! Solo ports de otras plataformas y que ocupan muchisimo.
Pero bueno, no me lio mas y voy a por ello:
COMO CREAR UNA VENTANA DESDE 0 (Y no morir en el intento)
La documentacion de apple esta muy bien para alguien que ya se conozca como va todo. Pero lo que es empezar desde 0 pues... es poco mas que complicado.
Todo el codigo y el proyecto estan AQUI
Paso a explicar el code por encima:
#include
Sin esto no ira nada ;) tambien tiene que estar en el proyecto los frameworks de Carbon y de libstdc++.
int main (int argc, char * const argv[]) {
Rect contentRect;
OSStatus osError;
WindowRef ventana;
Comienza el follon.
Un Rect no es mas que un rectangulo, una especie de estructura con el tamaño y las coordenadas de donde lo queremos.
OSStatus es simplemente para almacenar los errores que devuelven las funciones... aun no he probado hacerlo con un entero, pero asi ya va :D
WindowRef definira TODOS los parametros de la ventana que vamos a crear, tamaño, event handlers, iconos de reescalado, and so on...
SetRect(&contentRect,100,100,470,340);
SetRect es la funcion con la que podemos asignar unas coordenadas a una estructura Rect. Asi que le pasaremos primero el Rect que vamos a modificar, y despues las coordenadas horizontal de la esquina superior-izquierda, la vertical de la superior-izquierda, horizontal de la inferior-derecha y la vertical de la inferior-derecha.
osError = CreateNewWindow(kDocumentWindowClass, kWindowStandardDocumentAttributes |
kWindowStandardHandlerAttribute,
&contentRect,
&ventana);
Con CreateNewWindow crearemos la ventanita que queremos... pero aun no se vera ;)
Lo primero que se le pasa es el tipo de ventana que queremos. En MacOSX hay unas 15 distintas.
Lo siguiente seran las caracteristicas que queremos para esa ventana. Le paso
kWindowStandardDocumentAttributes | kWindowStandardHandlerAttribute
esto suma los dos atributos en uno. Crearemos una ventana totalmente standard y con un handler standard (Esto ultimo es importante)
Como siguiente parametro, le pasamos el Rect que habiamos definido anteriormente.
Y por ultimo le pasaremos el handler que manejara la ventana, osea el WindowRef
SetPortWindowPort(ventana);
ShowWindow( ventana );
Pasamos el puerto actual de graficos al de la ventana (que aun no se ve...) con el SetPortWindowPort. Y finalmente hago el ShowWindow para que se vea la dichosa ventanita.
RunApplicationEventLoop();
return 0;
}
Finalmente ejecutamos el ApplicationEventLoop, que es lo que respondera a los eventos tipo minimizar, maximizar, arrastrar la ventana o cerrarla.
Yasta! eso es todo :) Si hay alguna duda, dejadla aqui :)
http://www.mataderu.com/madgoblin

0 Comments:
Publica un comentari
<< Home