/* * VSM_LOCATOR (C) Digital Design 1990 * * INPUT LOCATOR, SAMPLE MODE * * Der Grafikcursor wird von einem Interrupt gesteuert. Das heit, das * Programm mu die Bewegung des Cursors nicht koordinieren. Der Anwen- * der kann den Cursor bewegen, auch wenn das Programm gerade mit * Anderem besch„ftigt ist. Diese Funktion nun erm”glicht jederzeit * festzustellen, was sich in der Zwischenzeit getan hat. Der Funktion * wird eine initialisierende Koordinate bergeben. Die Funktion gibt * dann zurck, ob die Koordinaten, also die Position des Grafikcursors, * ge„ndert wurde und ob eine Taste bet„tigt wurde. Die entsprechende * ge„nderte Position und die bet„tigte Taste werden selbstverst„ndlich * auch bermittelt. */ #include int vsm_locator( int handle, int x, int y, int *xout, int *yout, int *term ) { ptsin[0] = x; /* initialisierende Position des Grafikcursors * * (x-Koordinate) */ ptsin[1] = y; /* initialisierende Position des Grafikcursors * * (y-Koordinate) */ VDI( 28, 1, 0, handle ); *term = intout[0]; /* Funktions-Ende-Taste: * * Im Low-Byte dieses Parameters wird der ASCII- * * Code der Taste eingetragen, die bet„tigt wurde * * (z.B. RETURN = 13). Spezielle Ende-Tasten sind * * z.B. die beiden Maus-Kn”pfe oder Tasten eines * * Grafiktabletts. Der Code dieser Tasten beginnt * * ab 20h (32). Die linke Taste der Maus hat den * * Code 20h (32), die rechte 21h (33). */ *xout = ptsout[0]; /* neue x-Position */ *yout = ptsout[1]; /* neue y-Position */ return (contrl[2] | (contrl[4] << 1)); /* = status: * * contrl[2]: 1 = Koordinaten sind ge„ndert worden * * 0 = Koordinaten sind nicht ge„ndert worden * * contrl[4]: 1 = Taste wurde bet„tigt * * 0 = keine Taste wurde bet„tigt */ } /* siehe auch: İvrq_locatorİVRQ_LOCA.Cİ, İvsin_modeİVSIN_MOD.Cİ */