Visual C++ .NET - mostrar texto en pantalla?

 
Vista:
Imágen de perfil de diana

mostrar texto en pantalla?

Publicado por diana (13 intervenciones) el 30/08/2007 02:24:33
Hola, tengo una aplicacion en la cual al dar clic en un boton realiza diversas tareas por lo q quiero q al momento que esta ejecutando dichas tareas se muestre en algun label el estado de la actividad q esta haciedo con algunas leyendas, como puedo hacerlo para q en tiempo de ejecucion y desde diferentes archivos cpp se este cambiando el contenido de dicho label¿?¿
de antemano gracias por su atencion y ayuda!!
Hasta pronto
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:mostrar texto en pantalla?

Publicado por NeoMitnick (12 intervenciones) el 30/08/2007 14:09:25
Ahmm según entiendo quiéres poner una Etiqueta y cambiarle el título a tu antojo no?

Bien primero vas a tu editor de recursos... pon la etiqueta en cualquier lado de tu formulario, una ves hecho esto, dale click con el botón derecho (sobre la equiqueta que acabas de crear) y en el campo ID le pones un identificador diferente al que tiene (IDC_STATIC) algo así como IDC_ETIQUETA_ESTADO y en Caption pues le pones lo que quieres que diga antes de que se presione el botón...

Bueno ahora al pulsar el botón, en la función relacionada al evento BN_CLICKED del botón (osea la función a ejecutarse uando lo pulsas) haces tu proceso... y con la función SetDlgItemText( IDC_ETIQUETA_ESTADO , "Aquí cadena con nuevo título" ) y con esa función queda seteado el nuevo título. Ojo aquí, esta función debe ser llamada dentro de la clase que encapsula la ventana que contiene esta etiqueta. Osea algo así:

void CMiProyectoDlg::OnButton()
{
SetDlgItemText( IDC_ETIQUETA_ESTADO , "Aquí cadena con nuevo título" );
}

Lo anterior fue suponiendo que estés trabajando con MFC ahora si estás trabajando sin MFC (es decir sólo con API de windows) la función sería
SetDlgItemText( hWnd ,IDC_ETIQUETA_ESTADO , "Aquí cadena con nuevo título" )

donde hWnd es el handle a la ventana que tiene dicha etiqueta :p

Ahora como esta función no puede ser llamada desde otra parte que no sea de la clase que encapsula la ventana que contiene a esa etiqueta, si tu intentas llamar a esta función desde una clase hecha por ti misma u una función hecha por ti misma que no herede de la clase CWnd, como supongo que es tu caso te mandará un error,entonces tienes que usar directamente la API de windows y para hacer esto tienes que conseguir el handle de la ventana que contiene a la eqtiqueta (que latoso no ?). Una forma de hacerlo sería pasandole como parametro el handle de tu ventana a la función que vas a llamar desde otro cpp y también pasándole el valor de IDC_ETIQUETA_ESTADO a dicha función, esto quedaría más o menos así

#include "archivoexterno.cpp"
.
.
.

void CMiProyectoDlg::OnButton()
{
HWND hVentana;
hVentana=GetSafeHwnd(); //Regresa el handle del dialogo
funcion(hVentana,IDC_ETIQUETA_ESTADO);
}

.
.
.

y con esto ya tienes el handle a la ventana dentro de tu funcion que está en archivoexterno.cpp y está definido así:

//Archivo archivoexterno.cpp

void funcion ( HWND hVentana, UINT id_control )
{
SetDlgItemText(hVentana,id_control,"Nuevo Titulo");
}

Esa fue una forma, otra forma de hacerlo sería sin pasarle los parametros a dicha función, es decir que la función averiguara el handle de la ventana y el valor de IDC_ETIQUETA_ESTADO lo tomará de el archivo de recursos.

IDC_ETIQUETA_ESTADO es una macro declarada en los ficheros de recursos de tu aplicación, estos son incluidos en el header del nombre de tu proyecto, es decir si tu proyecto se llama MiProyecto, existe un .h que se llama MiProyecto.h, en este archivo hay un include hacia resources.h (que son los recursos) y SetDlgItemText es una funcion declarada en windows.h y windows .h es invocado por stdafx.h

POara averiguar el handle de la ventana que contiene a tu etiqueta existe una función en windows que se llama FindWindow, devuleve el handle de la ventana cuyo título sea su segundo argumento, suponiendo que la ventana que contiene la etiqueta tiene de titulo "Mi aplicacion" entonces llamaríamos a FindWindows así:

hVentana=FindWindow(NULL,"Mi aplicacion"); //definida en windows.h

Entonces siguiendo este procedimiento, necesitamos incluir en nuestro archivoexterno.cpp las directivas #include "stdafx.h" y #include "resource.h" o #include "MiProyecto.h" (Por lo que expliqué allá arriba), por lo que quedaría algo así:

#include "archivoexterno.cpp"
.
.
.

void CMiProyectoDlg::OnButton()
{
funcion();
}

y archivoexterno.cpp quedaría así:

#include "stdafx.h" //Incluye a windows.h
#include "resource.h" //Aquí se define IDC_ETIQUETA_ESTADO pudieramos haber puesto también #include "MiProyecto.h"

void cambia (void)
{
HWND hVentana;
hVentana=FindWindow(NULL,"Mi aplicacion");
SetDlgItemText(hVentana,IDC_ETIQUETA_ESTADO,"Nuevo Titulo");
}

Espero que me haya dado a entender lo más posible :S, cualquier duda por acá, no reviso mucho este foro, si tienes dudas de este, puedes encontrarme en http://foros.radiosuperrokola.com en el foro de Computer Club, en ese foro ando diario con el nick de chidocal...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de diana

RE:mostrar texto en pantalla?

Publicado por diana (13 intervenciones) el 30/08/2007 19:37:56
hola muchisimas gracias me funciono perfecto, espro en algun momento ayudarte en algo ;)
Hasta pronto!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:mostrar texto en pantalla?

Publicado por NeoMitnick (12 intervenciones) el 30/08/2007 23:31:27
Lo que gustes de C y C++ y C para windows :)

Quedas cordialmente invitada a participar a los foros de http://foros.radiosuperrokola.com ahí puedes ayudar mucho en Computer Club Saludos =)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de diana

RE:mostrar texto en pantalla?

Publicado por diana (13 intervenciones) el 31/08/2007 00:11:53
Gracias y claro con todo gusto de hecho ya me registre, por ahi andaremos ;)
Hasta pronto!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como mostrar un cuadro de mensaje

Publicado por Denys (1 intervención) el 03/07/2008 23:21:09
hola nesesito que me ayuden . Soy nuevo en el mundo del c++ y quisiera saber como puedo mostrar un cuadro de dialogo con un mensaje
ante todo gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar