1
8
我不知道关于Erlang,但在C++中(以及在我知道的其他绑定中),使用它通常是更好的。
至于命名,当然,不需要使用这种奇怪的约定(快速浏览教程可以发现,这是作者个人的偏好——不用说,我不愿意分享)。 |
2
5
像上面提到的VZ一样,如果以后不需要通过widget的id查找它,可以使用wxID_ANY。 然而,我认为,不仅在id之后命名变量是不正常的,而且这样做是一个非常糟糕的主意。 根据变量的含义命名变量,不要使用模糊的id . 另外,您最好定义所需的id并给它们指定适当的(语义的)名称,这样它们只能在一个地方定义,并且您以后可以轻松地更改id,而不会影响您的程序,如下所示:
你可以把定义放在
|
3
1
不,你想通过ID查找东西的情况大致相同,在C++中你想用ID查找一些东西。这适用于我能想到的任何小部件库——每当你对一个编码的信号做出反应时
那你是怎么得到一个wx的东西的?使用其返回的引用。
几乎每
不过,一个不太明显的情况是,当您需要输入字段网格之类的东西时,您可以循环或按键值拉取:
等等。( zxw:text_input_grid/3 definition ,和 docs ) 一次你真的想通过它的ID引用对象而不是它的对象引用与C++是一样的:当你在听一个特定的点击事件:
然后在泛型wx_对象的消息处理循环中:
第一个子句专门处理对非标准按钮的单击,第二个子句处理列表控件小部件选择事件,以便在界面中执行某些任意操作。当拆开包装时
在上述情况下,所有特定的id都标记为宏, 确切地 同样的方式,这是在WX在C++和其他C++部件工具包中完成的。 大多数 在时间上,只需使用标准预定义的WX按钮类型,并相应地对它们作出反应;上面的示例是由于某些特定的接口需求而被迫低于某一点的代码(和等效C++代码基本上是相同的,但要完成同样的任务却要更加冗长)。 一些稍高级别语言的平台有不同的方法来处理身份问题。iOS和Android小部件包(以及QtQuick)隐藏了这个细节,比如一个更通用的对象引用,而不是依赖于id。也就是说,这些小部件包实际上存储了在{ID=>ObjReference}散列中创建的所有小部件,从每个信号中选择ID,在将控制权传递给处理回调之前检索对象引用,并返回散列中存储的引用,而不是直接传递ID。 这很巧妙,但这不是旧的小部件包绑定到C样式枚举作为标签代码工作的方式。当它的所有说和做的电脑仍然只有一个真正的类型:整数——我们发明了各种其他的东西在上面,享受类型和其他乐趣的幻想。 我们也可以在Erlang上做这个引用,但是WxErlang代码通常写的方式是遵循C++的传统,在宏标签后面使用对象ID,以避免无法识别的事件,以及对象引用和其他东西的标准标签。 上面使用的zx_widgets库是一组预定义的元widgets,它涵盖了样板字段构造的一些最常见情况,并返回易于功能处理的数据结构。Wx的OOP风格在某些方面不太适合Erlang(因此,在Erlang中编写的loooooongest函数很可能是GUI代码),因此有时需要额外的一层来使承载逻辑的代码与Erlang的其余部分保持一致。但是,在任何语言和环境中,GUI代码都是非常烦人的。 [注1: 有一些奇怪的、不舒服的案例,其中一些C++风格的神秘通过绑定进入你的Erlang代码,比如使用2D图形DC CouvAsAs和WHATNOT的神奇环境创建过程。 ] |
Роман ÐопÑев · mediactrl\u am出错。在使用llvm 5.0.0目标x86\u 64-w64-windows-gnu构建wxwidgets 3.0.3时使用cpp 6 年前 |
Pekov · 将wxMathplot与代码::块一起使用 7 年前 |
macroland · 向量中特定位置的唯一_ptr向量 7 年前 |
sangz · 我可以使用wxwidgets读取zip存档吗? 7 年前 |
tracer_rock · wxMenuItem的子菜单 8 年前 |
Misery · 如何在wxFreeChart中更改系列颜色和笔? 8 年前 |