Bienvenido: ( Identificarse | Registrarse )      
Foros de Trucos Windows
 
Closed TopicStart new topicStart Poll

Outline · [ Estándar ] · Lineal+

> Cómo hacer una ventana d inserción datos en C??, Una especie de scanf pero en ventana

bisbal_83
post Aug 14 2006, 08:22 AM
Publicado: #1


Newbie
*

Grupo: Members
Mensajes: 8
Registrado: 12-August 06
Miembro nº: 177.419



Muy buenas pensadores!

Ahí os va un nuevo reto! Desarrollo un programa en C que sirve como módulo de aplicación en Feflow 5.1 (programa de simulación de flujo).

El tema es que dicho programa, Feflow, no admite inserción de datos así que tngo k programar mediante interfaz gráfico con C una ventanita que se abra, me pida un valor, lo introduzca y ya está. Es algo simple, pero es que nunca he trabajado con librerías gráficas.

Si alguien me ayudara le estaría muy agradecido. Es para el proyecto fin de carrera..y toy medio acabando así k ...si me ayudáis... yaahooo.gif estaría genialllll

Venga amigos!!!

Saludos!!


User is offlineProfile CardPM
Go to the top of the page
+Quote Post
rob1104
post Aug 15 2006, 06:51 PM
Publicado: #2


Xbox Live... The best thing ever happened around videogames
Group Icon

Grupo: Moderadores
Mensajes: 1.624
Registrado: 7-March 05
Desde: Matamoros, Tamaulipas, Mexico
Miembro nº: 93.342



Hola bisbal, te refieres a crear una aplicacion en C con la api win32 (en modo ventana) y agregar un textbox para que puedas escribir una informacion y esta la pase al programa Feflow 5.1 ??
Bueno lo de crear la ventana con el textbox es facil, lo demas no lo entiendo muy bien, pero debido a que es un trabajo de clase para tu carrera te pregunto: que llevas hecho tu??

Saludos bye1.gif


User is offlineProfile CardPM
Go to the top of the page
+Quote Post
bisbal_83
post Aug 15 2006, 08:20 PM
Publicado: #3


Newbie
*

Grupo: Members
Mensajes: 8
Registrado: 12-August 06
Miembro nº: 177.419



QUOTE(robbie110487 @ Aug 15 2006, 06:51 PM)
Hola bisbal, te refieres a crear una aplicacion en C con la api win32 (en modo ventana) y agregar un textbox para que puedas escribir una informacion y esta la pase al programa Feflow 5.1 ??
Bueno lo de crear la ventana con el textbox es facil, lo demas no lo entiendo muy bien, pero debido a que es un trabajo de clase para tu carrera te pregunto: que llevas hecho tu??

Saludos  bye1.gif
*


Buenas...

Digamo que es mi proyecto fin de carrera, estoy aquí en Alemania en el fraunhofer institut desarrollándolo.

Me encargo de automatizar la recogida de datos, de parámetros de la tierra, es decir, he hecho un programa que cuando en Feflow simulamos, nos pide introducir los nuevos valores de los parámetros (conductividad, densidad, storatividad...etc).

He hecho la parte en la que leo archivos y actualizo parámetros enteros. Sólo me queda una pequeña y sencilla parte que es, actualizar el valor de un nodo en concreto.

TODA ESTA CHAPA PARA DECIRTE QUE...jeje, sí, lo que necesito es una ventana que se abra, me pida meter un valor, lo meta, y ya pueda trabajar con él desde el programa. Es decir, es un scanf sin más, pero claro, tengo k programar la venta ya que en Feflow no tengo consola de ejecución tipo C.

Si puedas explicármelo, hazlo como a los tontos por favor...que nunca he y trabajao con interfaz gráfico y C. jeje.

Muchas gracias Robbie.

wink.gif



User is offlineProfile CardPM
Go to the top of the page
+Quote Post
rob1104
post Aug 16 2006, 07:55 AM
Publicado: #4


Xbox Live... The best thing ever happened around videogames
Group Icon

Grupo: Moderadores
Mensajes: 1.624
Registrado: 7-March 05
Desde: Matamoros, Tamaulipas, Mexico
Miembro nº: 93.342



Ok mira encontre esto, es algo simple -pero tiene su chiste, recomiendo que uses un buen ide como dev c++
Primero creas este archivo de recursos

Programa.rc
CODE
#include <windows.h>
/* Identificadores */

/* Identificadores de comandos */
#define CM_DIALOGO 101

/* Identificadores de diálogo */
#define ID_TEXTO 100
Menu MENU
BEGIN
POPUP "&Principal"
BEGIN
 MENUITEM "&Diálogo", CM_DIALOGO
END
END
DialogoPrueba DIALOG 0, 0, 118, 48
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION
CAPTION "Diálogo de prueba"
FONT 8, "Helv"
BEGIN
CONTROL "Texto:", -1, "STATIC",
   SS_LEFT | WS_CHILD | WS_VISIBLE,
   8, 9, 28, 8
CONTROL "", ID_TEXTO, "EDIT",
   ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP,
   36, 9, 76, 12
CONTROL "Aceptar", IDOK, "BUTTON",
   BS_DEFPUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP,
   8, 26, 45, 14
CONTROL "Cancelar", IDCANCEL, "BUTTON",
   BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP,
   61, 26, 45, 14
END


despues creas un archivo .c utilizando la api win32

Programa.c
CODE
#include <windows.h>
/* Identificadores */

/* Identificadores de comandos */
#define CM_DIALOGO 101

/* Identificadores de diálogo */
#define ID_TEXTO 100
/*  Declaración del procedimiento de ventana  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM);

/* Declaraciones de tipos */
typedef struct stDatos {
  char Texto[80];
} DATOS;

int WINAPI WinMain (HINSTANCE hThisInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpszArgument,
                   int nFunsterStil)
{
   HWND hwnd;               /* Manipulador de ventana */
   MSG mensaje;             /* Mensajes recibidos por la aplicación */
   WNDCLASSEX wincl;        /* Estructura de datos para la clase de ventana */

   /* Estructura de la ventana */
   wincl.hInstance = hThisInstance;
   wincl.lpszClassName = "NUESTRA_CLASE";
   wincl.lpfnWndProc = WindowProcedure;      /* Esta función es invocada por Windows */
   wincl.style = CS_DBLCLKS;                 /* Captura los doble-clicks */
   wincl.cbSize = sizeof (WNDCLASSEX);

   /* Usar icono y puntero por defector */
   wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
   wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
   wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
   wincl.lpszMenuName = "Menu";
   wincl.cbClsExtra = 0;                      /* Sin información adicional para la */
   wincl.cbWndExtra = 0;                      /* clase o la ventana */
   /* Usar el color de fondo por defecto para la ventana */
   wincl.hbrBackground = GetSysColorBrush(COLOR_BACKGROUND);

   /* Registrar la clase de ventana, si falla, salir del programa */
   if(!RegisterClassEx(&wincl)) return 0;

   /* La clase está registrada, crear la ventana */
   hwnd = CreateWindowEx(
          0,                   /* Posibilidades de variación */
          "NUESTRA_CLASE",     /* Nombre de la clase */
          "Dialogo de Entrada",       /* 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 */
          375,                 /* 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;
   /* Variables para diálogo */
   static DATOS Datos;

   switch (msg)                  /* manipulador del mensaje */
   {
       case WM_CREATE:
          hInstance = ((LPCREATESTRUCT)lParam)->hInstance;
          /* Inicialización de los datos de la aplicación */
          strcpy(Datos.Texto, "");
          return 0;
          break;
       case WM_COMMAND:
          if(LOWORD(wParam) == CM_DIALOGO)
             DialogBoxParam(hInstance, "DialogoPrueba", hwnd, DlgProc, (LPARAM)&Datos);
          break;
       case WM_DESTROY:
          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;
}

BOOL CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
   static DATOS *Datos;

   switch (msg)                  /* manipulador del mensaje */
   {
       case WM_INITDIALOG:
          SendDlgItemMessage(hDlg, ID_TEXTO, EM_LIMITTEXT, 80, 0L);
          Datos = (DATOS *)lParam;
          SetDlgItemText(hDlg, ID_TEXTO, Datos->Texto);
          SetFocus(GetDlgItem(hDlg, ID_TEXTO));
          return FALSE;  
       case WM_COMMAND:
          switch(LOWORD(wParam)) {
             case IDOK:
                GetDlgItemText(hDlg, ID_TEXTO, Datos->Texto, 80);
                EndDialog(hDlg, FALSE);
                break;
             case IDCANCEL:
                EndDialog(hDlg, FALSE);
                break;
          }
          return TRUE;
   }
   return FALSE;
}


Listo, ya lo demas depende de ti :D

fuente: http://winapi.conclase.net

Saludos bye1.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
Closed TopicTopic OptionsStart new topic

Google
Web www.trucoswindows.net