⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a2711.html

📁 GTK编程
💻 HTML
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"><HTML><HEAD><TITLE>GDK 事件类型</TITLE><METANAME="GENERATOR"CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+"><LINKREL="HOME"TITLE="GTK+ 2.0 教程"HREF="book1.html"><LINKREL="PREVIOUS"TITLE="GtkAdjustment"HREF="x2708.html"><LINKREL="NEXT"TITLE="示例程序代码"HREF="a2845.html"></HEAD><BODYCLASS="APPENDIX"BGCOLOR="#FFFFFF"TEXT="#000000"LINK="#0000FF"VLINK="#840084"ALINK="#0000FF"><DIVCLASS="NAVHEADER"><TABLESUMMARY="Header navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><THCOLSPAN="3"ALIGN="center">GTK+ 2.0 教程</TH></TR><TR><TDWIDTH="10%"ALIGN="left"VALIGN="bottom"><AHREF="x2708.html"ACCESSKEY="P">&#60;&#60;&#60; Previous</A></TD><TDWIDTH="80%"ALIGN="center"VALIGN="bottom"></TD><TDWIDTH="10%"ALIGN="right"VALIGN="bottom"><AHREF="a2845.html"ACCESSKEY="N">Next &#62;&#62;&#62;</A></TD></TR></TABLE><HRALIGN="LEFT"WIDTH="100%"></DIV><DIVCLASS="APPENDIX"><H1><ANAME="APP-GDKEVENTTYPES">GDK 事件类型</H1><P>下列的数据类型被 GTK+ 传递给事件处理函数。列出每种数据类型同时也列出了使用该类型的信号。</P><P></P><UL><LI><P>  GdkEvent</P><P></P><UL><LI><P>drag_end_event</P></LI></UL></LI><LI><P>  GdkEventType</P></LI><LI><P>  GdkEventAny</P><P></P><UL><LI><P>delete_event</P></LI><LI><P>destroy_event</P></LI><LI><P>map_event</P></LI><LI><P>unmap_event</P></LI><LI><P>no_expose_event</P></LI></UL></LI><LI><P>  GdkEventExpose</P><P></P><UL><LI><P>expose_event</P></LI></UL></LI><LI><P>  GdkEventNoExpose</P></LI><LI><P>  GdkEventVisibility</P></LI><LI><P>  GdkEventMotion</P><P></P><UL><LI><P>motion_notify_event</P></LI></UL></LI><LI><P>  GdkEventButton</P><P></P><UL><LI><P>button_press_event</P></LI><LI><P>button_release_event</P></LI></UL></LI><LI><P>  GdkEventKey</P><P></P><UL><LI><P>key_press_event</P></LI><LI><P>key_release_event</P></LI></UL></LI><LI><P>  GdkEventCrossing</P><P></P><UL><LI><P>enter_notify_event</P></LI><LI><P>leave_notify_event</P></LI></UL></LI><LI><P>  GdkEventFocus</P><P></P><UL><LI><P>focus_in_event</P></LI><LI><P>focus_out_event</P></LI></UL></LI><LI><P>  GdkEventConfigure</P><P></P><UL><LI><P>configure_event</P></LI></UL></LI><LI><P>  GdkEventProperty</P><P></P><UL><LI><P>property_notify_event</P></LI></UL></LI><LI><P>  GdkEventSelection</P><P></P><UL><LI><P>selection_clear_event</P></LI><LI><P>selection_request_event</P></LI><LI><P>selection_notify_event</P></LI></UL></LI><LI><P>  GdkEventProximity</P><P></P><UL><LI><P>proximity_in_event</P></LI><LI><P>proximity_out_event</P></LI></UL></LI><LI><P>  GdkEventDragBegin</P><P></P><UL><LI><P>drag_begin_event</P></LI></UL></LI><LI><P>  GdkEventDragRequest</P><P></P><UL><LI><P>drag_request_event</P></LI></UL></LI><LI><P>  GdkEventDropEnter</P><P></P><UL><LI><P>drop_enter_event</P></LI></UL></LI><LI><P>  GdkEventDropLeave</P><P></P><UL><LI><P>drop_leave_event</P></LI></UL></LI><LI><P>  GdkEventDropDataAvailable</P><P></P><UL><LI><P>drop_data_available_event</P></LI></UL></LI><LI><P>  GdkEventClient</P><P></P><UL><LI><P>client_event</P></LI></UL></LI><LI><P>  GdkEventOther</P><P></P><UL><LI><P>other_event</P></LI></UL></LI></UL><P>数据类型<TTCLASS="LITERAL">GdkEventType</TT>是一个特殊的数据类型,它被其余的数据类型使用,作为一个传递给信号处理函数的数据类型指示器。在下面你会看到,每个事件数据结构有一个该类型的成员。它是如下的枚举值:</P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><PRECLASS="PROGRAMLISTING">typedef enum{  GDK_NOTHING           = -1,  GDK_DELETE            = 0,  GDK_DESTROY           = 1,  GDK_EXPOSE            = 2,  GDK_MOTION_NOTIFY     = 3,  GDK_BUTTON_PRESS      = 4,  GDK_2BUTTON_PRESS     = 5,  GDK_3BUTTON_PRESS     = 6,  GDK_BUTTON_RELEASE    = 7,  GDK_KEY_PRESS         = 8,  GDK_KEY_RELEASE       = 9,  GDK_ENTER_NOTIFY      = 10,  GDK_LEAVE_NOTIFY      = 11,  GDK_FOCUS_CHANGE      = 12,  GDK_CONFIGURE         = 13,  GDK_MAP               = 14,  GDK_UNMAP             = 15,  GDK_PROPERTY_NOTIFY   = 16,  GDK_SELECTION_CLEAR   = 17,  GDK_SELECTION_REQUEST = 18,  GDK_SELECTION_NOTIFY  = 19,  GDK_PROXIMITY_IN      = 20,  GDK_PROXIMITY_OUT     = 21,  GDK_DRAG_BEGIN        = 22,  GDK_DRAG_REQUEST      = 23,  GDK_DROP_ENTER        = 24,  GDK_DROP_LEAVE        = 25,  GDK_DROP_DATA_AVAIL   = 26,  GDK_CLIENT_EVENT      = 27,  GDK_VISIBILITY_NOTIFY = 28,  GDK_NO_EXPOSE         = 29,  GDK_OTHER_EVENT       = 9999  /* 不赞成使用,用过虑器代替 */} GdkEventType;</PRE></TD></TR></TABLE><P>剩下的,与其余事件类型不同的是<TTCLASS="LITERAL">GdkEvent</TT>。它是所有其余数据类型的统一,允许在一个信号处理函数中转换为指定的事件数据类型。</P><P>因此,事件类型有如下定义:</P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><PRECLASS="PROGRAMLISTING">struct _GdkEventAny{  GdkEventType type;  GdkWindow *window;  gint8 send_event;};struct _GdkEventExpose{  GdkEventType type;  GdkWindow *window;  gint8 send_event;  GdkRectangle area;  gint count; /* 如果非零,它是跟随事件的数目。*/};struct _GdkEventNoExpose{  GdkEventType type;  GdkWindow *window;  gint8 send_event;  /* XXX: 有人需要X major_code或minor_code域吗?*/};struct _GdkEventVisibility{  GdkEventType type;  GdkWindow *window;  gint8 send_event;  GdkVisibilityState state;};struct _GdkEventMotion{  GdkEventType type;  GdkWindow *window;  gint8 send_event;  guint32 time;  gdouble x;  gdouble y;  gdouble pressure;  gdouble xtilt;  gdouble ytilt;  guint state;  gint16 is_hint;  GdkInputSource source;  guint32 deviceid;  gdouble x_root, y_root;};struct _GdkEventButton{  GdkEventType type;  GdkWindow *window;  gint8 send_event;  guint32 time;  gdouble x;  gdouble y;  gdouble pressure;  gdouble xtilt;  gdouble ytilt;  guint state;  guint button;  GdkInputSource source;  guint32 deviceid;  gdouble x_root, y_root;};struct _GdkEventKey{  GdkEventType type;  GdkWindow *window;  gint8 send_event;  guint32 time;  guint state;  guint keyval;  gint length;  gchar *string;};struct _GdkEventCrossing{  GdkEventType type;  GdkWindow *window;  gint8 send_event;  GdkWindow *subwindow;  GdkNotifyType detail;};struct _GdkEventFocus{  GdkEventType type;  GdkWindow *window;  gint8 send_event;  gint16 in;};struct _GdkEventConfigure{  GdkEventType type;  GdkWindow *window;  gint8 send_event;  gint16 x, y;  gint16 width;  gint16 height;};struct _GdkEventProperty{  GdkEventType type;  GdkWindow *window;  gint8 send_event;  GdkAtom atom;  guint32 time;  guint state;};struct _GdkEventSelection{  GdkEventType type;  GdkWindow *window;  gint8 send_event;  GdkAtom selection;  GdkAtom target;  GdkAtom property;  guint32 requestor;  guint32 time;};/* 这个事件数据类型很少用。它在支持XInput的程序中,用于绘制自己的光标 */struct _GdkEventProximity{  GdkEventType type;  GdkWindow *window;  gint8 send_event;  guint32 time;  GdkInputSource source;  guint32 deviceid;};struct _GdkEventDragRequest{  GdkEventType type;  GdkWindow *window;  gint8 send_event;  guint32 requestor;  union {    struct {      guint protocol_version:4;      guint sendreply:1;      guint willaccept:1;      guint delete_data:1;       guint senddata:1;      guint reserved:22;    } flags;    glong allflags;  } u;  guint8 isdrop; /* 几个 X 事件能产生这个gdk事件---这让应用程序知道拖放是否真的发生                    或我们仅仅设置数据 */  GdkPoint drop_coords;  gchar *data_type;  guint32 timestamp;};struct _GdkEventDragBegin{  GdkEventType type;  GdkWindow *window;  gint8 send_event;  union {    struct {      guint protocol_version:4;      guint reserved:28;    } flags;    glong allflags;  } u;};struct _GdkEventDropEnter{  GdkEventType type;  GdkWindow *window;  gint8 send_event;  guint32 requestor;  union {    struct {      guint protocol_version:4;      guint sendreply:1;      guint extended_typelist:1;      guint reserved:26;    } flags;    glong allflags;  } u;};struct _GdkEventDropLeave{  GdkEventType type;  GdkWindow *window;  gint8 send_event;  guint32 requestor;  union {    struct {      guint protocol_version:4;      guint reserved:28;    } flags;    glong allflags;  } u;};struct _GdkEventDropDataAvailable{  GdkEventType type;  GdkWindow *window;  gint8 send_event;  guint32 requestor;  union {    struct {      guint protocol_version:4;      guint isdrop:1;      guint reserved:25;    } flags;    glong allflags;  } u;  gchar *data_type; /* MIME类型 */  gulong data_numbytes;  gpointer data;  guint32 timestamp;  GdkPoint coords;};struct _GdkEventClient{  GdkEventType type;  GdkWindow *window;  gint8 send_event;  GdkAtom message_type;  gushort data_format;  union {    char b[20];    short s[10];    long l[5];  } data;};struct _GdkEventOther{  GdkEventType type;  GdkWindow *window;  gint8 send_event;  GdkXEvent *xevent;};</PRE></TD></TR></TABLE></DIV><DIVCLASS="NAVFOOTER"><HRALIGN="LEFT"WIDTH="100%"><TABLESUMMARY="Footer navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top"><AHREF="x2708.html"ACCESSKEY="P">&#60;&#60;&#60; Previous</A></TD><TDWIDTH="34%"ALIGN="center"VALIGN="top"><AHREF="book1.html"ACCESSKEY="H">Home</A></TD><TDWIDTH="33%"ALIGN="right"VALIGN="top"><AHREF="a2845.html"ACCESSKEY="N">Next &#62;&#62;&#62;</A></TD></TR><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top">GtkAdjustment</TD><TDWIDTH="34%"ALIGN="center"VALIGN="top">&nbsp;</TD><TDWIDTH="33%"ALIGN="right"VALIGN="top">示例程序代码</TD></TR></TABLE></DIV></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -