@igracki: you have right... i will propose a new code...
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <proto/exec.h>
#include <proto/intuition.h>
#include <proto/muimaster.h>
#include <proto/utility.h>
#include <proto/graphics.h>
#include <proto/dos.h>
#include <libraries/mui.h>
#include <clib/alib_protos.h>
#define MAKE_ID(a,b,c,d) ((ULONG) (a)<<24 | (ULONG) (b)<<16 | (ULONG) (c)<<8 | (ULONG) (d))
struct Library *MUIMasterBase;
struct Library *UtilityBase;
struct IntuitionBase *IntuitionBase;
struct GfxBase *GfxBase;
BOOL Open_Libs(void);
void Close_Libs(void);
void ShowAboutMUI(void);
Object *app, *window, *aboutwin;
int main(void)
{
Object *menu;
Object *menuItemQuit, *menuItemAbout;
BOOL running = TRUE;
ULONG signals;
if (!Open_Libs()) {
printf("Failed to open librariesn");
return 20;
}
app = ApplicationObject,
MUIA_Application_Title, "Simple MUI App",
MUIA_Application_Version, "$VER: SimpleMUIApp 1.0 (09.09.24)",
MUIA_Application_Copyright, "©2024 Your Name",
MUIA_Application_Author, "Your Name",
MUIA_Application_Description, "Simple MUI application with About",
MUIA_Application_Base, "SIMPLEMUIAPP",
SubWindow, window = WindowObject,
MUIA_Window_Title, "Simple MUI Window",
MUIA_Window_ID, MAKE_ID('S','I','M','P'),
MUIA_Window_Width, 400,
MUIA_Window_Height, 300,
WindowContents, VGroup,
// La fenêtre est vide, sans contenu
End,
End,
MUIA_Application_Menustrip, menu = MenustripObject,
Child, MenuObject,
MUIA_Menu_Title, "File",
Child, menuItemAbout = MenuitemObject,
MUIA_Menuitem_Title, "About MUI...",
End,
Child, menuItemQuit = MenuitemObject,
MUIA_Menuitem_Title, "Quit",
End,
End,
End,
End;
if (!app) {
printf("Failed to create applicationn");
Close_Libs();
return 20;
}
DoMethod(window, MUIM_Notify, MUIA_Window_CloseRequest, TRUE,
app, 2, MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit);
DoMethod(menuItemQuit, MUIM_Notify, MUIA_Menuitem_Trigger, MUIV_EveryTime,
app, 2, MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit);
DoMethod(menuItemAbout, MUIM_Notify, MUIA_Menuitem_Trigger, MUIV_EveryTime,
app, 2, MUIM_Application_ReturnID, 1);
set(window, MUIA_Window_Open, TRUE);
while (running) {
ULONG id = DoMethod(app, MUIM_Application_Input, &signals);
switch(id) {
case MUIV_Application_ReturnID_Quit:
if (MUI_RequestA(app, window, 0, "Quit?", "_Yes|_No", "33cAre you sure?", NULL) == 1)
running = FALSE;
break;
case 1: // About
ShowAboutMUI();
break;
}
if (running && signals) Wait(signals);
}
set(window, MUIA_Window_Open, FALSE);
MUI_DisposeObject(app);
Close_Libs();
return 0;
}
void ShowAboutMUI(void)
{
if (!aboutwin)
{
aboutwin = AboutmuiObject,
MUIA_Window_RefWindow, window,
MUIA_Aboutmui_Application, app,
End;
}
if (aboutwin)
set(aboutwin, MUIA_Window_Open, TRUE);
else
DisplayBeep(NULL);
}
BOOL Open_Libs(void)
{
if (!(IntuitionBase = (struct IntuitionBase *)OpenLibrary("intuition.library", 39))) return FALSE;
if (!(GfxBase = (struct GfxBase *)OpenLibrary("graphics.library", 39))) { CloseLibrary((struct Library *)IntuitionBase); return FALSE; }
if (!(UtilityBase = OpenLibrary("utility.library", 39))) { CloseLibrary((struct Library *)GfxBase); CloseLibrary((struct Library *)IntuitionBase); return FALSE; }
if (!(MUIMasterBase = OpenLibrary(MUIMASTER_NAME, 19))) { CloseLibrary(UtilityBase); CloseLibrary((struct Library *)GfxBase); CloseLibrary((struct Library *)IntuitionBase); return FALSE; }
return TRUE;
}
void Close_Libs(void)
{
if (MUIMasterBase) CloseLibrary(MUIMasterBase);
if (UtilityBase) CloseLibrary(UtilityBase);
if (GfxBase) CloseLibrary((struct Library *)GfxBase);
if (IntuitionBase) CloseLibrary((struct Library *)IntuitionBase);
}