@Grzegorz Kraszewski, post #3
@kiero, post #2
#define MEMTRACK #include#include #include #include #include #include #include Object *winTest, *appTest, *Listview; struct Library *MUIMasterBase, *UtilityBase; // ============================================================================ static ULONG ListConstructor(struct Hook *h, APTR mempool, STRPTR str) { char *tekst_copy = NULL; if ((tekst_copy = AllocPooled(mempool, strlen(str) + 1))) strcpy(tekst_copy, str); return ((ULONG) tekst_copy); } static struct Hook h_ListConstructor = { {0, 0}, (HOOKFUNC) HookEntry, (HOOKFUNC) ListConstructor }; // ---------------------------------------------------------------------------- static ULONG ListDestructor(struct Hook *h, APTR mempool, STRPTR str) { if (str) FreePooled(mempool, str, strlen(str) + 1); return (0); } static struct Hook h_ListDestructor = { {0, 0}, (HOOKFUNC) HookEntry, (HOOKFUNC) ListDestructor }; // ============================================================================ ULONG BuildApplication (void) { appTest = MUI_NewObject (MUIC_Application, MUIA_Application_Window, winTest = MUI_NewObject (MUIC_Window, MUIA_Window_RootObject, MUI_NewObject (MUIC_Group, MUIA_Group_Child, Listview = MUI_NewObject (MUIC_Listview, MUIA_Listview_List, MUI_NewObject (MUIC_List, MUIA_List_ConstructHook, &h_ListConstructor, MUIA_List_DestructHook, &h_ListDestructor, MUIA_Frame, MUIV_Frame_ReadList, TAG_END), TAG_END), TAG_END), TAG_END), TAG_END); return ((ULONG) appTest); } // ============================================================================ void SetNotifications (void) { DoMethod (winTest, MUIM_Notify, MUIA_Window_CloseRequest, MUIV_EveryTime, appTest, 2, MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit); return; } // ============================================================================ void MainLoop (void) { long signals; SetAttrs (winTest, MUIA_Window_Open, TRUE, TAG_END); while (DoMethod (appTest, MUIM_Application_NewInput, &signals) != MUIV_Application_ReturnID_Quit) { if (signals) { signals = Wait (signals | SIGBREAKF_CTRL_C); if (signals & SIGBREAKF_CTRL_C) break; } } SetAttrs (winTest, MUIA_Window_Open, FALSE, TAG_END); return; } // ============================================================================ int main (void) { PrepareMemTrack("test", RESF_CLEANUP & REFS_WALL); if ((IntuitionBase = (struct IntuitionBase*)OpenLibrary ("intuition.library", 37))) { if ((UtilityBase = OpenLibrary ("utility.library", 37))) { if ((MUIMasterBase = OpenLibrary ("muimaster.library", 19))) { if (BuildApplication ()) { SetNotifications (); DoMethod(Listview, MUIM_List_InsertSingle, "przykładowy tekst", MUIV_List_Insert_Top); MainLoop (); MUI_DisposeObject (appTest); } CloseLibrary (MUIMasterBase); } CloseLibrary (UtilityBase); } CloseLibrary ((struct Library*)IntuitionBase); } EndMemTrack(); return (0); }
@Kamul, post #6
@Grzegorz Kraszewski, post #5
@kiero, post #8
@MinisterQ, post #12
@Kamul, post #15
@kiero, post #16
@Kamul, post #17