[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