/* Listing #11 */ #include #include #include #include struct IntuitionBase *IntuitionBase; struct Library *GadToolsBase; struct NewMenu tabnm[]= { {NM_TITLE, "Projekt"}, {NM_ITEM, "Otworz...", "O", 0, 0, "Otwarcie pliku"}, {NM_ITEM, NM_BARLABEL}, {NM_ITEM, "Zapisz", "S", 0, 0, "Zapis pliku"}, {NM_ITEM, "Zapisz jako...", "A", 0, 0, "Zapis pliku pod nowa nazwa"}, {NM_ITEM, NM_BARLABEL}, {NM_ITEM, "Skoncz", "Q", 0, 0, "Wyjscie z programu"}, {NM_TITLE, "Edycja"}, {NM_ITEM, "Tryb"}, {NM_SUB, "Wstawianie", "W", CHECKIT | CHECKED, 2, "Tryb wstawiania"}, {NM_SUB, "Nadpisywanie", "N", CHECKIT, 1, "Tryb nadpisywania"}, {NM_ITEM, NM_BARLABEL}, {NM_ITEM, "Zwykly", "P", CHECKIT | CHECKED, 8|16|32, "\033[0mKroj zwykly"}, {NM_ITEM, "Wytluszczony", "B", CHECKIT, 4, "\033[1mKroj wytluszczony"}, {NM_ITEM, "Kursywa", "I", CHECKIT, 4, "\033[3mKroj pochylony"}, {NM_ITEM, "Podkreslony", "U", CHECKIT, 4, "\033[4mKroj podkreslony"}, NM_END }; struct Menu *menu; struct Screen *pubscr; void *vi; struct Window *okno; int main(int argc, char *argv[]) { check_os(OS_20); IntuitionBase=(struct IntuitionBase*)OpenLibrary("intuition.library", 37); GadToolsBase=OpenLibrary("gadtools.library", 37); if (menu=CreateMenusA(tabnm, 0)) { if (pubscr=LockPubScreen(0)) { if (vi=GetVisualInfoA(pubscr, 0)) { LayoutMenus(menu, vi, GTMN_NewLookMenus, TRUE, TAG_DONE); if (okno=OpenWindowTags(0, WA_Height, pubscr->Height/2, WA_Flags, WFLG_DRAGBAR | WFLG_CLOSEGADGET | WFLG_DEPTHGADGET | WFLG_ACTIVATE, WA_IDCMP, IDCMP_CLOSEWINDOW | IDCMP_MENUPICK, WA_NewLookMenus, TRUE, WA_PubScreen, pubscr, TAG_DONE)) { char koniec=0; SetMenuStrip(okno, menu); for (; !koniec;) { struct IntuiMessage *msg; WaitPort(okno->UserPort); if (msg=(struct IntuiMessage*)GetMsg(okno->UserPort)) { ULONG Clas=msg->Class; UWORD Code=msg->Code; ReplyMsg((struct Message*)msg); switch (Clas) { case IDCMP_CLOSEWINDOW: koniec=1; break; case IDCMP_MENUPICK: while (Code!=MENUNULL) { struct MenuItem *item=ItemAddress(menu, Code); printf("%s\n", GTMENUITEM_USERDATA(item)); if (Code==FULLMENUNUM(0, 5, NOSUB)) /* Pozycja "Skoncz" */ koniec=1; Code=item->NextSelect; } } } } printf("Tryb wstawiania %sjest wlaczony\n", (ItemAddress(menu, FULLMENUNUM(1, 0, 0))->Flags & CHECKED) ? "" : "nie "); ClearMenuStrip(okno); CloseWindow(okno); } FreeVisualInfo(vi); } UnlockPubScreen(0, pubscr); } FreeMenus(menu); } CloseLibrary(GadToolsBase); CloseLibrary((struct Library*)IntuitionBase); return 0; }