📄 list_17_29_b.c
字号:
/************************************************************************* **** listing_17_29_B.c **** **** Selection example, responder. This program requests the owner of **** the selection "MyOwnSelection" when its button is pushed. It **** displays the window ID of the selection owner, then sends its **** window ID in a client message. **** *************************************************************************/#include <Xm/PushB.h>#include <X11/Xatom.h>void ButtonCB(); /* FORWARD Definitions */Widget appshell, the_btn;Atom a_sel_name;void main( argc, argv ) int argc; char *argv[];{ appshell = XtInitialize( argv[0], "Listing_17_29", NULL, 0, &argc, argv ); a_sel_name = XmInternAtom( XtDisplay(appshell), "_KDG_PRIVATE_SELECTION", FALSE ); the_btn = XmCreatePushButton( appshell, "TheBtn", NULL, 0 ); XtManageChild( the_btn ); XtAddCallback( the_btn, XmNactivateCallback, ButtonCB, NULL ); XtRealizeWidget( appshell ); XtMainLoop();}void ButtonCB( w, client_data, call_data ) Widget w; caddr_t client_data; XmAnyCallbackStruct *call_data;{ char lcl_str[32]; XmString xms; Arg the_arg; Window owner; XClientMessageEvent evt; owner = XGetSelectionOwner( XtDisplay(w), a_sel_name ); if (owner == None) { printf( "17_29_B: No owner yet\n" ); return; } sprintf( lcl_str, "%d", owner ); xms = XmStringCreate( lcl_str, XmSTRING_DEFAULT_CHARSET ); XtSetArg( the_arg, XmNlabelString, xms ); XtSetValues( w, &the_arg, 1 ); XmStringFree( xms ); evt.type = ClientMessage; evt.display = XtDisplay(w); evt.window = owner; evt.message_type = XA_WINDOW; evt.format = 32; evt.data.l[0] = XtWindow(w); XSendEvent( XtDisplay(w), owner, TRUE, 0, &evt );}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -