/* * WIND_SET (C) Digital Design 1993 * * ndert das Aussehen des Randbereichs oder der Titelzeile * eines Fensters. */ #include #include typedef char *STRINGP; int wind_set( int wi_shandle, int wi_sfield, ... /* int wi_sw1, int wi_sw2, int wi_sw3, int wi_sw4 */ ) { va_list ap; intin[0] = wi_shandle; /* Window Handle des zu ndernden Fensters */ intin[1] = wi_sfield; /* gibt die Art der nderung an: * * * * 1 (WF_KIND): In wi_sw1 wird das Bit-Feld * * gespeichert, das festlegt, welche * * Komponenten des Randbereichs des Fensters * * sichtbar sein sollen. * * Die Bedeutung der Bits im Bit-Feld ist die * * gleiche wie bei WIND_CREATEWIND_CRE.C. * * * * 2 (WF_NAME): wi_sw1 und wi_sw2 stellen einen * * Zeiger dar, der auf einen String im Speicher * * zeigt. Dieser String ist der Titel des * * Fensters. Er mu folgendermaen im Speicher * * organisiert sein: * * 1.Byte = 1.Zeichen * * 2.Byte = 2.Zeichen * * ... * * n.Byte = letztes Zeichen * * n+1.Byte = Null * * n+2.Byte = Null * * Der Text wird automatisch zentriert. * * * * 3 (WF_INFO): wi_sw1 und wi_sw2 sind ein * * Zeiger auf einen String, der die * * Informationszeile des Fensters darstellt. * * Es gilt sinngem das gleiche wie bei 2. * * * * 5 (WF_CURRXYWH): Das laufende Fenster wird * * festgelegt. Diese Option korrespondiert mit * * dem Befehl WIND_GETWIND_GET.C, Option 5 und 6. * * * * 8 (WF_HSLIDE): Die relative Position des * * horizontalen Schiebers wird verndert. Die * * Parameter sind die gleichen wie diejenigen * * von WIND_GETWIND_GET.C, Option 8. * * * * 9 (WF_VSLIDE): Die relative Position des * * vertikalen Schiebers wird verndert. Die * * Parameter sind die gleichen wie diejenigen * * von WIND_GETWIND_GET.C, Option 9. * * * * 10 (WF_TOP): Das momentan aktive Fenster * * wird festgelegt. Es kann nur ein Fenster * * gleichzeitig aktiv, d.h. vom Benutzer vern- * * derbar sein. Diese Option korrespondiert mit * * dem Befehl WIND_GETWIND_GET.C, Option 10. * * * * 14 (WF_NEWDESK): Die Adresse einer neuen GEM * * DESKTOP- Zeichnung fr den Grundzustand wird * * bergeben: * * wi_sw1 * * und wi_sw2 = Adresse der Objektbaumstruktur * * wi_sw3 = Index des zuerst zu zeichnen- * * den Objekts * * * * 15 (WF_HSLSIZE): Die relative Gre des * * horizontalen Schiebers wird verndert. Die * * Parameter sind die gleichen wie diejenigen * * von WIND_GETWIND_GET.C, Option 15. * * * * 16 (WF_VSLSIZE): Die relative Gre des * * vertikalen Schiebers wird verndert. Die * * Parameter sind die gleichen wie diejenigen * * von WIND_GETWIND_GET.C, Option 16. * * * * 24 (WF_BEVENT): Sorgt dafr, da der * * Besitzer des Fensters beim Klick in das * * Fensterinnere keine WM_TOPPED-Nachricht * * erhlt, wenn das Fenster nicht aktiv ist. * * Stattdessen wird ein MU_BUTTON ausgelst, * * falls der Besitzer eine entsprechende * * Anforderung bei evnt_multi() gestellt hat. * * wi_sw1 = 0: Mausklick -> WM_TOPPED * * = 1: Mausklick -> MU_BUTTON * * ACHTUNG: Diese Funktion wird erst ab * * MultiTOS 1.0 bzw. WINX 2.1 untersttzt! * * * * 25 (WF_BOTTOM): Das angegebene Fenster wird * * im Fensterstapel nach hinten gestellt. Das * * Fenster mu offen sein. * * ACHTUNG: Diese Funktion wird erst ab * * MultiTOS 1.0 bzw. WINX 2.1 untersttzt! */ va_start( ap, wi_sfield ); switch (wi_sfield) { case 1: case 8: case 9: case 15: case 16: case 24: intin[2] = va_arg( ap, int ); break; case 2: case 3: *(char far **)(intin + 2) = va_arg( ap, STRINGP ); break; case 5: intin[2] = va_arg( ap, int ); intin[3] = va_arg( ap, int ); intin[4] = va_arg( ap, int ); intin[5] = va_arg( ap, int ); break; case 14: *(char far **)(intin + 2) = va_arg( ap, STRINGP ); intin[4] = va_arg( ap, int ); } va_end( ap ); AES( 105, 6, 1, 0, 0 ); return intout[0]; /* = wi_sreturn: positiv bei Erfolg, 0 bei Fehler */ }