📄 list_17_29_a.c
字号:
/************************************************************************* **** listing_17_29_A.c **** **** Selection example, advertiser. This program acquires ownership **** of the selection "MyOwnSelection" when its button is pushed. It **** also responds to client message events with a data type of **** "WINDOW" (XA_WINDOW), by displaying the passed window ID. **** *************************************************************************/#include <Xm/PushB.h>#include <X11/Xatom.h>void ButtonCB(); /* FORWARD Definitions */void ClientEvt();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 ); XtAddEventHandler( the_btn, 0, TRUE, ClientEvt, NULL ); XtRealizeWidget( appshell ); XtMainLoop();}void ButtonCB( w, client_data, call_data ) Widget w; caddr_t client_data; XmAnyCallbackStruct *call_data;{ XSetSelectionOwner( XtDisplay(w), a_sel_name, XtWindow(w), call_data->event->xbutton.time );}void ClientEvt( w, client_data, event ) Widget w; caddr_t client_data; XClientMessageEvent *event;{ char lcl_str[32]; XmString xms; Arg the_arg; if ((event->type != ClientMessage) || (event->message_type != XA_WINDOW)) return; sprintf( lcl_str, "%d", event->data.l[0] ); xms = XmStringCreate( lcl_str, XmSTRING_DEFAULT_CHARSET ); XtSetArg( the_arg, XmNlabelString, xms ); XtSetValues( w, &the_arg, 1 ); XmStringFree( xms );}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -