home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 2001 December
/
pcwk12201b.iso
/
Reklamy
/
CAD-Projekt
/
MegaCAD-4_5
/
CC
/
LEKCJA09.C_
/
LEKCJA09.C
Wrap
C/C++ Source or Header
|
1996-07-21
|
4KB
|
120 lines
/* LEKCJA09.C
//---------------------------------------------------------------------------
Temat:
Element wielokrotny - wywoêanie funkcji wirtualnej
//---------------------------------------------------------------------------
Funkcje:
EXT(209) short GetPnt(
EXT(201) short GetPntInv(
EXT(205) void StoreMultiple(
//---------------------------------------------------------------------------
EXT(209) short GetPnt( //
double *pkt, // wartoÿci wspóêrz⌐dnych (x,y)
short setinc); // ukêad odniesienia
Opis:
Funkcja wczytuje wartoÿci wskazanego punktu zgodnie z ustawionÑ opcjÑ
wychwytu.
Dla wartoÿci absolutnych setinc=0 dla êaΣcuchowych setinc=1
Return:
TRUE => po naciÿni⌐ciu lewego klawisza myszy
FALSE => po naciÿni⌐ciu prawego klawisza myszy
Przykêad wywoêania:
a=GetPnt(&pkt,1);
//---------------------------------------------------------------------------
EXT(201) short GetPntInv( //
double *pkt, // wartoÿci absolutne lub êaΣcuchowe
short setinc, // Inkrementalpunkt miführen ?
tCallBack func, // wywoêywana funkcja
void *para); // wska½nik wywoêywanej funkcji
Opis:
Funkcja wczytuje wartoÿci wskazanego punktu zgodnie z ustawionÑ opcjÑ
wychwytu.
Ka╛de poruszenie myszy powoduje wywoêanie funkcji 'tCallBack' w której
mogÑ byå dokonywane obliczenia i wizualizacja. Jej wartoÿå 'return'
nie jest brana pod uwag⌐.
Dla wartoÿci absolutnych setinc=0 dla êaΣcuchowych setinc=1
Return:
TRUE => po naciÿni⌐ciu lewego klawisza myszy
FALSE => po naciÿni⌐ciu prawego klawisza myszy
Przykêad wywoêania:
if ( GetPntInv(&c1.xm,0,MrkCir,&c1))
//---------------------------------------------------------------------------
EXT(205) void StoreMultiple( //
double *data, // dane elementu
ushort type); // typ z parametrem DO_SAVCNT
Opis:
Funkcja tworzy element wielokrotny (o ile sterujÑca ikona zostaêa
uaktywniona).
W przypadku linii, okr⌐gu, êuku, elipsy oraz wycinka elipsy, mo╛na
uaktywniå klawisz 'element wielokrotny', wtedy b⌐dzie rysowanych kilka
"równolegêych" elementów.
Typ nale╛y podanå wraz z DO_SAVCNT - automatycznie uruchomiona b⌐dzie po
stworzeniu elementu funkcja dopisania go do listy 'savecount'.
Przykêad wywoêania:
StoreMultiple(&c1.xm,E_CIRCLE | DO_SAVCNT);
*/
//---------------------------------------------------------------------------
#include "std.h"
#include "megatyp.h"
#include "megacad.h"
//---------------------------------------------------------------------------
short MrkCir(
void *argptr )
{
t_circle *p;
p = argptr;
// der Kreis wird in weiß gezeichnet
DrawInv(E_CIRCLE,p,LMODE(0,PIX_XOR,BRIGHT_WHITE,0),E_CIRCLE);
return(0);
}
//---------------------------------------------------------------------------
short main(char *filename, char *args)
{
t_circle c1;
t_dlgdta dlg;
char tekst[50];
c1.rd = 5.0;
strcpy(dlg.text,"promieΣ=");
dlg.type = DLG_LEN;
dlg.val = &c1.rd;
while ( DlgInput(1,"Kreis",&dlg) )
{
for ( ; ; )
{
SetFuncText("okr⌐gi wspóêÿrodkowe");
MouseHelp("postaw","powrót",HLP_INV(RED,WHITE,0));
// okrÑg jest 'przyklejony do kursora
if ( GetPntInv(&c1.xm,0,MrkCir,&c1) )
{
// zapami⌐tanie okr⌐gu
StoreMultiple(&c1.xm,E_CIRCLE | DO_SAVCNT);
}
else
{
sprintf(tekst,"x=%f y=%f", c1.xm, c1.ym);
Message("wspóêrz⌐dne ostatniego okr⌐gu:",
tekst,NULL,NULL,"ok",3);
break;
}
}
}
return(0);
}
//---------------------------------------------------------------------------