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

📄 gtk-signal-marshallers.html

📁 该压缩包包含了GTK+的大量API函数
💻 HTML
字号:
<HTML><HEAD><TITLE>Signal Marshallers</TITLE><METANAME="GENERATOR"CONTENT="Modular DocBook HTML Stylesheet Version 1.61"><LINKREL="HOME"TITLE="GTK+ Reference Manual"HREF="index.html"><LINKREL="UP"TITLE="GTK+ "HREF="gtk.html"><LINKREL="PREVIOUS"TITLE="Signals"HREF="gtk-signals.html"><LINKREL="NEXT"TITLE="Implementation of Object Properties"HREF="gtk-object-properties.html"></HEAD><BODYCLASS="REFENTRY"BGCOLOR="#FFFFFF"TEXT="#000000"LINK="#0000FF"VLINK="#840084"ALINK="#0000FF"><DIVCLASS="NAVHEADER"><TABLEWIDTH="100%"BORDER="0"BGCOLOR="#000000"CELLPADDING="1"CELLSPACING="0"><TR><THCOLSPAN="4"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="5">GTK+ Reference Manual</FONT></TH></TR><TR><TDWIDTH="25%"BGCOLOR="#C00000"ALIGN="left"><AHREF="gtk-signals.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>&#60;&#60;&#60; Previous Page</B></FONT></A></TD><TDWIDTH="25%"BGCOLOR="#0000C0"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="3"><B><AHREF="index.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Home</B></FONT></A></B></FONT></TD><TDWIDTH="25%"BGCOLOR="#00C000"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="3"><B><AHREF="gtk.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Up</B></FONT></A></B></FONT></TD><TDWIDTH="25%"BGCOLOR="#C00000"ALIGN="right"><AHREF="gtk-object-properties.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Next Page &#62;&#62;&#62;</B></FONT></A></TD></TR></TABLE></DIV><H1><ANAME="GTK-SIGNAL-MARSHALLERS">Signal Marshallers</A></H1><DIVCLASS="REFNAMEDIV"><ANAME="AEN9134"></A><H2>Name</H2>Signal Marshallers&nbsp;--&nbsp;Functions to adapt C structures to native calling convention.</DIV><DIVCLASS="REFSYNOPSISDIV"><ANAME="AEN9137"></A><H2>Synopsis</H2><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="SYNOPSIS">&#13;#include &lt;gtk/gtk.h&gt;#define     <AHREF="gtk-signal-marshallers.html#GTK-SIGNAL-DEFAULT-MARSHALLER">gtk_signal_default_marshaller</A>&#13;</PRE></TD></TR></TABLE></DIV><DIVCLASS="REFSECT1"><ANAME="AEN9141"></A><H2>Description</H2><DIVCLASS="REFSECT2"><ANAME="AEN9143"></A><H3>What are Signal Marshallers?</H3><P>Marshals are functions which all have the same prototype:they take a <AHREF="gtkobject.html">GtkObject</A>, a <AHREF="gtk-types.html#GTKSIGNALFUNC">GtkSignalFunc</A>, a <AHREF=../glib/glib-basic-types.html#GPOINTER>gpointer</A>,and an array of argument values.The functions are names gtk_marshall_RETURNTYPE__PARAMTYPE1_PARAMTYPE2....</P><P>They then call a native function:  the GtkObject is the firstparameter passed in.  The arguments are passed in the nativecalling convention:  chars, shorts, ints, longs may be packedon the stack, or tucked in registers:  it doesn't matterbecause the same calling convention will be generatedinside the gtkmarshal code as is expected where you defineyour handlers.</P><P>So the function named:<TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">gtk_marshal_BOOL__POINTER_INT_INT_UINT(GtkObject*, GtkSignalFunc, gpointer, GtkArg*);</PRE></TD></TR></TABLE>will call the <AHREF="gtk-types.html#GTKSIGNALFUNC">GtkSignalFunc</A> assuming it was a function with signature:<TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">gboolean sigfunc(gpointer,gint,gint,guint);</PRE></TD></TR></TABLE></P></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN9154"></A><H3>Writing Custom Marshals</H3><P>Marshals are primarily used as arguments to <AHREF="gtk-signals.html#GTK-SIGNAL-NEW">gtk_signal_new</A>().Sometimes, you may find that a marshaller you need isn't availablein the standard list.  Then you have to write your own.</P><P>If you wish to define a signal with a new type of argument list.Suppose you want 2 pointers and 2 integers.You would write:<TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">typedef int (*GtkSignal_INT__POINTER_POINTER_INT_INT)(			gpointer, gpointer, gint, gint);void marshal_INT__POINTER_POINTER_INT_INT(GtkObject*    object,					   GtkSignalFunc func,					   gpointer      func_data,                                           GtkArg*       args){	GtkSignal_NONE__POINTER_POINTER_INT_INT rfunc;	gint* return_val;	return_val = GTK_RETLOC_INT(args[4]);	rfunc = (GtkSignal_INT__POINTER_POINTER_INT_INT)func;	*return_val = (*rfunc)(object,                               GTK_VALUE_POINTER(args[0]),                               GTK_VALUE_POINTER(args[1]),                               GTK_VALUE_INT(args[2]),                               GTK_VALUE_INT(args[3]),                               func_data);}</PRE></TD></TR></TABLE></P></DIV></DIV><DIVCLASS="REFSECT1"><ANAME="AEN9160"></A><H2>Details</H2><DIVCLASS="REFSECT2"><ANAME="AEN9162"></A><H3><ANAME="GTK-SIGNAL-DEFAULT-MARSHALLER"></A>gtk_signal_default_marshaller</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">#define gtk_signal_default_marshaller gtk_marshal_NONE__NONE</PRE></TD></TR></TABLE><P>A marshaller that returns void and takes no extra parameters.</P></DIV></DIV><DIVCLASS="REFSECT1"><ANAME="AEN9167"></A><H2>See Also</H2><P><P></P><DIVCLASS="VARIABLELIST"><DL><DT>GtkSignal</DT><DD><P>The signal handling functions (of which marshallers are really an implementation detail).</P></DD></DL></DIV></P></DIV><DIVCLASS="NAVFOOTER"><BRCLEAR="all"><BR><TABLEWIDTH="100%"BORDER="0"BGCOLOR="#000000"CELLPADDING="1"CELLSPACING="0"><TR><TDWIDTH="25%"BGCOLOR="#C00000"ALIGN="left"><AHREF="gtk-signals.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>&#60;&#60;&#60; Previous Page</B></FONT></A></TD><TDWIDTH="25%"BGCOLOR="#0000C0"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="3"><B><AHREF="index.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Home</B></FONT></A></B></FONT></TD><TDWIDTH="25%"BGCOLOR="#00C000"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="3"><B><AHREF="gtk.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Up</B></FONT></A></B></FONT></TD><TDWIDTH="25%"BGCOLOR="#C00000"ALIGN="right"><AHREF="gtk-object-properties.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Next Page &#62;&#62;&#62;</B></FONT></A></TD></TR><TR><TDCOLSPAN="2"ALIGN="left"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Signals</B></FONT></TD><TDCOLSPAN="2"ALIGN="right"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Implementation of Object Properties</B></FONT></TD></TR></TABLE></DIV></BODY></HTML>

⌨️ 快捷键说明

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