Re-Post- El otro no abre! :S - Unir Interfaz con Codigo

Iniciado por >Tyrael<, 26 Junio 2011, 19:26 PM

0 Miembros y 1 Visitante están viendo este tema.

>Tyrael<

TENGO ESTE CODIGO HECHO EN DEV C++ MI IDEA ES UNIRLO A LA INTERFAZ QUE ESTA MAS ABAJO... PUEDEN MODIFICARLA TODO LO QUE QUIERAN, LO QUE QUIERO REALIZAR ES UN CONVERTIDOR DE DEC A BINARIO Y A HEXADECIMAL CON SUS POSIBLES COMBINACION... EL CODIGO AUN NO ESTA TERMINADO PERO DE MOMENTO ASI COMO ESTA ME GUSTARIA PONERLE INTERFAZ DE MODO Q ME SIRVA PARA IR APRENDIENDO.. CREO Q HA MUCHO EN LA COMUNIDAD LES SERVIRIA DE EJEMPLO PS ES UN CODIGO SENCILLO Y UN PROGRAMA NADA COMPLICADO, PERO QUE A NIVEL DE INTERFAZ ESCAPA DE MIS CONOCIMIENTOS.. ESPERO PUEDAN AYUDARME


#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

void menu();
void trans(int);

main()
{
   menu();
}

void menu()
{
   int tipo=0, opc;
   do
   {
      cout<<endl;
     cout<<" [1] Decimal-Binario"<<endl;
     cout<<" [2] Decimal-Hexadecimal"<<endl;
      cout<<" [3] Salir"<<endl;
      cin>>opc;
   }while((opc<1)||(opc>3));
   switch(opc)
   {
      case 1:
        system("cls");
        tipo=2;
         trans(tipo);
         system("cls");
         menu();
         break;
      case 2:
        system("cls");
         tipo=16;
         trans(tipo);
         system("cls");
         menu();
         break;
   }
}

void trans(int tipo)
{
     int num, resto[100], vector[100], cociente[100], i=0, j=0, ndiv=0, cont;
   char resp;

   do
   {
         cout<<" Numero: "; cin>>num;
         do
         {
               resto=(num%tipo);
               ndiv++;
                 cociente=(num/tipo);
               num=cociente;
              i++;
         }while(cociente[i-1]!=0);
         cout<<" El numero nuevo seria: ";
         j=(ndiv-1);
         for (int z=0; z<ndiv; z++)
         {     
               cont=0;
               do
               {
                    vector[z]=resto[j];
                    j--;
                    cont=1;
               }while(cont!=1);
         }
         for (int x=0; x<ndiv; x++)
         {
             if(tipo==16)
             {
                    if((vector
  • >-1)&&(vector
  • <10))
                        {
                              cout<<vector
  • ;
                        }
                       if(vector
  • ==10)
                        {
                             cout<<"A";
                        }
                        if(vector
  • ==11)
                        {
                             cout<<"B";
                        }
                       if(vector
  • ==12)
                        {
                              cout<<"C";
                        }
                       if(vector
  • ==13)
                        {
                              cout<<"D";
                        }
                       if(vector
  • ==14)
                        {
                            cout<<"E";
                        }
                       if(vector
  • ==15)
                        {
                            cout<<"F";
                        }
                 }
                 else
                 {
                      cout<<vector
  • ;
                 }
             }
             cout<<endl;
             cout<<" Desea repetir [S/N]: ";
             cin>>resp;
             if ((resp=='s')||(resp=='S'))
             {
                  ndiv=0;
                i=0;
                j=0;
                for(int c=0; c<20; c++)
                {
                      vector[c]=0;
                   resto[c]=0;
                     cociente[c]=0;
                }
             }
        }while((resp=='s')||(resp=='S'));
    }

    ACA ESTA EL CODIGO DE LA INTERFAZ TAMBIEN HECHO EN DEV C++

    #include <windows.h>
    #include "IDS.h"
    #define ID_ActionButton 101


    LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

    typedef struct stDatos {
       int Texto[80];
    } DATOS;

    int WINAPI WinMain (HINSTANCE hThisInstance,
                        HINSTANCE hPrevInstance,
                        LPSTR lpszArgument,
                        int nFunsterStil)
    {
        HWND hwnd;               
        MSG mensaje;             
        WNDCLASSEX wincl;       
       
        wincl.hInstance = hThisInstance;
        wincl.lpszClassName = "Ventana";
        wincl.lpfnWndProc = WindowProcedure;     
        wincl.style = CS_DBLCLKS;               
        wincl.cbSize = sizeof (WNDCLASSEX);

        wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
        wincl.lpszMenuName = "Menu";
        wincl.cbClsExtra = 0;                     
        wincl.cbWndExtra = 0;                     

        wincl.hbrBackground = GetSysColorBrush(COLOR_BACKGROUND);

        if(!RegisterClassEx(&wincl)) return 0;

        hwnd = CreateWindowEx(
               0,                   /* Posibilidades de variación */
               "Ventana",     /* Nombre de la clase */
               "Programa Beta",       /* Texto del título */
               WS_OVERLAPPEDWINDOW, /* Tipo por defecto */
               CW_USEDEFAULT,       /* Windows decide la posición */
               CW_USEDEFAULT,       /* donde se coloca la ventana */
               544,                 /* Ancho */
               275,                 /* Alto en pixels */
               HWND_DESKTOP,        /* La ventana es hija del escritorio */
               NULL,                /* Sin menú */
               hThisInstance,       /* Manipulador de instancia */
               NULL                 /* No hay datos de creación de ventana */
        );

        /* Mostrar la ventana */
        ShowWindow(hwnd, SW_SHOWDEFAULT);

        /* Bucle de mensajes, se ejecuta hasta que haya error o GetMessage devuelva FALSE */
        while(TRUE == GetMessage(&mensaje, NULL, 0, 0))
        {
            /* Traducir mensajes de teclas virtuales a mensajes de caracteres */
            TranslateMessage(&mensaje);
            /* Enviar mensaje al procedimiento de ventana */
            DispatchMessage(&mensaje);
        }

        /* Salir con valor de retorno */
        return mensaje.wParam;
    }

    /*  Esta función es invocada por la función DispatchMessage()  */
    LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
        static HINSTANCE hInstance;
        static HWND hwndButton = 0;
       
        /* Variables para diálogo */
        static DATOS Datos;
        static HFONT hfont;

        HWND hctrl;

        switch (msg)                  /* manipulador del mensaje */
        {
            case WM_CREATE:
               hwndButton = CreateWindow ("button","Decimal",
               WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,50,40, 61, 20,
               hwnd,(HMENU)ID_ActionButton,((LPCREATESTRUCT) lParam)->hInstance,NULL);
               
               hwndButton = CreateWindow ("button","Binario",
               WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,150,40, 61, 20,
               hwnd,(HMENU)ID_ActionButton,((LPCREATESTRUCT) lParam)->hInstance,NULL);
               
               hwndButton = CreateWindow ("button","Hexadecimal",
               WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,250,40, 90, 20,
               hwnd,(HMENU)ID_ActionButton,((LPCREATESTRUCT) lParam)->hInstance,NULL);
               
               hInstance = ((LPCREATESTRUCT)lParam)->hInstance;
               /* Insertar control Edit */
               hctrl = CreateWindowEx(
                  0,
                  "EDIT",          /* Nombre de la clase */
                  "",              /* Texto del título, no tiene */
                  ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, /* Estilo */
                  80, 100,          /* Posición */
                  100, 20,         /* Tamaño */
                  hwnd,            /* Ventana padre */
                  (HMENU)ID_TEXTO, /* Identificador del control */
                  hInstance,       /* Instancia */
                  NULL);           /* Sin datos de creación de ventana */
               /* Inicialización de los datos de la aplicación */
               SendMessage(hctrl, EM_SETLIMITTEXT, 10, 0L);
               SendMessage(hctrl, WM_SETTEXT, 0, (LPARAM)Datos.Texto);
               hfont = (HFONT)GetStockObject( DEFAULT_GUI_FONT );
               SendMessage(hctrl, WM_SETFONT, (WPARAM)hfont, MAKELPARAM(TRUE, 0));
               SetFocus(hctrl);           
               return 0;
            case WM_COMMAND:
               switch(LOWORD(wParam)) {
                  case ID_ActionButton:
                        //Datos.Texto=Datos.Texto+100;
                        SendMessage(hctrl, WM_SETTEXT, 0, (LPARAM)Datos.Texto);       
                   break;
                  case CM_SALIR:
                    DestroyWindow(hwnd);
                  break;
               }
               break;           
            case WM_DESTROY:
               DeleteObject(hfont);
               PostQuitMessage(0);    /* envía un mensaje WM_QUIT a la cola de mensajes */
               break;
            default:                  /* para los mensajes de los que no nos ocupamos */
               return DefWindowProc(hwnd, msg, wParam, lParam);
        }
        return 0;
    }


    ACA EL CODIGO DEL FICHERO IDS.H

    /* Identificadores */

    /* Identificadores de comandos */
    #define CM_DIALOGO 101
    #define CM_SALIR   103

    /* Identificadores de diálogo */
    #define ID_TEXTO 100
    #define ID_ACTIVAR 101

    Y ACA EL CODIGO DEL FICHERO DE RECURSOS

    #include <windows.h>
    #include "IDS.H"

    Menu MENU
    BEGIN
    POPUP "&Principal"
    BEGIN
      MENUITEM "&Salir", CM_SALIR
    END
    END

    -----------------------------------------------------------------------------------------------

    NO SE COMO HACER PARA UNIR AMBOS PROGRAMAS... MI IDEA ES QUE CADA BOTON "DECIMAL, BINARIO Y HEXA" TENGAN UN CUADRO DE DIALOGO DONDE ESCRIBIR EL VALOR CORRESPONDIENTE (VALIDADO) Y QUE CUANDO PULSEN SOBRE EL BOTON EN CUESTION SALGA LA CONVERION EN LOS OTROS CUADROS DE DIALOGO.. ADEMAS DE UN BOTON "CLEAR" QUE BORRE TODOS LOS CAMPOS! ESPERO Q PUEDAN AYUDARME  :-\

>Tyrael<


leogtz

No dan ganas de leer el código si no usas el GeShi, así que primero lee las reglas y luego coloca tu código con el GeShi, que por algo está.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com