home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Amiga Shareware Floppies / ma45.dms / ma45.adf / Listingi / MagazynAMIGA4 / KursC-11.c < prev    next >
C/C++ Source or Header  |  2002-10-23  |  3KB  |  101 lines

  1. /* Listing #11 */
  2.  
  3. #include <proto/exec.h>
  4. #include <proto/gadtools.h>
  5. #include <proto/intuition.h>
  6.  
  7. #include <stdio.h>
  8.  
  9. struct IntuitionBase *IntuitionBase;
  10. struct Library *GadToolsBase;
  11.  
  12. struct NewMenu tabnm[]=
  13. {
  14.     {NM_TITLE, "Projekt"},
  15.     {NM_ITEM, "Otw¢rz...", "O", 0, 0, "Otwarcie pliku"},
  16.     {NM_ITEM, NM_BARLABEL},
  17.     {NM_ITEM, "Zapisz", "S", 0, 0, "Zapis pliku"},
  18.     {NM_ITEM, "Zapisz jako...", "A", 0, 0, "Zapis pliku pod now¥ nazw¥"},
  19.     {NM_ITEM, NM_BARLABEL},
  20.     {NM_ITEM, "Skoäcz", "Q", 0, 0, "Wyj˜cie z programu"},
  21.     {NM_TITLE, "Edycja"},
  22.     {NM_ITEM, "Tryb"},
  23.     {NM_SUB, "Wstawianie", "W", CHECKIT | CHECKED, 2, "Tryb wstawiania"},
  24.     {NM_SUB, "Nadpisywanie", "N", CHECKIT, 1, "Tryb nadpisywania"},
  25.     {NM_ITEM, NM_BARLABEL},
  26.     {NM_ITEM, "Zwykˆy", "P", CHECKIT | CHECKED, 8|16|32, "\033[0mKr¢j zwykˆy"},
  27.     {NM_ITEM, "Wytˆuszczony", "B", CHECKIT, 4, "\033[1mKr¢j wytˆuszczony"},
  28.     {NM_ITEM, "Kursywa", "I", CHECKIT, 4, "\033[3mKr¢j pochylony"},
  29.     {NM_ITEM, "Podkre˜lony", "U", CHECKIT, 4, "\033[4mKr¢j podkre˜lony"},
  30.     NM_END
  31. };
  32.  
  33. struct Menu *menu;
  34. struct Screen *pubscr;
  35. void *vi;
  36. struct Window *okno;
  37.  
  38. int main(int argc, char *argv[])
  39. {
  40.     check_os(OS_20);
  41.     IntuitionBase=(struct IntuitionBase*)OpenLibrary("intuition.library", 37);
  42.     GadToolsBase=OpenLibrary("gadtools.library", 37);
  43.     if (menu=CreateMenusA(tabnm, 0))
  44.     {
  45.         if (pubscr=LockPubScreen(0))
  46.         {
  47.             if (vi=GetVisualInfoA(pubscr, 0))
  48.             {
  49.                 LayoutMenus(menu, vi, GTMN_NewLookMenus, TRUE, TAG_DONE);
  50.                 if (okno=OpenWindowTags(0,
  51.                 WA_Height, pubscr->Height/2,
  52.                 WA_Flags, WFLG_DRAGBAR | WFLG_CLOSEGADGET | WFLG_DEPTHGADGET | WFLG_ACTIVATE,
  53.                 WA_IDCMP, IDCMP_CLOSEWINDOW | IDCMP_MENUPICK,
  54.                 WA_NewLookMenus, TRUE,
  55.                 WA_PubScreen, pubscr,
  56.                 TAG_DONE))
  57.                 {
  58.                     char koniec=0;
  59.                     SetMenuStrip(okno, menu);
  60.                     for (; !koniec;)
  61.                     {
  62.                         struct IntuiMessage *msg;
  63.                         WaitPort(okno->UserPort);
  64.                         if (msg=(struct IntuiMessage*)GetMsg(okno->UserPort))
  65.                         {
  66.                             ULONG Clas=msg->Class;
  67.                             UWORD Code=msg->Code;
  68.                             ReplyMsg((struct Message*)msg);
  69.                             switch (Clas)
  70.                             {
  71.                                 case IDCMP_CLOSEWINDOW:
  72.                                     koniec=1;
  73.                                     break;
  74.                                 case IDCMP_MENUPICK:
  75.                                     while (Code!=MENUNULL)
  76.                                     {
  77.                                         struct MenuItem *item=ItemAddress(menu, Code);
  78.                                         printf("%s\n", GTMENUITEM_USERDATA(item));
  79.                                         if (Code==FULLMENUNUM(0, 5, NOSUB))
  80.                                             /* Pozycja "Skoäcz" */
  81.                                             koniec=1;
  82.                                         Code=item->NextSelect;
  83.                                     }
  84.                             }
  85.                         }
  86.                     }
  87.                     printf("Tryb wstawiania %sjest wˆ¥czony\n", (ItemAddress(menu, FULLMENUNUM(1, 0, 0))->Flags & CHECKED) ? "" : "nie ");
  88.                     ClearMenuStrip(okno);
  89.                     CloseWindow(okno);
  90.                 }
  91.                 FreeVisualInfo(vi);
  92.             }
  93.             UnlockPubScreen(0, pubscr);
  94.         }
  95.         FreeMenus(menu);
  96.     }
  97.     CloseLibrary(GadToolsBase);
  98.     CloseLibrary((struct Library*)IntuitionBase);
  99.     return 0;
  100. }
  101.