Order of the Butterfly
Posts: 459 from 2003/2/24
From: Berlin
[quote]r-tea wrote:
[quote]igracki wrote:
Also better use subclassing, then you can use own methods instead of hooks.[/quote]
But hooks are better than putting all the handling stuff into MUI's main loop in SELECT CASE ENDSELECT block, and that was the way I did in my very first E/MUI programming attempts

There's still something wrong in my code. Now the hook is executed each time the color changes, but it allways returns the same color value.
And I forgot to mention now I use ECX to make use of your Lamp module.
[/quote][/quote]
When using subclassing, the main MUI "loop" looks like this:
Code:
DoMethod(app, MUIM_Application_Run)
Here is an example of how a MUI program in ecx looks like (with my own mui extensions):
The main source:
Code:
OPT PREPROCESS, STACK = 32678 -> SEHR WICHTIG! Sonst gibts Hits, wenn AboutMUI oder meine AboutBox offen war!!!
OPT EXENAME = 'ofdbMUI'
MODULE '*mods/myApp' -> APP_NAME, APP_AUTHOR, APP_VER
MODULE 'dos/dos', 'dos/rdargs'
MODULE 'muimaster', 'new/muimaster'
MODULE 'utility/tagitem', 'amigalib/boopsi' -> for doSuperMethodA
-> my own public modules
MODULE 'libMUI', 'mccSupport', 'muiSupport'
MODULE 'myDebug', 'ezRequester'
MODULE '*mods/lstMovies_mcc', '*mods/winMain_mcc', '*mods/app_mcc'
-> shell args stuff
#define ARGS_TEMPLATE 'E-Source/M,VERBOSE/S'
OBJECT myArgs
srcs: PTR TO LONG -> the source file(s)
verbose
ENDOBJECT
VERBOSE MACRO IF args.verbose = DOSTRUE THEN 1
DEF
rda = NIL: PTR TO rdargs, args: PTR TO myArgs
PROC main() HANDLE
DEF app=NIL
NEW args
IFN rda := ReadArgs(ARGS_TEMPLATE, args, NIL) THEN Raise("ARGS")
OpenMuiMasterLib()
InitClasses 3
AddNewClass MyApp
AddNewClass WinMain
AddNewClass LstMovies
IF ClassesSetup()
app := MyAppObject, End
IFN app THEN Raise("APP")
set(winMain, MUIA_Window_Open, MUI_TRUE)
DoMethod(app, MUIM_Application_Run)
set(winMain, MUIA_Window_Open, FALSE)
ELSE
PrintF('ClassesSetup() failed!!!n')
ENDIF
EXCEPT DO
SELECT exception
CASE "ARGS"; DOSError(NIL)
CASE "APP" ; PrintF('ERROR: Failed to create Application!n')
ENDSELECT
IF rda THEN FreeArgs(rda)
END args
IF app THEN MUI_DisposeObject(app)
ClassesCleanup()
CloseMuiMasterLib()
ENDPROC
In this module I put all methods of all my subclasses, so I need to import only this module:
Code:
OPT MODULE, MODNAME='myApp'
OPT PREPROCESS, EXPORT
MODULE 'utility/tagitem', 'intuition/classes', 'workbench/workbench'
MODULE 'libMUI', 'mccSupport', 'muiSupport'
CONST MUISN_IGRACKI = <put your own mui serial here!>
CONST TAGBASE_IGRACKI = TAG_USER OR (MUISN_IGRACKI SHL 16)
-> change these 3 defines
#define APP_VER '1.0'
#define APP_NAME 'ofdbMUI' -> CHANGEME
#define APP_AUTHOR 'Thomas Igracki' -> CHANGEME
#define APP_VERSION '$VER: ' + APP_NAME + '_' + __TARGET__ + ' ' + APP_VER + ' ' + __AMIGADATE__ + ' by ' + APP_AUTHOR + '