如何在天然C 基础架构中解决实际的本机UI小部件
How are actual native UI widget resolved within the NativeUI C++ infrastructure?
我想知道并理解最终称为实际iOS/android/wp的代码,当使用Mosync代码库中的NativeUI C 类时。
我已经快速查看了github上的几堂课,例如button.cpp等,但是我无法轻易地看到如何引用真正的本机设备小部件。
我不是C/C 开发(Java),但我有点期望一些#IFDEF或某些东西可以"切换"各自的基础实现。如果不是这样,那我就可以了,请放纵我的好奇心。
提到的 button.cpp 的C 小部件类中有其subs类,in widget.cpp ,它基于一个基于一个窗口字符串参数。此外,通过字符串参数有效地设置了任何小部件属性。
my_button = new NativeUI::Widget("button")
my_button->setProperty("text", "OK");
mosync在 widgetfunctions.idl 中实现本机UI小部件的" IDL"接口:
typedef int MAWidgetHandle;
MAWidgetHandle maWidgetCreate(in MAString widgetType);
int maWidgetSetProperty(in MAWidgetHandle widget, in MAString property, in MAString value);
这是对功能的语言独立描述,它通过c调用接口从 nativeui :: widget 访问:
handle = maWidgetCreate("button");
maWidgetSetProperty(handle,"text","OK");
直到这里,我们都位于Mosync C/C 层上,这是具有系统调用接口的VM。从这里转换为其他方法的其他平台(Java,c#等)的语言:
它可以使用Java本机接口(JNI)在 mosyncnativeui.java中的Android运行时调用相应的功能::
public int maWidgetCreate(String type)
public int maWidgetSetProperty(int widgetHandle, String key, String value)
或将其编译到中间的"管道语言",伪汇编方言中,然后将此语言转换为Windows Phone 7的Visual Studio C#,或iOS的Xcode项目。
所有平台在"运行时"中实现了UI引擎,该引擎与每个应用程序包捆绑在一起。此运行时是在相应的SDK中预先构建的,并实现了本机UI调用。
相关文章:
- 从C++本机插件更新Vector3数组
- GCC本机矩阵运算库
- VC++本机单元测试,找不到调试符号
- 在这种情况下,java对象是否可以调用本机函数
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 无法将标准库导入本机 android 项目中的头文件
- 使用本机 C++ 应用程序中的 C# 代码
- 在nodejs中使用本机代码的最佳方法是什么?
- 如何告诉本机节点模块所需的dll存储在哪里?
- 在自定义程序中使用本机 Windows 自然顺序排序
- 如何在C++非托管/本机 DLL 中从注册免费 COM C# 托管 DLL 创建 COM 对象
- MS 本机单元测试 - 断言::线程失败不起作用
- 将音频从浏览器流式传输到WebRTC本机C++应用程序
- Winapi - SetWindowLongPtr in ShutdownBlockReason创建/销毁JNI本机代码
- 使用本机API的替代解决方案:JVM_LOADCLASS0,JVM_ALLOCATENEWARRAY和JVM_ALLOC
- 本机 cpp 中存在许多未解决的错误
- 如何在天然C 基础架构中解决实际的本机UI小部件
- 本机C++dll与C#项目在一个解决方案中
- 使用本机C++、托管 C++ CLI 和 C# 解决方案在混合模式下进行调试