Autor
|
Tema: Cosa rarísima sucede al ejecutar mi pequeño programa (Leído 2,817 veces)
|
FMLTGRD
Desconectado
Mensajes: 16
|
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: 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
|
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
Mensajes: 16
|
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
|
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
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
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
Mensajes: 16
|
Ya puse el codigo como se debe. Muchas gracias. Voy a usar sus recomendaciones y les aviso si me funciona.
|
|
|
En línea
|
|
|
|
|
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
|
11,501
|
25 Mayo 2008, 18:14 pm
por Sai-To
|
|
|
Mi Pequeño Programa
« 1 2 »
.NET (C#, VB.NET, ASP)
|
ArMaGgEdOn2012
|
13
|
6,927
|
30 Enero 2010, 20:10 pm
por raul338
|
|
|
Una cosa dificil synaptics y un programa
GNU/Linux
|
portaro
|
2
|
2,415
|
1 Enero 2011, 00:25 am
por portaro
|
|
|
Duda con una cosa rarísima (tema punteros)
Programación C/C++
|
SARGE553413
|
5
|
2,906
|
16 Abril 2013, 01:04 am
por amchacon
|
|
|
Cosa rarisima en codigo c++
Ejercicios
|
anonimo115
|
1
|
2,793
|
5 Septiembre 2017, 00:42 am
por AlbertoBSD
|
|