/*********************************************************************/ /* Projekt: Demo-Applikation fuer die CVD-Library */ /* Autor: Wolfgang Werner */ /* Datum: Februar 1995 */ /*********************************************************************/ #include "CVD.H" #include "DEMO.H2" CVDMENUE *menu; CVDOBJECT *fdial; CVDOBJECT *copyright; /* Prptotypen */ VOID prgende(SHORT fcode); VOID hdl_menu(SHORT titel,SHORT obj); VOID redraw(SHORT wind,C_RECT *rect,LONG xoff,LONG yoff); VOID mouseclick(SHORT wind, SHORT mx,SHORT my,SHORT button,SHORT count); VOID main(VOID) { /* Initialisierung der Bibliothek und Laden der CVD-Datei */ C_Cvd_Init("DEMO.CVD"); /* CVDObjekt-Zeiger setzen */ menu = C_Cvd_Menue_Ptr(MENU); fdial = C_Cvd_Dialog_Ptr(FDIAL); copyright = C_Cvd_Dialog_Ptr(COPYRIGHT); /* Der Eventstruktur wird die Routine zur Menue-Verwaltung zugeordnet */ C_evnt.hdlmenu = hdl_menu; /* Menueleiste zeigen */ C_Show_Menu(menu); /* Hauptschleife */ C_Main_Loop(); /* Menue loeschen */ C_Hide_Menu(menu); /* Programm beenden */ prgende(0); } VOID prgende(SHORT fcode) { C_Cvd_Exit(); exit(fcode); } static SHORT x = 20,y = 40; /* Fensterpositionen */ /********************************************/ /* Verwaltung der Menueleiste */ /* Parameter: */ /* titel: Index des Menuetitels */ /* obj: Index des Menueeintrags */ /********************************************/ VOID hdl_menu(SHORT titel,SHORT obj) { SHORT wahl,wind; switch(obj) { case MENDE: /* Programmende nach Sicherheitsabfrage */ if (C_Message(1,"[3][ | Programm wirklich beenden? | ][[Ja|[Nein]")==1) C_ende = TRUE; break; case MINFO: /* Copyright-Meldung als modaler Dialog */ C_Start_Dialog(copyright,0); wahl = C_Redo_Dialog(copyright); C_End_Dialog(copyright); break; /* zyklischer Tauschen der Fenster */ case MFCYCLE: C_Cycle_Wind(); break; case MFDIAL: /* Oeffnen des nicht modalen Fensterdialogs */ wind = C_Open_Wind_Dial(fdial,0,FDTEXT1,C_Standard_Exit," Fensterdialog ",0); break; case MFGRAF: /* Oeffnen eines Textfensters */ wind = C_Open_Wind(x,y,400,200,CLOSER|SIZER|NAME|MOVER|HSLIDE|VSLIDE,0,redraw,0,0); if (wind != INVALID) /* Fenster konnte geoeffnet werden ? */ { /* Fenstertitel setzen */ C_Set_Wind_Name(wind," Textausgabe "); /* Ausdehnung des Dokuments als Slidergroesse setzen */ C_Set_Slider_Size(wind,480,16*80,0); C_Set_Hdl_Click(wind,mouseclick); /* Fenster stapeln */ x += 10; y += 20; } break; } } /********************************************/ /* Redraw-Routine fuer Textfenster */ /* Parameter: */ /* wind: Fensterindex */ /* rect: zu zeichnendes Rechteck */ /* xoff: horizontale Sliderposition */ /* yoff: vertikale Sliderposition */ /********************************************/ VOID redraw(SHORT wind,C_RECT *rect,LONG xoff,LONG yoff) { SHORT x,y,la; BYTE ausgabe[125]; C_Text_Settings(wind,0,BLACK,10,0,0,0,5); x = (SHORT)xoff + 0; y = (SHORT)yoff - 16; for (la = 1;la < 81;la++) { y+=16; /* zu Optimierung der Ausgabegeschwindigkeit, teste ich */ /* ob die Ausgabe ins Ausgaberechteck faellt */ if (y+16 < rect->top) continue; if (y > rect->bottom) break; sprintf(ausgabe,"%d. Beispiel fuer Textausgabe und Scrolling: \"Hello World\"",la); C_Text(wind,x,y,ausgabe); } } VOID mouseclick(SHORT wind, SHORT mx,SHORT my,SHORT button,SHORT count) { BYTE message[250]; sprintf(message,"[1][ Click ins Textfenster: | mx: %d my: %d | button: %d count %d ][OK]",mx,my,button,count); C_Message(1,message); }