home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 2001 December
/
pcwk12201b.iso
/
Reklamy
/
CAD-Projekt
/
MegaCAD-4_5
/
CC
/
LEKCJA13.C_
/
LEKCJA13.C
Wrap
C/C++ Source or Header
|
1995-09-01
|
3KB
|
86 lines
/* LEKCJA13.C
//---------------------------------------------------------------------------
Temat:
Wybór wielu elementów 'SelectLoop'
//---------------------------------------------------------------------------
Funkcje:
EXT(225) void SelectInit(
EXT(226) void SelectLoop(
//---------------------------------------------------------------------------
EXT(226) void SelectLoop( //
tCallBack func, // funkcja Callback
void *para, // wska½nik dla funkcji Callback
void *edta, // bufor dla danych tymczasowych
ushort esiz); // wielkoÿå bufora
Opis:
Funkcja pozwala u╛ytkownikowi wybieraå elementy przy pomocy opcji.
przeszukuje caêÑ list⌐ elementów rysunku.
Jakie elementy sÑ dozwolone musi byå wczeÿniej ustalone przy pomocy
funkcji 'SelectInit()'.
Wywoêywana funkcja wewn⌐trzna sygnalizuje przy pomocy wartoÿci
return() jakie ma byå dalsze dziaêanie funkcji gêównej.
return(CONTINUE_LOOP) - kontynuacja p⌐tli
return(CALL_SAVECOUNT) - wywoêanie funkcji 'savecount()
return(BREAK_LOOP) - przerwanie p⌐tli
Przykêady wywoêania:
SelectLoop(SelPid,&ent,edta,sizeof(edta));
//---------------------------------------------------------------------------
EXT(225) void SelectInit( //
ulong filter); // filtr wybierajÑcy elementy
Opis:
Funkcja wskazuje elementy, które mogÑ byå wybierane przez u╛ytkownika
- podÿwietlone ikony typów elementów.
Przykêad wywoêania:
SelectInit(0xffffffff); // wszystkie typy podÿwietlone
*/
//---------------------------------------------------------------------------
#include "std.h"
#include "megatyp.h"
#include "megacad.h"
#define MAXPIDS 500
//---------------------------------------------------------------------------
char edta[32000]; // bufor dla danych wirtualnych
ulong pids[MAXPIDS]; // maksimum 500 elementów
ushort pidnum; // licznik wczytanych elementów
//---------------------------------------------------------------------------
short SelPid(void *argptr )
{
t_entity *ent;
ent = argptr;
pids[pidnum] = ent->id;
pidnum++;
if(pidnum == MAXPIDS)
return(BREAK_LOOP);
else
return(CONTINUE_LOOP);
}
//---------------------------------------------------------------------------
short DoDraw(void *ptr )
{
DrawEntities(pids,pidnum);
}
//---------------------------------------------------------------------------
short main(char *filename,char *args)
{
t_entity ent;
pidnum = 0;
SetFuncText("migotanie");
MouseHelp("wybór elementów","miganie",HLP_INV(0,0,0));
SelectInit((1<<E_LINE)|(1<<E_POINT));
// znalezienie elementu powoduje wywoêanie 'SelPid'
SelectLoop(SelPid,&ent,edta,sizeof(edta));
Blink(DoDraw,NULL);
return(0);
}
//---------------------------------------------------------------------------