1

Motif ツール キットを使用すると、API "XmCreateArrowButton" を使用して矢印ボタンを作成できます。

矢印ボタンをクリックすると、ボタンが選択され、選択された状態のままになります。矢印ボタンの周りに黒い境界線が描かれています。

矢印ボタンをクリックすると、ボタンが選択されてから選択解除される方法はありますか。

ここでの問題は、ボタンが常に選択された状態のままである場合、他のキーボード イベント ( ENTER キーを押すなど) に応答しないことです。

よろしくお願いします。

4

1 に答える 1

2

arm および disarm コールバックが欠落している可能性があります。以前に 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;
   }
}
于 2014-03-04T15:53:34.120 に答える