跳到內容

Aros/開發者/文件/庫/MUIMaster

來自華夏公益教科書
Aros華夏公益教科書的導航欄
Aros使用者
Aros使用者文件
Aros使用者常見問題解答
Aros使用者應用程式
Aros使用者DOS Shell
Aros/使用者/AmigaLegacy
Aros開發文件
Aros開發者文件
從AmigaOS/SDL移植軟體
為Zune初學者
Zune .MUI類
為SDL初學者
Aros開發者構建系統
特定平臺
Aros x86完整系統HCL
Aros x86音訊/影片支援
Aros x86網路支援
Aros Intel AMD x86安裝
Aros儲存支援IDE SATA等
Aros Poseidon USB支援
x86-64支援
摩托羅拉68k Amiga支援
Linux和FreeBSD支援
Windows Mingw和MacOSX支援
Android支援
Arm Raspberry Pi支援
PPC Power Architecture
其他
Aros公共許可證

所有muimaster庫在MUI_MakeObjectA()之後的偏移量都是錯誤的。MUI_MakeObjectA和MUI_Layout()之間應該有4個私有條目。注意:在MUI_Layout()之後,而不是MUI_MakeObjectA()之後,我這次眼瞎了:)(Bernd Roesch在2006年注意到了這一點,並沒有發生太多的事情)。你總是可以擁有多個.conf檔案,根據具體的埠使用它們,或者你可以修改構建過程,在解析它們之前預處理這些檔案,或者...

這破壞了所有本地m68k MUI自定義類(通常是透過破壞堆疊或在某些圖形庫區域例程中崩潰,難怪我的除錯嘗試毫無意義)

那麼,在不破壞所有現有埠的情況下,解決方案是什麼?只為m68k埠注入4個虛假條目?PPC埠也是一樣... 更好的是,為AROS預ABIv1新增一個ifdef。我認為.conf檔案不支援特定於埠的更改?(muimaster.conf在MUI_Layout之後需要4個空行)。

你可以在*.conf檔案中使用'#ifdef'嗎?!

另外,那些帶有偏移數字的AROS_LHx()宏怎麼辦?偏移數字本身可以是宏。至於.conf檔案,我不認為你可以(Staf?),但你可以用正常的預處理器預處理它們(再次,Staf?:) 不,但是你可以指定build_module的conffile選項。你應該能夠在mmakefile.src中做類似的事情(未經測試)。

ifeq($(AROS_TARGET_CPU), m68k)
CONFFILE := muimaster_m68k.conf
else
CONFFILE := muimaster.conf
endif

%build_module ...\
    conffile=$(CONFFILE)

Or this ;-)

ifeq($(AROS_TARGET_CPU), i386)
CONFFILE := muimaster_i386.conf
else
CONFFILE := muimaster.conf
endif

參考文獻

[編輯 | 編輯原始碼]
Object* MUI_NewObjectA(ClassID classid, struct TagItem* tags) (A0, A1)
void MUI_DisposeObject(Object* obj) (A0)

LONG MUI_RequestA(APTR app, APTR win, LONGBITS flags, CONST_STRPTR title, CONST_STRPTR gadgets, CONST_STRPTR format, APTR params) (D0, D1, D2, A0, A1, A2, A3)

APTR MUI_AllocAslRequest(unsigned long reqType, struct TagItem* tagList) (D0, A0)
BOOL MUI_AslRequest(APTR requester, struct TagItem* tagList) (A0, A1)
void MUI_FreeAslRequest(APTR requester) (A0)

LONG MUI_Error() ()
LONG MUI_SetError(LONG num) (D0)

struct IClass* MUI_GetClass(ClassID classid) (A0)
void MUI_FreeClass(Class* cl) (A0)

void MUI_RequestIDCMP(Object* obj, ULONG flags) (A0, D0)
void MUI_RejectIDCMP(Object* obj, ULONG flags) (A0, D0)

void MUI_Redraw(Object* obj, ULONG flags) (A0, D0)

struct MUI_CustomClass* MUI_CreateCustomClass(struct Library* base, ClassID supername, struct MUI_CustomClass* supermcc, ULONG datasize, APTR dispatcher) (A0, A1, A2, D0, A3)
BOOL MUI_DeleteCustomClass(struct MUI_CustomClass* mcc) (A0)

Object* MUI_MakeObjectA(LONG type, IPTR* params) (D0, A0)

BOOL MUI_Layout(Object* obj, LONG left, LONG top, LONG width, LONG height, ULONG flags) (A0, D0, D1, D2, D3, D4)

LONG MUI_ObtainPen(struct MUI_RenderInfo* mri, struct MUI_PenSpec* spec, ULONG flags) (A0, A1, D0)
void MUI_ReleasePen(struct MUI_RenderInfo* mri, LONG pen) (A0, D0)

APTR MUI_AddClipping(struct MUI_RenderInfo* mri, WORD left, WORD top, WORD width, WORD height) (A0, D0, D1, D2, D3)
void MUI_RemoveClipping(struct MUI_RenderInfo* mri, APTR handle) (A0, A1)
APTR MUI_AddClipRegion(struct MUI_RenderInfo* mri, struct Region* r) (A0, A1)
void MUI_RemoveClipRegion(struct MUI_RenderInfo* mri, APTR handle) (A0, A1)

BOOL MUI_BeginRefresh(struct MUI_RenderInfo* mri, ULONG flags) (A0, D0)
void MUI_EndRefresh(struct MUI_RenderInfo* mri, ULONG flags) (A0, D0)
華夏公益教科書