禁用lispworks capi上的各个按钮:按钮面板

时间:2011-06-13 04:04:46

标签: lisp common-lisp mscapi lispworks

我正在使用常见的lisp和LispWorks CAPI开发Connect Four游戏。我完成了界面,除了一件事:我使用按钮(在按钮面板中)将碎片放入列中,并且我想在相应的列已满时禁用按钮。我对lisp比较陌生,我特别不了解面向对象的东西,所以我无法弄清楚如何去做。

可以创建一个按钮:

(setf my-button (capi:contain
                 (make-instance 'capi:push-button
                                :text "Button!")))

因此禁用:

(capi:apply-in-pane-process 
 my-button #'(setf capi:button-enabled) nil my-button)

按钮面板的创建方式类似,不同之处在于它采用:items参数,该参数是按钮列表(或CAPI将创建按钮的数据)在面板中。

我只需要知道如何禁用按钮面板的各个按钮。如果你能解释那里最后一段代码中发生的事情,那也很好,因为我根本不理解它。

谢谢!

1 个答案:

答案 0 :(得分:2)

通过手册进行一些搜索会显示this function,它允许您启用/禁用push-button-panel中的一个或多个元素。此外,您想要解释的代码使用参数(setf capi:button-enabled)nil调用函数my-button。但是,在与按钮关联的“进程”中调用此函数。 (参见文档here

(P.S。如果你需要帮助理解“面向对象的东西”,Practical Common Lisp可能是一个有用的资源)