查看源代码 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_colour4() = {R::byte(), G::byte(), B::byte(), A::byte()}

  • wx_datetime() = {{Year::integer(), Month::integer(), Day::integer()}, {Hour::integer(), Minute::integer(), Second::integer()}}

    在本地时区

  • wx_enum() = integer()

    在 wx.hrl 中定义的常量

  • wx_env() = #wx_env{}

    不透明的进程环境

  • wx_memory() = binary() | #wx_mem{}

    不透明的内存引用

  • wx_object() = #wx_ref{}

    不透明的对象引用

  • 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_colour4() :: {R :: byte(), G :: byte(), B :: byte(), A :: byte()}.
-type wx_colour() :: {R :: byte(), G :: byte(), B :: byte()} | wx_colour4().
-type wx_datetime() ::
          {{Year :: integer(), Month :: integer(), Day :: integer()},
           {Hour :: integer(), Minute :: integer(), Second :: integer()}}.
-type wx_enum() :: integer().
-type wx_env() :: #wx_env{ref :: term(), sv :: term(), debug :: term()}.
-type wx_memory() :: binary() | #wx_mem{bin :: term(), size :: term()}.
-type wx_object() :: #wx_ref{ref :: term(), type :: term(), state :: term()}.
-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()}.

函数

-spec batch(function()) -> term().

批处理 fun 中使用的所有 wx 命令。通过获取 wxWidgets 线程来提高命令处理的性能,从而在调用整个命令批处理之前不会进行任何事件处理。

另请参阅: foldl/3foldr/3foreach/2map/2

-spec create_memory(Size :: integer()) -> wx_memory().

创建一个可以被外部库(即 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 服务器。

-spec equal(Ref1 :: wx_object(), Ref2 :: wx_object()) -> boolean().

如果两个参数都引用同一个对象,则返回 true,否则返回 false

-spec foldl(function(), term(), list()) -> term().

行为类似于 lists:foldl/3,但会批处理 wx 命令。请参阅 batch/1

-spec foldr(function(), term(), list()) -> term().

行为类似于 lists:foldr/3,但会批处理 wx 命令。请参阅 batch/1

-spec foreach(function(), list()) -> ok.

行为类似于 lists:foreach/2,但会批处理 wx 命令。请参阅 batch/1

-spec get_env() -> wx_env().

获取此进程的当前 wx 环境。可以发送到其他进程,以允许它们使用此进程的 wx 环境。

另请参阅: set_env/1

链接到此函数

get_memory_bin(Wx_mem)

查看源代码
-spec get_memory_bin(Wx_mem :: wx_memory()) -> binary().

以二进制形式返回内存区域。

-spec getObjectType(Wx_ref :: wx_object()) -> atom().

返回对象类型

-spec is_null(Wx_ref :: wx_object()) -> boolean().

如果对象为空,则返回 true,否则返回 false

-spec map(function(), list()) -> list().

行为类似于 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 parent_class(Wx_ref :: wx_object()) -> boolean().
链接到此函数

release_memory(Wx_mem)

查看源代码
-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,但会将任何已接收的事件发送到调用进程。

-spec typeCast(wx_object(), atom()) -> wx_object().

将对象强制转换为 NewType 类。当使用诸如 wxWindow:findWindow/2 之类的函数时需要它,该函数返回通用的 wxObject 类型。