Aros/开发者/文档/库/MUIMaster
外观
所有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)