RE:mostrar texto en pantalla?
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...