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
C/C++ Source or Header  |  1995-09-01  |  3KB  |  86 lines

  1. /*                      LEKCJA13.C
  2. //---------------------------------------------------------------------------
  3. Temat:
  4.         Wybór wielu elementów 'SelectLoop'
  5. //---------------------------------------------------------------------------
  6. Funkcje:
  7.         EXT(225) void SelectInit(     
  8.         EXT(226) void SelectLoop(     
  9. //---------------------------------------------------------------------------
  10.  
  11. EXT(226) void SelectLoop(      // 
  12.              tCallBack func,   // funkcja Callback 
  13.              void      *para,  // wska½nik dla funkcji Callback 
  14.              void      *edta,  // bufor dla danych tymczasowych
  15.              ushort    esiz);  // wielkoÿå bufora
  16.  
  17. Opis:
  18.     Funkcja pozwala u╛ytkownikowi wybieraå elementy przy pomocy opcji.
  19.     przeszukuje caêÑ list⌐ elementów rysunku.
  20.     Jakie elementy sÑ dozwolone musi byå wczeÿniej ustalone przy pomocy 
  21.     funkcji 'SelectInit()'.
  22.     Wywoêywana funkcja wewn⌐trzna sygnalizuje przy pomocy wartoÿci
  23.     return() jakie ma byå dalsze dziaêanie funkcji gêównej.
  24.  
  25.     return(CONTINUE_LOOP)  - kontynuacja p⌐tli
  26.     return(CALL_SAVECOUNT) - wywoêanie funkcji 'savecount()
  27.     return(BREAK_LOOP)     - przerwanie p⌐tli
  28.  
  29. Przykêady wywoêania:
  30.     SelectLoop(SelPid,&ent,edta,sizeof(edta));
  31. //---------------------------------------------------------------------------
  32.  
  33. EXT(225) void SelectInit(       // 
  34.              ulong     filter); // filtr wybierajÑcy elementy
  35.  
  36. Opis:
  37.     Funkcja wskazuje elementy, które mogÑ byå wybierane przez u╛ytkownika
  38.     - podÿwietlone ikony typów elementów.
  39.  
  40. Przykêad wywoêania:
  41.     SelectInit(0xffffffff);      // wszystkie typy podÿwietlone
  42. */
  43.  
  44. //---------------------------------------------------------------------------
  45. #include "std.h"
  46. #include "megatyp.h"
  47. #include "megacad.h"
  48. #define MAXPIDS 500
  49. //---------------------------------------------------------------------------
  50. char edta[32000];       // bufor dla danych wirtualnych
  51. ulong pids[MAXPIDS];    // maksimum 500 elementów
  52. ushort pidnum;          // licznik wczytanych elementów
  53. //---------------------------------------------------------------------------
  54. short SelPid(void *argptr )
  55. {
  56.     t_entity  *ent;
  57.  
  58.     ent = argptr;
  59.     pids[pidnum] = ent->id;
  60.     pidnum++;
  61.     if(pidnum == MAXPIDS)
  62.         return(BREAK_LOOP);
  63.     else
  64.         return(CONTINUE_LOOP);
  65. }
  66. //---------------------------------------------------------------------------
  67. short DoDraw(void *ptr )
  68. {
  69.     DrawEntities(pids,pidnum);
  70. }
  71. //---------------------------------------------------------------------------
  72. short main(char *filename,char *args)
  73. {
  74.     t_entity ent;
  75.  
  76.     pidnum = 0;
  77.     SetFuncText("migotanie");
  78.     MouseHelp("wybór elementów","miganie",HLP_INV(0,0,0));
  79.     SelectInit((1<<E_LINE)|(1<<E_POINT));
  80.               // znalezienie elementu powoduje wywoêanie 'SelPid'        
  81.     SelectLoop(SelPid,&ent,edta,sizeof(edta));
  82.     Blink(DoDraw,NULL);
  83.     return(0);
  84. }
  85. //---------------------------------------------------------------------------
  86.