查看源代码 wx (wx v2.4.3)
wxWidgets 的一个端口。
这是 wxWidgets 的基本 API。此模块包含用于启动和停止 wx-server 的函数,以及其他实用函数。
wxWidgets 是面向对象的,而不是函数式的。因此,在 Wx 中,一个模块代表一个类,并且由此类创建的对象具有自己的类型 wxCLASS()。此模块代表基类,所有其他 wxMODULE 都是此类的子类。
类的对象使用 wxCLASS:new(...) 创建,并使用 wxCLASS:destroy() 销毁。成员函数使用 wxCLASS:member(Object, ...) 调用,而不是像在 C++ 中那样使用 Object.member(...)。
子类模块从其父类继承(非静态)函数。继承的函数不会在子类中记录。
wxWidgets 的这个 Erlang 端口尝试与原始 wxWidgets 库进行一对一的映射。但是,有些地方有所不同,因为可选参数使用属性列表,并且可以按任何顺序排列。主要的区别在于事件处理,它与原始库不同。请参阅 wxEvtHandler
。
以下类直接实现为 Erlang 类型
wxPoint={x,y},wxSize={w,h},wxRect={x,y,w,h},wxColour={r,g,b [,a]}, wxString=unicode:chardata(), wxGBPosition={r,c},wxGBSpan={rs,cs},wxGridCellCoords={r,c}。
wxWidgets 使用进程特定的环境,该环境由 wx:new/0 创建。为了能够从其他进程使用该环境,请调用 get_env/0
来检索该环境,并调用 set_env/1
来在其他进程中分配该环境。
全局(无类)函数位于 wx_misc 模块中。
数据类型
wx_colour() = {R::byte(), G::byte(), B::byte()} | wx_colour4()
wx_datetime() = {{Year::integer(), Month::integer(), Day::integer()}, {Hour::integer(), Minute::integer(), Second::integer()}}
在本地时区
在 wx.hrl 中定义的常量
不透明的进程环境
wx_memory() = binary() | #wx_mem{}
不透明的内存引用
不透明的对象引用
wx_wxHtmlLinkInfo() = #wxHtmlLinkInfo{href=unicode:chardata(), target=unicode:chardata()}
wx_wxMouseState() = #wxMouseState{x=integer(), y=integer(), leftDown=boolean(), middleDown=boolean(), rightDown=boolean(), controlDown=boolean(), shiftDown=boolean(), altDown=boolean(), metaDown=boolean(), cmdDown=boolean()}
请参阅 wx.hrl 中定义的 #wxMouseState{}
概要
函数
批处理 fun 中使用的所有 wx
命令。通过获取 wxWidgets 线程来提高命令处理的性能,从而在调用整个命令批处理之前不会进行任何事件处理。
创建一个可以被外部库(即 opengl)使用的内存区域(大小为 Size 字节)。由客户端负责保留对此对象的引用,这样它就不会在外部库仍在使用时被 Erlang 垃圾回收。
设置调试级别。如果调试级别为“verbose”或“trace”,则每个调用都会打印在控制台上。如果 Level 为“driver”,则每个分配的对象和删除都会打印在控制台上。
如果存在示例目录并已编译,则启动 Wx 演示
停止 wx 服务器。
如果两个参数都引用同一个对象,则返回 true,否则返回 false
行为类似于 lists:foldl/3
,但会批处理 wx 命令。请参阅 batch/1
。
行为类似于 lists:foldr/3
,但会批处理 wx 命令。请参阅 batch/1
。
行为类似于 lists:foreach/2
,但会批处理 wx 命令。请参阅 batch/1
。
获取此进程的当前 wx 环境。可以发送到其他进程,以允许它们使用此进程的 wx 环境。
以二进制形式返回内存区域。
返回对象类型
如果对象为空,则返回 true,否则返回 false
行为类似于 lists:map/2
,但会批处理 wx 命令。请参阅 batch/1
。
启动 wx 服务器。
启动 wx 服务器。
返回空对象
释放由 retain_memory/1
保留的内存
保存内存不被删除,直到调用 release_memory/1
。如果未调用 release_memory/1
,则内存不会被垃圾回收。
设置进程 wx 环境,允许此进程使用另一个进程的 wx 环境。
将调用进程添加到正在侦听 wx 应用程序事件的进程列表中。
将对象强制转换为 NewType 类。当使用诸如 wxWindow:findWindow/2 之类的函数时需要它,该函数返回通用的 wxObject 类型。
类型
-type wx_colour() :: {R :: byte(), G :: byte(), B :: byte()} | wx_colour4().
-type wx_enum() :: integer().
-type wx_wxHtmlLinkInfo() :: #wxHtmlLinkInfo{href :: unicode:chardata(), target :: unicode:chardata()}.
-type wx_wxMouseState() :: #wxMouseState{x :: integer(), y :: integer(), leftDown :: boolean(), middleDown :: boolean(), rightDown :: boolean(), controlDown :: boolean(), shiftDown :: boolean(), altDown :: boolean(), metaDown :: boolean(), cmdDown :: boolean(), aux1Down :: boolean(), aux2Down :: boolean()}.
函数
批处理 fun 中使用的所有 wx
命令。通过获取 wxWidgets 线程来提高命令处理的性能,从而在调用整个命令批处理之前不会进行任何事件处理。
创建一个可以被外部库(即 opengl)使用的内存区域(大小为 Size 字节)。由客户端负责保留对此对象的引用,这样它就不会在外部库仍在使用时被 Erlang 垃圾回收。
这与 Erlang 的预期用法相去甚远,并且可能会导致 Erlang 模拟器崩溃。请谨慎使用。
-spec debug(Level | [Level]) -> ok when Level :: none | verbose | trace | driver | integer().
设置调试级别。如果调试级别为“verbose”或“trace”,则每个调用都会打印在控制台上。如果 Level 为“driver”,则每个分配的对象和删除都会打印在控制台上。
-spec demo() -> ok | {error, atom()}.
如果存在示例目录并已编译,则启动 Wx 演示
-spec destroy() -> ok.
停止 wx 服务器。
如果两个参数都引用同一个对象,则返回 true,否则返回 false
行为类似于 lists:foldl/3
,但会批处理 wx 命令。请参阅 batch/1
。
行为类似于 lists:foldr/3
,但会批处理 wx 命令。请参阅 batch/1
。
行为类似于 lists:foreach/2
,但会批处理 wx 命令。请参阅 batch/1
。
-spec get_env() -> wx_env().
获取此进程的当前 wx 环境。可以发送到其他进程,以允许它们使用此进程的 wx 环境。
另请参阅: set_env/1
。
以二进制形式返回内存区域。
返回对象类型
如果对象为空,则返回 true,否则返回 false
行为类似于 lists:map/2
,但会批处理 wx 命令。请参阅 batch/1
。
-spec new() -> wx_object().
启动 wx 服务器。
-spec new([Option]) -> wx_object() when Option :: {debug, list() | atom()} | {silent_start, boolean()}.
启动 wx 服务器。
选项可以是 {debug, Level}
,请参阅 debug/1
。或者 {silent_start, Bool}
,它会导致启动时的错误消息被抑制。后者可以用作静默测试 wx 是否正确安装。
-spec null() -> wx_object().
返回空对象
-spec release_memory(Wx_mem :: wx_memory()) -> ok.
释放由 retain_memory/1
保留的内存
-spec retain_memory(Wx_mem :: wx_memory()) -> ok.
保存内存不被删除,直到调用 release_memory/1
。如果未调用 release_memory/1
,则内存不会被垃圾回收。
-spec set_env(Wx_env :: wx_env()) -> ok.
设置进程 wx 环境,允许此进程使用另一个进程的 wx 环境。
-spec subscribe_events() -> ok.
将调用进程添加到正在侦听 wx 应用程序事件的进程列表中。
目前,这些都是特定于 MacOSX 的事件,对应于 wxWidgets wxApp 中的 MacNewFile()
和相关内容
{new_file, ""}
{open_file, Filename}
{print_file, Filename}
{open_url, Url}
{reopen_app, ""}
该调用始终返回 ok,但会将任何已接收的事件发送到调用进程。
将对象强制转换为 NewType 类。当使用诸如 wxWindow:findWindow/2 之类的函数时需要它,该函数返回通用的 wxObject 类型。