3.6.3 Längere Texte ausgeben

Neben der Möglichkeit, einfache Zeichenketten auszugeben, bietet der PocketViewer auch die Möglichkeit, längere Texte auszugeben, und auch zu scrollen.
Zur Textausgabe kommt prinzipiell die gleiche Routine zum Einsatz, wie zur Texteingabe, lediglich die Tastatur wird weggelassen.
/* Hier kommen die Definitionen der einzelnen Screens */
int screen1()
{
  int ret_code=0;        /* Unser Ergebnis dieses Screens */
  TCHSTS tsts;        /* Ergebnis der Touch-Abfrage */
    
  TXTP m_tp;
  TCHTBL InptTch[3];
  T_SCR_POS ScrEdit;
  word GdTbl[1];
  char TextBuffer[200];

  strcpy(TextBuffer,"Dieser Beispieltext\rsoll mal\rso richtig lang
                     \rwerden\rmit Zeilenumbruch\rund so");

  /* Bildschirmaufbau */    
  LibClrDisp();        /* Bildschirm löschen */

  GdTbl[0]=0xffff;	/* Keine Guidance-Tables */
  m_tp.st_x=5;		/* Startkoordinaten */
  m_tp.st_y=10;	
  m_tp.ed_x=145;	/* Endkoordinate in x-Richtung */
  m_tp.it_y=9;		/* Wie hoch ist eine Zeile */
  m_tp.MAXGYO=5;	/* Wieviele Zeilen sollen angezeigt werden */
  m_tp.font=IB_PFONT1;	/* In welchem Font */
  m_tp.csen=FALSE;	/* Kein Cursor zu sehen */
  m_tp.rtnen=FALSE;	/* Für den Zeilenumbruch soll kein Zeichen angezeigt werden */
  m_tp.maxmj=199;	/* maximal 199 Zeichen werden dargestellt */
  m_tp.gdcmt=GdTbl;	/* Guidance-Tables haben wir nicht */
  m_tp.sbrobj=OBJ_SCR_BAR;    /* Scrollbar */
  m_tp.tchtb=InptTch;	/* Touch-Felder für die Scrollleiste */
  m_tp.s_pos=&ScrEdit;	/* Struktur für die Scrollbar */
  m_tp.txbf=TextBuffer;	/* Und der Textbuffer */
  
  LibTxtDspInit(&m_tp); /* Textfeld initialisieren */
  LibTxtDspC(&m_tp);	/* und darstellen */

        /* Bildschirm füllen */

  LibPutDisp();        /*Bildschirm anzeigen */

  /* Touch-Felder definieren */
  LibTchStackClr();          /* Keine Touch-Felder von früher zulassen */
  LibTchStackPush(NULL);    /* Stack initialisieren */
  LibTchStackPush(TchHardIcon);    /* Icons für die Menüleiste */

  LibTxtTchSet(&m_tp);

  /* Hauptschleife */
  while (ret_code==0)    /* Solange nichts gemacht wurde */
  {
    if(LibTxtDspC(&m_tp)==TRUE) /* Wenn sich an der Textdarstellung was geändert hat */
      LibPutDisp();		/* dann Darstellen */
    LibTchWait(&tsts);    /* Auf Touch warten */
    switch(tsts.obj)    /* Auswerten des Touch */
    {
      case OBJ_HIC_ESC:    /* ESC_Taste gedrückt */
      {
        ret_code=PV_ESC1;    /* Screen1 beenden */
      }
      break;        
    /* Weitere Dinge tun */
    }
    LibTxtDspS(&m_tp,&tsts);	/* Die Scrollleiste bearbeiten */
  }
  return(ret_code);            /* Ergebnis melden */
}

In diesem Beispiel wird ein Textfeld an den Koordinaten 5,10 definiert, das 140 Pixel breit und 5 Zeilen hoch ist.
In diesem Textfeld wird dann ein Text angezeigt.
Wichtig ist, die Felder der Struktur m_tp richtig zu füllen, das Textfeld zu initialisieren und auch darszustellen. Für die Scrollbar muss ein eigenes Touchtable reserviert werden, das in der Hauptschleife auch abgearbeitet wird.

Guidance Tables sind für die reine Textdarstellung nicht notwendig, deshalb wird GdTbl[0]=0xffff; gesetzt, was die Guidance-Funktion ausschaltet.

Für Ergänzungen wenden Sie sich bitte an: Jürgen Wagner