| | | | Browse by category |
Article ID: 986
Last updated: 05 Feb, 2008
Problem
This sample illustrates how the user can trap the shift, return and escape keys for a ComboBox control on UNIX.
Cause
There is no specific function to trap these keys for a ComboBox. All events for a ComboBox are directed to the arrow button. We want to direct the events to the edit line portion.
Action
Below is an example of how to trap the return, escape and shift keys for a ComboBox in Motif.
This sample illustrates how the user can trap the shift, return and escape keys for a ComboBox control on UNIX.
Cause
There is no specific function to trap these keys for a ComboBox. All events for a ComboBox are directed to the arrow button. We want to direct the events to the edit line portion.
Action
Below is an example of how to trap the return, escape and shift keys for a ComboBox in Motif.
- Add an Event Handler in the constructor of your comboBox.
- Add a method that is called upon receiving a printable character.
MyComboBox::MyComboBox(zWindow *w,zSizer *s,DWORD style_, const char
*c,int i)
:zComboBoxFull(w,s,style_,c,i){
add(Item1);
add(Item2);
add(Item3);
// Add event handler, notice the getText() method, this is the text portion of the ComboBox
XtAddEventHandler(getText(),KeyPressMask,False,(XtEventHandler)MyComboBox::keybInput,
(XtPointer) this);
show();
}
void MyComboBox::keybInput(Widget w, XtPointer ehTag, XEvent *xev,
Boolean *contin) {
KeySym key;
char buf[20];
buf[0] =0;
int len =0;
if (xev->type ==
KeyPress) {
len = XLookupString((XKeyEvent*) xev,buf,20,&key,&app->xcompose);
if (len == 0) return;
// trap keystrokes here
if(key == XK_Return) printf(Enter
);
if(key == XK_Escape) printf(Escape
);
if(key == XK_Shift_L) printf(Shift
);
}
}
This article was:
Helpful |
Not helpful
Report an issue
Article ID: 986
Last updated: 05 Feb, 2008
Revision: 1
Views: 3009
Posted: 02 Sep, 1997 by
Dean J.
Updated: 05 Feb, 2008 by
Dean J.
Others in this category
Powered by KBPublisher (Knowledge base software)