[C con Clase] Control EDIT
Carlos Oyarzo
harry848 en hotmail.com
Dom Ago 26 00:45:13 CEST 2007
DAMP....
prueba por esto:
---------------------------------------------------------------------------------------------------------------------------------------
#include <windows.h>
#include "IDS.h"
/* Declaración del procedimiento de ventana */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM);
typedef struct stDatos {
char Numero [100];
} 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 = MAKEINTRESOURCE(ID_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 */
TEXT("Sistemas Expertos"), /* 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;
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, "Inicial");
return 0;
break;
case WM_COMMAND:
/*if(LOWORD(wParam) == CM_LEER)
DialogBoxParam(hInstance, "", hwnd, DlgProc, (LPARAM)&Datos);
else
PostQuitMessage(0);
break;*/
switch(LOWORD(wParam)) {
case CM_LEER:
DialogBoxParam(hInstance, MAKEINTRESOURCE(ID_dlg1), hwnd,
DlgProc, (LPARAM)&Datos);
break;
case CM_SALIR:
PostQuitMessage(0);
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;
float numero;
switch (msg) /* manipulador del mensaje */
{
case WM_INITDIALOG:
datos = (DATOS *)lParam;
SetFocus(GetDlgItem(hDlg, ID_NUMERO));
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam)) {
case IDOK:
GetWindowText(GetDlgItem(hDlg, ID_NUMERO),datos->Numero, 100);
numero= atof(datos->Numero);
if((numero<0.5f)&&(numero>0.1f))
{
MessageBox(hDlg,TEXT("funciona"),TEXT("sistemas expertos"),MB_OK );
SetFocus(GetDlgItem(hDlg, ID_LISTA));
}
else
{
//PostQuitMessage(0);
}
break;
case IDCANCEL:
EndDialog(hDlg, FALSE);
break;
}
return TRUE;
}
return FALSE;
}
-------------------------------------------------------------------------------------------------------------------------------
Espero que te sirva. Cuenta si algo no te funcionó.
Salu2.
*****************************************************************************
>From: DAMP <damp29yw en gmail.com>
>Reply-To: Lista de correo sobre C y C++ <cconclase en listas.conclase.net>
>To: "Lista de correo sobre C y C++" <cconclase en listas.conclase.net>
>Subject: Re: [C con Clase] Control EDIT
>Date: Fri, 24 Aug 2007 21:58:33 -0500
>
>Carlos muchas gracias, pero he hecho lo que me dijiste y no logro
>sulucionar
>el problema; te envio todo el codigo a ver en que me puedes colaborar.
>gracias.
>
>Muchas gracias.
>
>
>El día 24/08/07, Carlos Oyarzo <harry848 en hotmail.com> escribió:
> >
> > hola damp, por el poco codigo que envias, solo puedo
> > decirte que quizas el error está en el if():
> >
> > if((numero<0,5)&&(numero>0,1))
> >
> > deberia ser if( (numero<0.5f) && (numero>0.1f) )
> >
> > Espero que te sirva
> > Salu2
> >
> >
> > >From: DAMP <damp29yw en gmail.com>
> > >Reply-To: Lista de correo sobre C y C++ <cconclase en listas.conclase.net>
> > >To: cconclase en listas.conclase.net
> > >Subject: [C con Clase] Control EDIT
> > >Date: Thu, 23 Aug 2007 22:14:44 -0500
> > >
> > >Cordial saludo amigos.
> > >
> > >amigos tengo un inconvenite con un algoritmo.
> > >ncesito capturar un float desde el control EDIT, hasta donde tengo
> > >entendido
> > >lo que se captura del control EDIT es un char y necesito convertirlo en
> > un
> > >float, eso lo hago con atoif, y esa variable float la pongo en un if
>para
> > >indicar un rango de que ese numeor float sea menor que 0.5 y mayor que
> > 0.1
> > >y
> > >si es asi me muestre un mensaje, pero que sino esa dentro del rango
>haga
> > >otra cosa. mi problema es que cualquier numero que ingreso
>supuestamente
> > >esta dentro de ese rango, por ejemplo ingreso 10 y me acepta que esta
> > >dentro
> > >de ese rango y eso no deberia ser.
> > >el codigo q tengo es el siguiente:
> > >
> > >
> > >char entrada[100];
> > >
> > >float numero;
> > >
> > >GetWindowText(GetDlgItem(hDlg, ID_NUMERO), entrada, 10);
> > >
> > >numero= atof(entrada);
> > >
> > >if((numero<0,5)&&(numero>0,1))
> > >
> > >{
> > >
> > >MessageBox(hDlg,TEXT("funciona"),TEXT("sistemas expertos"),MB_OK );
> > >
> > >}
> > >
> > >else
> > >
> > >{
> > >
> > >PostQuitMessage(0);
> > >
> > >}
> > >ojala que me puedan colaborar porque soy muy nuevo en este ambiente y
> > >realmente no entiendo que pasa.
> > >Muchas gracias.
> > >--
> > >D.A.M.P
> >
> >
> > >_______________________________________________
> > >Lista de correo Cconclase Cconclase en listas.conclase.net
> >
> >http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> > >Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
> >
> > _________________________________________________________________
> > MSN Amor: busca tu ½ naranja http://latam.msn.com/amor/
> >
> >
> > _______________________________________________
> > Lista de correo Cconclase Cconclase en listas.conclase.net
> >
>http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> > Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
> >
>
>
>
>--
>D.A.M.P
><< win004.c >>
><< ids.h >>
><< win004.rc >>
>_______________________________________________
>Lista de correo Cconclase Cconclase en listas.conclase.net
>http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
_________________________________________________________________
MSN Amor: busca tu ½ naranja http://latam.msn.com/amor/
Más información sobre la lista de distribución Cconclase