elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
06 Septiembre 2008, 01:13  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderador: ®®)
| | |-+  Proyecto de GUI Class XG(eXtreme Graphics)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Proyecto de GUI Class XG(eXtreme Graphics)  (Leído 509 veces)
Karman

Desconectado Desconectado

Mensajes: 220



Ver Perfil WWW
Proyecto de GUI Class XG(eXtreme Graphics)
« en: 17 Mayo 2008, 04:41 »

Hace unos meses buscando un Framework que aprender, encontré una buena cantidad de estos, entre los cuales algunos eran libres (wxWidgets) y otros había que pagar (MFC), pero el principal problema (descartando las MFC pero que tienen el inconveniente que hay que pagar para usarlas) era lo poco eficientes que resultaban los programas compilados (pesados, lentos, etc), fue por esto que me decidí a empezar un proyecto de mini Framework orientado a obtener buenas gráficas sin ser demasiado pesados, el resultado de esto (y aunque está solo en etapa de pruebas y falta mucho, pero mucho todavía) fue un conjunto de clases que denominé eXtreme Graphics (que vendría a ser en lo que algún día quizás se convierta), pero, debido al poco tiempo disponible que tengo el proyecto ha estado parado durante meses y es por esto que decidí postearlo en este sitio así quizás haya otros a los que les interese la idea y puedan aportar su tiempo y conocimientos...

Los progresos hasta la fecha así como el código fuente puede verse en la siguiente dirección:

eXtreme Graphics Project

Los comentarios serán bienvenidos...

Saludos
_________________
www.inexinferis.co.nr

-. Karman .-
En línea

Karman

Desconectado Desconectado

Mensajes: 220



Ver Perfil WWW
Re: Proyecto de GUI Class XG(eXtreme Graphics)
« Respuesta #1 en: 17 Mayo 2008, 04:42 »

Hace unos meses buscando un Framework que aprender, encontré una buena cantidad de estos, entre los cuales algunos eran libres (wxWidgets) y otros había que pagar (MFC), pero el principal problema (descartando las MFC pero que tienen el inconveniente que hay que pagar para usarlas) era lo poco eficientes que resultaban los programas compilados (pesados, lentos, etc), fue por esto que me decidí a empezar un proyecto de mini Framework orientado a obtener buenas gráficas sin ser demasiado pesados, el resultado de esto (y aunque está solo en etapa de pruebas y falta mucho, pero mucho todavía) fue un conjunto de clases que denominé eXtreme Graphics (que vendría a ser en lo que algún día quizás se convierta), pero, debido al poco tiempo disponible que tengo el proyecto ha estado parado durante meses y es por esto que decidí postearlo en este sitio así quizás haya otros a los que les interese la idea y puedan aportar su tiempo y conocimientos...

Los progresos hasta la fecha así como el código fuente puede verse en la siguiente dirección:

eXtreme Graphics Project

Los comentarios serán bienvenidos...

Saludos
En línea

Karman

Desconectado Desconectado

Mensajes: 220



Ver Perfil WWW
Re: Proyecto de GUI Class XG(eXtreme Graphics)
« Respuesta #2 en: 17 Mayo 2008, 04:43 »

sory... lo edité y se duplico(???) ni idea porqué... je
En línea

Ferсhu

Desconectado Desconectado

Mensajes: 1.225

Menos palabras y Mas codigos.


Ver Perfil WWW
Re: Proyecto de GUI Class XG(eXtreme Graphics)
« Respuesta #3 en: 17 Mayo 2008, 05:11 »

Yo te ayudo, ando un poco ocupado pero voi a ver q puedo aportar, me gusta el proyecto.
En línea

Karman

Desconectado Desconectado

Mensajes: 220



Ver Perfil WWW
Re: Proyecto de GUI Class XG(eXtreme Graphics)
« Respuesta #4 en: 17 Mayo 2008, 05:38 »

descargate el proyecto... nosotros ya estuvimos hablando, la idea es simple, se tiene que saber c++ (herencia/sobrecarga/polimorfismo/encapsulamiento), todo se base en clases que se van heredando y van simplificando las cosas, la base es (por ahora) xgSystem que contiene los métodos fundamentales del sistema junto con xgApp que es la clase de las aplicaciones, la idea es la siguiente:

se define una clase programa como se detalla:

Código
class MyApp: public xgApp {
 public:
   MyApp(){
     MyWindow=xgNull;
   }
   xgBool OnInit();
   xgInt OnExit();
 private:
   MyWnd *MyWindow;
};
 
class ProyWnd: public xgFrame {
 public:
   ProyWnd(xgWindow *parent,const xgPChar& title);
   ~ProyWnd();  
 public:
   DECLARE_EVENT_TABLE()
};
 

en un fichero .h y:

Código
// Declaramos la Clase principal, es la primera en crearce y define
// la continuidad de la ejecución (es un objeto global)
IMPLEMENT_APP(MyApp)
//si retorna true continua, sino termina...
xgBool MyApp::OnInit(){
 //Creamos una Ventanta del tipo FRAME (ventana por defecto)
 MyWindow=new ProyWnd(xgNull,"hola");//,xgDefaultPos,xgDefaultSize,xgDEFAULT_WINDOW_STYLE,);
 //Si se creó correctamente el objeto...
 if(MyWindow){
   //si se creó correctamente la ventana...
   if(MyWindow->xgCreateSuccess()){
     //la mostramos...
     MyWindow->xgShow();
     return true;//empieza el programa...
   }else{
     delete MyWindow;
     return false;//finaliza el programa...
   }
 }
 return false;//finaliza el programa...
}
 
xgInt MyApp::OnExit(){//al finalizar el programa...
 //eliminamos el objeto ventana si fue creado correctamente...
 if(MyWindow)
   delete MyWindow;
 system("pause");
 return 0;
}
 
/*  Window Object  */
ProyWnd::ProyWnd(xgWindow *parent,const xgPChar& title):xgFrame(parent,title){
  //código del programa
}

Las clases definidas hasta ahora son:

D:\DevCpp\include\xg\xgCoolBar.h(122): class xgCoolBar: public xgWindow
D:\DevCpp\include\xg\xgcore.h(13): class xgApp {
D:\DevCpp\include\xg\xgdefs.h(248): class xgPoint
D:\DevCpp\include\xg\xgdefs.h(368): class xgRect
D:\DevCpp\include\xg\xgdefs.h(715): class xgRgn
D:\DevCpp\include\xg\xgDockMan.h(16): class xgDockManager
D:\DevCpp\include\xg\xgDockMan.h(18): class xgDockArea
D:\DevCpp\include\xg\xgDockMan.h(47): class xgDockManager
D:\DevCpp\include\xg\xgDockRow.h(15): class xgRow
D:\DevCpp\include\xg\xgDockWnd.h(66): class xgDockWnd:public xgWindow,public
D:\DevCpp\include\xg\xgEvent.h(249): class xgEventTable
D:\DevCpp\include\xg\xgFrame.h(19): class xgFrame:public xgWindow
D:\DevCpp\include\xg\xgGDI.h(28): class xgColor
D:\DevCpp\include\xg\xgGDI.h(117): class xgGDI
D:\DevCpp\include\xg\xgGDI.h(374): class xgBitmap
D:\DevCpp\include\xg\xgGDI.h(541): class xgBrush
D:\DevCpp\include\xg\xgGDI.h(619): class xgPen
D:\DevCpp\include\xg\xgHook.h(41): class xgHook
D:\DevCpp\include\xg\xgHookManager.h(24): class xgHookManager
D:\DevCpp\include\xg\xgIDLIST.h(22): class xgPIDL: public xgSystem
D:\DevCpp\include\xg\xgImageList.h(16): class xgImageList:public xgSystem
D:\DevCpp\include\xg\xgList.h(15): template <class T> class xgList;
D:\DevCpp\include\xg\xgListView.h(146): class xgListView: public xgWindow
D:\DevCpp\include\xg\xgMenu.h(73): class xgMenuMng:public xgSystem
D:\DevCpp\include\xg\xgMenu.h(265): class xgMenu:public xgMenuMng
D:\DevCpp\include\xg\xgMenuBar.h(19): class xgMenuBar:public xgToolBar
D:\DevCpp\include\xg\xgStatusBar.h(45): class xgStatusBar : public xgWindow
D:\DevCpp\include\xg\xgSystem.h(30): class xgSystem
D:\DevCpp\include\xg\xgTheme.h(69): class xgTheme
D:\DevCpp\include\xg\xgToolbar.h(107): class xgToolBarButton
D:\DevCpp\include\xg\xgToolbar.h(169): class xgToolBar: public xgWindow
D:\DevCpp\include\xg\xgTreeView.h(85): class xgTreeView: public xgWindow
D:\DevCpp\include\xg\xgWindow.h(39): class xgWindow:public xgSystem

y algunas otras más...

si alguien más está interesado mi email es inexinferis@hotmail.com, por ahí podemos coordinar...

S2
« Última modificación: 17 Mayo 2008, 06:05 por Karman » En línea

kernel19

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Proyecto de GUI Class XG(eXtreme Graphics)
« Respuesta #5 en: 17 Mayo 2008, 08:40 »

Interesantisimo Karman, la verdad no soy el putas para C++ pero conozco C y estudio C++ en estos momentos si de algo te puedo servir estaria muy interesado en enfocar lo que he aprendido en u proyecto. vos decis cuales son los pasos a seguir ................... ;D
En línea
Karman

Desconectado Desconectado

Mensajes: 220



Ver Perfil WWW
Re: Proyecto de GUI Class XG(eXtreme Graphics)
« Respuesta #6 en: 17 Mayo 2008, 16:14 »

actualmente estoy trabajando en las barra de herramientas, intentando llegar a que sean flotantes y todos esas cosas, lo que estaría bueno sería ir viendo otros controles como botones, labels, barra de progreso, etc... e ir armando las clases que los manejen, para hacerlo pueden basarse en alguna otra clase como xgStatusBar, ya que la base es la misma, todas son hijas de xgWindows (todas son ventanas) solamente que tienen características y un comportamiento especial...

S2
En línea

Karman

Desconectado Desconectado

Mensajes: 220



Ver Perfil WWW
Re: Proyecto de GUI Class XG(eXtreme Graphics)
« Respuesta #7 en: 17 Mayo 2008, 19:02 »

les facilito un poco más las cosas, por ejemplo detallo en forma sencilla como sería crear la clase de un control static (es bastante simple por eso lo hice rápido):

Código
/////////////////////////////////////////////////////////////////////////////
// Name:        xgStatic.h
// Purpose:     Definitions of xgStatic class
// Author:      Karman
// Modified by:
// Created:     2007-10-7
// Copyright:   (c) Exinferis Inc
/////////////////////////////////////////////////////////////////////////////
 
#ifndef _XG_STATIC_H_
#define _XG_STATIC_H_
 
#include "xgWindow.h"  
 
#define xgSTGetIcon()             xgSendMessage(STM_GETICON,(xgWParam)0,(xgLParam)0)
#define xgSTGetImage(dt)          xgSendMessage(STM_GETIMAGE,(xgWParam)dt,(xgLParam)0)
#define xgSTSetIcon(hI)           xgSendMessage(STM_SETICON,(xgWParam)hI,(xgLParam)0)
#define xgSTSetImage(dt,hI)       xgSendMessage(STM_SETIMAGE,(xgWParam)dt,(xgLParam)hI)
 
#define xgDefSTStyle WS_CHILD|WS_CLIPCHILDREN|WS_CLIPSIBLINGS|WS_VISIBLE
 
class xgStatic : public xgWindow{
 public:
   xgStatic():notet(xgNull){}
 
   xgStatic(xgWindow *parent,xgUInt CtrlId,long style=xgDefSTStyle)
   :xgWindow(parent,xgNull,STATIC,CtrlId,style,0,xgPoint(0,0),xgSize(0,0)){
     Init()
   }
 
   virtual ~xgStatic(){
     if(parent&&notet)
       parent->xgRemoveForcedEventProc(notet);
   }
 
   xgBool CreateStatic(xgWindow *parent,xgUInt CtrlId,long style=xgDefSTStyle){
     xgBool res=Create(parent,xgNull,STATIC,CtrlId,style,0,xgPoint(0,0),xgSize(0,0));
     if(res)Init();
     return res;
   }
 
 private:
 
   xgVoid Init(){
     xgSetClass(xgStaticClass);
     SetVirtualFunc();
   }
 
 public:    
   //default notice events...
   virtual xgVoid OnSTClicked(xgWindow *xgParent){};
   virtual xgVoid OnSTDBlClk(xgWindow *xgParent){};
   virtual xgVoid OnSTDisable(xgWindow *xgParent){};
   virtual xgVoid OnSTEnable(xgWindow *xgParent){};
   virtual xgVoid OnSTCtlColorStatic(xgWindow *pPClass){};
   //default notify handler...
   xgInt xgOnStaticNotify(xgWindow *pPClass,xgWParam wParam,xgLParam lParam);
 private:
   xgVoid SetVirtualFunc(){
     if(parent){
       notet=parent->xgSetForcedEventProc(WM_NOTIFY,wCtrlId,xgStatic::xgOnStaticNotify);
     }
   }
   xgEventTable *notet;
};
 
#endif // _XG_STATIC_H_
 

Código
/////////////////////////////////////////////////////////////////////////////
// Name:        xgStatic.cpp
// Purpose:     xgStatic Implementation
// Author:      Karman
// Modified by:
// Created:     2007-10-7
// Copyright:   (c) Exinferis Inc
/////////////////////////////////////////////////////////////////////////////
 
#include "xgStatic.h"
 
xgInt xgStaticBar::xgOnStaticNotify(xgWindow *pPClass,xgWParam wParam,xgLParam lParam){
 xgInt bRet = 0;
 switch(((NMHDR*)lParam)->code){
   case STN_CLICKED:this->OnSTClicked(pPClass);break;
   case STN_DBLCLK:this->OnSTDBlClk(pPClass);break;
   case STN_DISABLE:this->OnSTDisable(pPClass);break;
   case STN_ENABLE:this->OnSTEnable(pPClass);break;
   case WM_CTLCOLORSTATIC:this->OnSTCtlColorStatic(pPClass);break;
   default:break;
 }
 return bRet;
}
 

en esta función:

Código
xgVoid SetVirtualFunc(){
     if(parent){
       notet=parent->xgSetForcedEventProc(WM_NOTIFY,wCtrlId,xgStatic::xgOnStaticNotify);
     }
   }
 

definimos un gestor de notificaciones que es automáticamente llamado por el gestor de mensajes del framework, de esta forma para procesar un mensaje llegado al control lo único que hay que hacer es redefinir la clase:

Código
class  MyStatic: public xgStatic;
 

y redefinir los métodos de aquellos eventos que nos interesen:

Código
class  MyStatic: public xgStatic{
  public:
      xgVoid OnSTClicked(xgWindow *xgParent);
}
 
xgVoid MyStatic::OnSTClicked(xgWindow *xgParent){
  //hacemos algo cuando el usuario hace clic...
  // por ejemplo:
  xgParent->xgHide();//ocultamos la ventana padre...
}
 

S2
En línea

Karman

Desconectado Desconectado

Mensajes: 220



Ver Perfil WWW
Re: Proyecto de GUI Class XG(eXtreme Graphics)
« Respuesta #8 en: 19 Mayo 2008, 04:34 »

a los que vieron el fuente... entendieron algo? digan che... así les explico!

S2
En línea

Karman

Desconectado Desconectado

Mensajes: 220



Ver Perfil WWW
Re: Proyecto de GUI Class XG(eXtreme Graphics)
« Respuesta #9 en: 22 Mayo 2008, 05:14 »

se me hace o les pareció muy complicado...  :rolleyes: ... no hay nadie que maneje orientación a objetos o que quiera aprender...   :-\

S2
En línea

Eternal Idol N&P

Desconectado Desconectado

Mensajes: 1.279


Assembly (x86/x64), C/C++, Kernel Mode (WDM/WDF)


Ver Perfil WWW
Re: Proyecto de GUI Class XG(eXtreme Graphics)
« Respuesta #10 en: 22 Mayo 2008, 09:30 »

Tal vez prefieren hacer su propia libreria o no les parece tan interesante como a vos, vaya uno a saber, igual no justifica revivir el hilo 2 veces ....
En línea

be closely tied to
(v.) = estar estrechamente ligado a
Ex: He had been wrapped up in a new project that was closely tied to the company's new growth.

"La economia nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de este"
Juan Domingo Peron
Karman

Desconectado Desconectado

Mensajes: 220



Ver Perfil WWW
Re: Proyecto de GUI Class XG(eXtreme Graphics)
« Respuesta #11 en: 22 Mayo 2008, 13:13 »

es que en realidad unos cuantos me dijeron que estaban interesados pero se terminaron borrando... fue por eso en realidad...

S2
En línea

Eternal Idol N&P

Desconectado Desconectado

Mensajes: 1.279


Assembly (x86/x64), C/C++, Kernel Mode (WDM/WDF)


Ver Perfil WWW
Re: Proyecto de GUI Class XG(eXtreme Graphics)
« Respuesta #12 en: 22 Mayo 2008, 13:18 »

es que en realidad unos cuantos me dijeron que estaban interesados pero se terminaron borrando... fue por eso en realidad...

Suele pasar, cuando lees la idea suena genial pero cuando ves todo lo que hay que hacer ya no tanto  :laugh:
En línea

be closely tied to
(v.) = estar estrechamente ligado a
Ex: He had been wrapped up in a new project that was closely tied to the company's new growth.

"La economia nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de este"
Juan Domingo Peron
Karman

Desconectado Desconectado

Mensajes: 220



Ver Perfil WWW
Re: Proyecto de GUI Class XG(eXtreme Graphics)
« Respuesta #13 en: 22 Mayo 2008, 13:43 »

y bue... tonces se puede cerrar nomás el post... quedarán los que me han agregado... je...

S2
En línea

Páginas: [1] Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC