005
30.12.2003, 20:08 Uhr
~Waldi
Gast
|
na ja einfach ist das nicht aber möglich. Ich habe bereits etwas angefangen nun haut nicht 100% hin die ESC[7m und ESC[0m da habe ich kein Konzept.
C++: |
switch ( *lpCharZuAnalyse ) {
/* // \x08 BS - BackSpace // \x09 HT - horizontal TAB // \x0A LF - line feed / Zeilenvorschub // \x0D CR - carriage Return // \x7F DEL - delete case '\x7F': sAusgabeWert += "\x7F"; break; // \Delete case '\x0D': sAusgabeWert += "\x0D"; break; // \r case '\x0A': sAusgabeWert += "\x0A"; break; // \n case '\x09': sAusgabeWert += "\x09"; break; // \t case '\x08': sAusgabeWert += "\x08"; break; // \BackSpace TRACE( "\n ## *** Return oder Zeilenvorschub *** gefunden ##" ); break; case '[': if (bESC == FALSE) { // als Text sAusgabeWert += *lpCharZuAnalyse; break; }
iIndexVonESC++; bKlammer = TRUE; //TRACE( "\n ## [ gefunden ##" ); break;
case '[': if (bESC == FALSE) { // als Text sAusgabeWert += *lpCharZuAnalyse; break; }
iIndexVonESC++; bKlammer = TRUE; break;
case ';': if (bESC == FALSE) { // als Text sAusgabeWert += *lpCharZuAnalyse; break; }
iIndexVonESC++; break;
/ hier H erkannt case 'H':
if ( bESC == TRUE && bKlammer == TRUE ) {
iIndexVonESC++;
// wenn ESC[H Kursor auf Position 1;1 if ( iIndexVonESC == 2 ) { bESC = FALSE; // alles zurücksetzten bKlammer = FALSE;
// ##### koordinaten übergeben ##### // sXHorizontal = "1"; sYVertikal = "1"; // //...................... TRACE("\n ->H<- gefunden Position 1;1"); break; } // :::::::::::::::::::::::::::::::::::::::
// alles zurücksetzten bESC = FALSE; bKlammer = FALSE;
//TRACE( "\n ## H gefunden ## sZifferNachKlammer[ %s ] sZifferNachSemikolon[ %s ]", sZifferNachKlammer, sZifferNachSemikolon );
// ##### koordinaten übergeben ##### // sYVertikal = sZifferNachKlammer; sXHorizontal = sZifferNachSemikolon; // //......................
sZifferNachKlammer.Empty(); sZifferNachSemikolon.Empty();
break;
} // if ( bESC == TRUE && bKlammer == TRUE ) { else // wenn H als TEXT { sAusgabeWert += *lpCharZuAnalyse; //TRACE( "\n sAusgabeWert bei H erkannt[ %s ] \n", sAusgabeWert ); break; } break; // ende H erkannt
|
so auf jedem fall versuche ich die angehende Zeichen zu zerlegen, dann in CEditView übergeben. Nun für Anfänger weist man nicht mit welche Klasse besser anfangen CView, CEditView oder ist das ganze qwatch?
C++: |
// ESC erkannt case '\x1b':
// Zeiger auf CLogaDateiView1 CLogView *vView1; vView1 = (CLogDateiView1 *) GetActiveView();
// vView1->ZeichenDarstellen( atoi(sYVertikal), atoi(sXHorizontal), sAusgabeWert, bReverseVideo, bAllesLoschen); sYVertikal.Empty(); sXHorizontal.Empty(); bAllesLoschen = FALSE; // sAusgabeWert.Empty();
|
Bearbeitung von 0xdeadbeef: |
Den Code schreibt man zwischen die Tags.
|
Dieser Post wurde am 30.12.2003 um 20:12 Uhr von 0xdeadbeef editiert. |