De选择Motif arrowButton

时间:2014-03-04 14:35:20

标签: c linux motif

使用Motif工具包,我们可以使用API​​“XmCreateArrowButton”创建箭头按钮。

现在,当单击箭头按钮时,该按钮被选中并保持选定状态。箭头按钮周围有一个黑色边框。

有没有办法在点击箭头按钮时,按钮被选中,然后被取消选择。

这里的问题是,如果按钮始终保持在选定状态,它不会响应其他键盘事件(例如按下ENTER键)。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

你可能错过了布防和解除武装的回调。我这是老式的方式,因为我之前从未使用过XmCreateArrowButton。老式的方式只使用XtVaCreateManagedWidget。它会像

Widget arrow = XtVaCreateManagedWidget("arrow",
    xmArrowButtonGadgetClass, container, /* container will be something like a rowcol widget*/
    XmNarrowDirection, XmARROW_UP,
    NULL);
XtAddCallback(arrow, XmNarmCallback, ouch, 10);
XtAddCallback(arrow, XmNdisarmCallback, ouch, 10);
...
void ouch(Widget w, XtPointer client_data, XtPointer call_data)
{
   int value = (int) client_data; /* this will be the 10 passed in */
   XmArrowButtonCallbackStruct* cbs = (XmArrowCallbackStruct*) call_data;

   switch (cbs->reason)
   {
   case XmCR_ARM:
       /* Pressed */
       ...
       break;

   case XmCR_DISARM:
       /* released */
       ...
       break;

   default:
       /* do nothing */
       break;
   }
}