elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Cosa rarísima sucede al ejecutar mi pequeño programa
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cosa rarísima sucede al ejecutar mi pequeño programa  (Leído 2,543 veces)
FMLTGRD

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Cosa rarísima sucede al ejecutar mi pequeño programa
« en: 29 Noviembre 2014, 05:13 am »

Hola a todos, estoy haciendo un programa y para eso comencé con las bases que son saber como hacer una ventana, ponerle botones y una caja de texto.
Todo eso lo puedo hacer sin problema. Después para obtener los datos de la caja de texto use el mensaje EM_GETLINE. Esta solución me funciona bastante bien ya que después uso la función printf() para desplegar los datos.

En fin, lo raro es que cuando ejecuto el programa y escribo en la caja de texto: "Hola Mundo" el programa me imprime por pantalla el mensaje pero al final le añade una carita feliz. Si alguien pudiera explicarme este fenómeno y como evitarlo se lo agradecería.

Les dejo aquí un pedazo de código:

Código:
LRESULT CALLBACK Procedure(HWND hWindow, UINT message, WPARAM wParam, LPARAM lParam){

    static HWND button, caja;

switch(message){

   case WM_DESTROY:{

PostQuitMessage(0);
return 0;

   }

   case WM_CREATE:{

       button = CreateWindowEx(WS_EX_CLIENTEDGE, "BUTTON", "BUTTON", WS_CHILD | WS_VISIBLE, 10, 10, 100, 50, hWindow, NULL, NULL, NULL);
       caja = CreateWindowEx(WS_EX_ACCEPTFILES, "EDIT", "", WS_CHILD | WS_VISIBLE | ES_AUTOHSCROLL, 10, 70, 100, 25, hWindow, NULL, NULL, NULL);
            break;

   }

   case WM_COMMAND:{

            char buffer[512];
            if((HWND)lParam == button){
                [b]SendMessage(caja, EM_GETLINE, 0, (LPARAM)buffer);
                printf("%d \n", strlen(buffer));
                printf("%s\n", buffer);[/b]
                return 0;
            }
       break;

   }

}

return DefWindowProc(hWindow, message, wParam, lParam);

}


« Última modificación: 29 Noviembre 2014, 18:00 pm por FMLTGRD » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Cosa rarísima sucede al ejecutar mi pequeño programa
« Respuesta #1 en: 29 Noviembre 2014, 05:22 am »

Usa etiquetas GeSHi para publicar codigo, modifica el tema y colocaselas...

La carita feliz se genera de un ascii mal interpretado por la consola (alt+1) posiblemente en  buffer (por no estar inicializado o por no pasarse a la funcion su largo correcto) esta conteniendo algo de basura inicial de la ram y mostrandose


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
FMLTGRD

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Cosa rarísima sucede al ejecutar mi pequeño programa
« Respuesta #2 en: 29 Noviembre 2014, 05:35 am »

Gracias por la recomendación voy a usarlas mas seguido.
¿Por otra parte como puedo evitar que eso pase? ¿Solo tengo que inicializar la variable con cualquier texto?
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Cosa rarísima sucede al ejecutar mi pequeño programa
« Respuesta #3 en: 29 Noviembre 2014, 09:28 am »

El asunto es que tienes que saber la cantidad de caracteres a capturar... esto puede ayudarte

http://msdn.microsoft.com/en-us/library/windows/desktop/bb761613(v=vs.85).aspx

(PD: Usa el boton modificar y coloca en GeSHi el primer codigo publicado)
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Cosa rarísima sucede al ejecutar mi pequeño programa
« Respuesta #4 en: 29 Noviembre 2014, 10:20 am »

Ademas, EM_GETLINE message:

lParam
A pointer to the buffer that receives a copy of the line. Before sending the message, set the first word of this buffer to the size, in TCHARs, of the buffer. For ANSI text, this is the number of bytes; for Unicode text, this is the number of characters. The size in the first word is overwritten by the copied line.

Edit controls: The copied line does not contain a terminating null character.

Nunca viene mal usar ZeroMemory para inicializar las variables.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
FMLTGRD

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Cosa rarísima sucede al ejecutar mi pequeño programa
« Respuesta #5 en: 29 Noviembre 2014, 21:14 pm »

Ya puse el codigo como se debe. Muchas gracias. Voy a usar sus recomendaciones y les aviso si me funciona.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como ejecutar programa en memoria sin ejecutar el archivo « 1 2 »
Programación Visual Basic
Sai-To 13 10,814 Último mensaje 25 Mayo 2008, 18:14 pm
por Sai-To
Mi Pequeño Programa « 1 2 »
.NET (C#, VB.NET, ASP)
ArMaGgEdOn2012 13 6,324 Último mensaje 30 Enero 2010, 20:10 pm
por raul338
Una cosa dificil synaptics y un programa
GNU/Linux
portaro 2 2,128 Último mensaje 1 Enero 2011, 00:25 am
por portaro
Duda con una cosa rarísima (tema punteros)
Programación C/C++
SARGE553413 5 2,618 Último mensaje 16 Abril 2013, 01:04 am
por amchacon
Cosa rarisima en codigo c++
Ejercicios
anonimo115 1 2,606 Último mensaje 5 Septiembre 2017, 00:42 am
por AlbertoBSD
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines