C/Visual C - Texto vertical???

 
Vista:

Texto vertical???

Publicado por Nelek (816 intervenciones) el 14/08/2006 11:33:02
Hola a todos

Estoy intentando hacer que, en mi proyecto (VisualC++ 6) un texto se lea de arriba hacia abajo (tipo la escritura Japonesa), pero no encuentro ningún comando que me ayude. He mirado por la ayuda, en los CString, en los Static, en las funciones de texto del CDC y un par de sitios más pero no he visto nada.

Se me ocurre que puedo coger, decir al Static desde el editor de recursos que va a ser multilinea, y luego leer el string que yo quiero introducir letra a letra e ir escribiendo cada letra en una linea distinta, pero me gustaria saber si hay algún método o función que lo haga automáticamente.

Gracias
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:Texto vertical???

Publicado por JuanC (57 intervenciones) el 14/08/2006 22:12:55
Creo que la solución es recurrir a la API...

Ver básicamente estas funciones:
CreateFontIndirect; ExtTextOut

Algo así es en Borland Builder C++
en VC debe ser algo similar...

void __fastcall CreateVerticalFont()
{
TLogFont VerticalFont;
TFont *OldFont;

ZeroMemory(&VerticalFont, sizeof(VerticalFont));
VerticalFont.lfHeight = -18;
VerticalFont.lfEscapement = 900;
VerticalFont.lfOrientation = 900;
VerticalFont.lfWeight = FW_BOLD;
StrPCopy(VerticalFont.lfFaceName, "Arial");
////////////
OldFont = (TFont*) ::SelectObject(Canvas->Handle,
::CreateFontIndirect(&VerticalFont));
/////////////

//Falta declarar e inicializar algunas variables y más código...

::ExtTextOut(Canvas->Handle, -1, MenuHeight, ETO_CLIPPED,
&VerticalDrawingRect, VerticalText.c_str(),
VerticalBarLength, NULL);
}

Espero q te sirva como para orientarte un poco... buscando seguro vas
a encontrar algo hecho en VC++

Saludos desde Baires, JuanC
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:Texto vertical???

Publicado por Nelek (816 intervenciones) el 15/08/2006 09:10:34
Muchas gracias, estuve mirando ya por lo de CreateFontEx y un par de metodos parecidos. Me permitian orientar arriba, a la derecha, ala izda y abajo, pero ponerlo en vertical no lo vi, no al menos como funcion explicita.

De todas maneras con el ejemplo que me has puesto me podre apanyar. Muchisimas 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

RE:Texto vertical???

Publicado por Nelek (816 intervenciones) el 15/08/2006 19:05:02
Ya que al final si que lo he encontrado me respondo yo mismo para los que también lo hayan buscado:

BOOL CreateFont( int nHeight, int nWidth, int nEscapement, int nOrientation, int nWeight, BYTE bItalic, BYTE bUnderline, BYTE cStrikeOut, BYTE nCharSet, BYTE nOutPrecision, BYTE nClipPrecision, BYTE nQuality, BYTE nPitchAndFamily, LPCTSTR lpszFacename );

Ese es el comando de crear una fuente, donde el "int nEscapement" es el ángulo para la cadena de carácteres respecto al eje X y empezando por la primera letra. Luego "int nOrientation" es lo mismo, pero para cada letra, es decir, escribir en plan pero con las letras horizontales (por ejemplo)
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