跳到内容

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)
华夏公益教科书