MONITOR">
Subsections
Ramka (FRAME) jest to pojęcie oznaczające okienko na ekranie. Ramka składa się z:
Są to ramki, tworzące główne okno programu. Składają się one z elementów wymienionych powyżej. Ich obszar właściwy jest pusty.
Są to ramki pomocnicze, pomocne przy ustawianiu opcji, zmianie parametrów programu, wprowadzaniu danych i.t.p. Ramka ta nie posiada narożników zmiany rozmiaru, ani przycisku zwijania w ikonę, za to posiada pinezkę (PIN) pozwalający ją przyszpilić. Ramka ta ma automatycznie tworzony obszar przycisków (PANEL) w obszarze właściwym.
#include <xview/xview.h> ... Frame frame; frame = (Frame)xv_create( NULL , FRAME ,<atrybuty> , NULL ); ...
#include <xview/xview.h> ... Frame frame_cmd; frame_cmd = (Frame)xv_create( frame , FRAME_CMD ,<atrybuty> , NULL ); ...
|
Panel (PANEL) czyli obszar przycisków pozwala na stworzenie różnych obiektów, służących do np. ustawiania opcji, uruchamiania innych funkcji programu, wczytywania danych. Obiektami tymi są:
#include <xview/panel.h> ... Panel panel; panel = (Panel)xv_create( frame , PANEL , <atrybuty> , NULL ); ...
#include <xview/panel.h> ... Panel panel_obiekt; panel_obiekt = (Panel)xv_create( panel , <typ panela> , <atrybuty> , NULL ); ...Jako
<typ panela> należy wpisać dowolny z obiektów
, wymienionych powyżej. Niektóre atrybuty paneli są przedstawione
w tablicy A.2.
Płachta (CANVAS) jest to nazwa obszaru, w którym można tworzyć rysunki. Obszar ten powinien być umieszczony w obszarze właściwym ramki. W obszarze tym możemy korzystać z różnych funkcji powodujących np. rysowanie linii (ciągłej lub przerywanej), przenoszenie części obszaru w inne miejsce itp.
#include <xview/canvas.h> ... Canvas canvas; ... canvas = (Canvas)xv_create( frame , CANVAS , <atrybuty> , NULL )
|
W obszarze graficznym istnieje możliwość obsługi różnych zdarzeń takich jak np. ruch myszką (LOC_MOVE), zmiana rozmiarów okienka (WIN_RESIZE), przeniesienie kursora poza obszar okienka (LOC_WINEXIT), wciśnięcie lewego klawisza myszy (MS_MIDDLE) i wiele innych. Aby zarejestrować procedurę obsługi zdarzeń należy wpisać do programu:
xv_set(canvas_paint_window(canvas),
WIN_EVENT_PROC, <nazwa procedury>,
WIN_CONSUME_EVENTS,
<pierwsze zdarzenie> , ... , <i-te zdarzenie> , ... , <n-te zdarzenie>
NULL,
NULL);
gdzie <i-te zdarzenie> jest którymś z
symboli zdarzenia wymienionych powyżej, zaś <nazwa
procedury> jest identifikatorem funkcji obsługującej
zdarzenia.
Procedura obsługi zdarzeń może wyglądać
następująco:
void <nazwa procedury>(window, event)
Xv_Window window;
Event *event;
{
...
/* Odczytanie kodu klawisza */
if(event_is_ascii(event))
printf("Wcisnieto klawisz %c na klawiaturze\n",event_action(event));
...
switch((event_action(event)) {
/* Odczytanie pozycji kursora */
case LOC_MOVE:
printf("X = %d Y = %d\n",event_x(event), event_y(event));
break;
...
}
Procedura do przerysowywania może wyglądać następująco:
void <nazwa procedury>(canvas, canvas_pw, repaint_area)
Canvas canvas;
Pixwin *canvas_pw;
Rectlist *repaint_area;
{
...
static Pr_brush brush = {1}; /*grubosc linii przerywanej*/
static short dashed[] = {1,3,0}; /*struktura linii przerywanej*/
static Pr_texture tex = {dashed, 0, 0, 0, 0, 0, 0, 0 };
...
/* rysujemy linie przerywana od punktu (x1,y1) do punktu (x2,y2) */
pw_line( canvas_pw, <x1> , <x2>, <y1> , <y2> , &brush , &tex , PIX_SET );
...
/* rysujemy linie ciagla od punktu (x1,y1) do punktu (x2,y2) */
pw_vector( canvas_pw , <x1> , <y1> , <x2> , <y2> , PIX_SRC, 1 );
...
/*wypisujemy tekst w pozycji (x,y)*/
pw_text( canvas_pw, <x> , <y> , PIX_SRC, NULL , <tekst> );
...
}
#include <xview/xview.h>
...
char plik_z_ikona = {
#include "<nazwa pliku z wzorem ikony>"
}
...
Server_image icon_image;
Icon icon;
icon_image = (Server_image)xv_create( NULL , SERVER_IMAGE ,
SERVER_IMAGE_BITS , icon_file ,
SERVER_IMAGE_DEPTH , 1 ,
XV_WIDTH , 64 ,
XV_HEIGHT , 64 ,
NULL );
icon = (Icon)xv_create( NULL , ICON ,
ICON_IMAGE , icon_image ,
ICON_TRANSPARENT , TRUE ,
NULL );
...
xv_set( frame , FRAME_ICON , icon );
#include <xview/xview.h> ... Menu menu; menu = (Menu)xv_create( NULL , MENU , <atrybuty> , NULL ); ...
|