Domingo 15 de Diciembre de 2024, 04:50
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Duda Al Pintar Texto En Consola
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Duda Al Pintar Texto En Consola (Leído 1770 veces)
Emperorxdevil
Nuevo Miembro
Mensajes: 13
Duda Al Pintar Texto En Consola
«
en:
Jueves 2 de Agosto de 2007, 00:19 »
0
Hola a todos.
Verán, estoy intentando pintar texto de color sobre la ventana tipica que se abre en un programa C de consola con API.
Resulta que estoy un poco perdido, porque creo que no se me olvida nada y en consola no sale el texto coloreado ni sin colorear.
El code es este:
Código: Text
char s[]="Texto"; // texto que quiero pintar de rojo
HWND h;
HDC hd;
h = FindWindow("ConsoleWindowClass", NULL); // obtengo el handle
hd=GetDC(h) // obtengo el handle del contexto
SetTextColor(hd, 0x00FF0000); // defino el color rojo..
TextOut(hd, 10, 5, s, lstrlen(s)); // intento pintarlo en el area cliente de la ventana
Podeis decirme por qué no "pinta" el texto ?
No es la Api correcta ?
Gracias
Tweet
Karman
Miembro activo
Mensajes: 84
Re: Duda Al Pintar Texto En Consola
«
Respuesta #1 en:
Jueves 2 de Agosto de 2007, 02:43 »
0
Ese tipo de errores suele ser común, ya que en realidad el pintado de un area debe realizarce al resivir el mensaje del sistema WM_PAINT, de todas formas logré que funcione el código de la siguiente manera:
Código: Text
///////////////////////////////////
//compile as console mode app
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void){
HWND h;
HDC hdc;
SetLastError(0);
char s[]="Texto"; // texto que quiero pintar de rojo
h = FindWindow("ConsoleWindowClass", NULL); // obtengo el handle
hdc=GetDC(h); // obtengo el handle del contexto
SetTextColor(hdc,0xff00FF); // defino el color rojo..
TextOut(hdc, 30, 25, s, lstrlen(s)); // intento pintarlo en el area cliente de la ventana
ValidateRect(h,NULL);
system("pause");
}
con ValidateRect(h,NULL) excluís una parte (o toda como en este caso) de la pantalla de la próxima "pintada" de windows...
S2
www.inexinferis.com.ar
-. Karman .-
Emperorxdevil
Nuevo Miembro
Mensajes: 13
Re: Duda Al Pintar Texto En Consola
«
Respuesta #2 en:
Jueves 2 de Agosto de 2007, 14:29 »
0
Rayos !! La API ValidateRect no estaba en mi base de datos.
Weno, me estoy bajando varios libros de la API para completarla.
Al final conseguí pintar texto de esta forma:
Código: Text
#include <stdio.h>
#include <windows.h>
void menu(void);
HWND hConsole;
void main() {
menu();
getchar();
}
void menu(void)
{
hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, 2);
printf("\n\n(Texto en verde) El StdHWND es: %d ",hConsole);
SetConsoleTextAttribute(hConsole, 5);
printf("\n\n\n");
}
Gracias por el soporte !!
Salu2
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: Duda Al Pintar Texto En Consola
«
Respuesta #3 en:
Jueves 2 de Agosto de 2007, 15:19 »
0
La documentacion de Windows, en este caso para la consola, es la
MSDN
.
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Geo
Miembro de PLATA
Mensajes: 1011
Nacionalidad:
Re: Duda Al Pintar Texto En Consola
«
Respuesta #4 en:
Jueves 2 de Agosto de 2007, 20:39 »
0
Cita de: "Emperorxdevil"
Podeis decirme por qué no "pinta" el texto ?
No es la Api correcta ?
No es la función correcta
. Tú quieres escribir en una ventana de consola, y usas una función para escribir a un form (en este caso se hace como en el ejemplo de Karman), para lo que tú quieres puedes usar la función estándar printf (como finalmente lo hiciste) o la función
ConsoleWrite
de la API de Windows.
La imaginación es el límite.
Hardware & Software
|
Mexchip
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Duda Al Pintar Texto En Consola