







                         CChhaapptteerr 88

                        Хå



ץꥱ䥦åȤϡ餫ꤷξ
βǸƤӽФ³򡤥åȤФϿʤ
ФʤʤȤ롥㤨СåȤ˴줿
åȤ _d_e_s_t_r_o_y___c_a_l_l_b_a_c_k_s ꥹȾƤμ³
ӽФ졤åȤ˴ľǤ뤳Ȥ򥯥饤
ȤΤ롥

ƤΥåȤ XtNdestroyCallbacks Хåꥹ
꥽ġåȤϡŬڤȻפɲäΥ
ХåꥹȤǤ롥㤨 Pushbutton åȤϡ
ܥ󤬥ƥ֤ˤ줿˥饤ȤΤԤ
Хåġ

դơƤΥȥ󥷥ؿϤ
ǤƤ֤ȤǤ褦ˤʤäƤ롥ˤϥХå
³桤롼桤٥ȥϥɥޤޤƤ
롥

00..11..  Хå³³ȥХåꥹ

ХåꥹȤǻȤ륳Хå³η _X_t_C_a_l_l_-
_b_a_c_k_P_r_o_c Ǥ롥

__
||
typedef void (*XtCallbackProc)(Widget, XtPointer, XtPointer);
      Widget _w;
      XtPointer _c_l_i_e_n_t___d_a_t_a;
      XtPointer _c_a_l_l___d_a_t_a;


_w         ХåϿƤꥹȤͭƤ
          åȤꤹ롥

_c_l_i_e_n_t___d_a_t_a
          ɲäΥǡꤹ롥Υǡϼ³Ͽ
          줿˥饤ȤͿΤǤ롥

_c_a_l_l___d_a_t_a åȤ饤ȤϤȤ롤
          ХåͭΥǡꤹ롥㤨СXtNthum-
          bChanged ХåꥹȤ¹Ԥˡ
          Scrollbar åȤļο֤Ϥ
||__

 _c_l_i_e_n_t___d_a_t_a ȤȡХå³Ͽ륯
饤Ȥϥ饤ȸͭΥǡϿ뤳Ȥ









                             -2-


롥㤨ФΥǡϡåȤ˴ؤɲäξ䥳
ХåƤӽФͳʤɤǤ롥åȤɬפʾ
ƻäƤʤС _c_l_i_e_n_t___d_a_t_a ͤ NULL Ǥ褤
 _c_a_l_l___d_a_t_a ȤȡåȤñʥǡ
ݤǤ롥ˡȤʤΤʤС _X_t_G_e_t_V_a_l_u_e_s
åȸͭδؿƤӽФʤŪˤϡ
åȤξ֤˴ؤʣʾ_c_a_l_l___d_a_t_a 뤳Ȥ
٤Ǥ롥饤Ȥɬפ˱ơŪʥǡ
ˡȤȤǤ롥

饤Ȥ _X_t_C_r_e_a_t_e_W_i_d_g_e_t  _X_t_S_e_t_V_a_l_u_e_s, _X_t_G_e_t_V_a_l_u_e_s 
ƤӽФݤΰȤƥХåꥹȤϤϡɬ
_X_t_C_a_l_l_b_a_c_k_L_i_s_t Υɥ쥹ǻꤷʤФʤʤ
ޤκǸǤ NULL ǤʤФʤʤ

__
||
typedef struct {
     XtCallbackProc callback;
     XtPointer closure;
} XtCallbackRec, *XtCallbackList;

||__

㤨С饤ȥǡ clientDataA ļ³ A ȥ
ȥǡ clientDataB ļ³ B Ф륳Х
ꥹȤϼΤ褦ˤʤ롥


static XtCallbackRec callbacks[] = {
     {A, (XtPointer) clientDataA},
     {B, (XtPointer) clientDataB},
     {(XtCallbackProc) NULL, (XtPointer) NULL}
};


ꥹȤĹꥹȤǤϡХåꥹȤϥ
ɥ쥹Ϥ롥Intrinsics ϥåȤΥ꥽
ꥹȤȤäƥХåꥹȤǧɬפ˱
ΥԡԤåȤ initialize ³ set_val-
ues ³ǥХåꥹȤƤǼΰγ
򤷤ƤϤʤʤʤʤ顤Intrinsics ϤνưŪ
Ԥޤɽǰۤʤ빽¤ΤȤǽ뤫Ǥ
롥


00..22..  ХåꥹȤμ

饤ȤѤǤ륳ХåꥹȤĥ
ȤϡƱ˥ХåꥹȤΥ꥽̾ѥ֥å .h
ɬݡȤƤ롥ץꥱ䥯饤Ȥ
åȤХåꥹȤΥեɤľܥ
뤳ȤϷ褷Ƥʤ餬ɬפʥХåꥹȤ̤
ݤˤϡ˥ݡȤƤ꥽̾









                             -3-


Ѥ롥ξϤƤ륳Хåؿ(
_X_t_C_a_l_l_C_a_l_l_b_a_c_k_L_i_s_t )ϥå¹Ԥ׵ᤵ줿
ХåꥹȤ򥦥åȤ˼Ƥ뤳Ȥǧ
롥

ХåꥹȤ Intrinsics ȯǤ
褦ˡХåꥹȤ _X_t_R_C_a_l_l_b_a_c_k ꥽
ʤФʤʤХåꥹȤɽϼ¸
롥äơ꥽˳ǼƤͤ NULL Ǥʤ
ˤϡͤˤĤƲԤäƤϤʤʤNULL Ȥͤ
Ӥ( _X_t_C_a_l_l_b_a_c_k_S_t_a_t_u_s, _X_t_C_a_l_l_b_a_c_k_H_a_s_N_o_n_e 
Ǥ)Хåꥹȥ꥽ؤΥ¾
Intrinsics ³ͳƹԤʤФʤʤ


00..33..  Хå³³ɲ

Хå³򥦥åȤΥХåꥹȤɲä
ˤϡ _X_t_A_d_d_C_a_l_l_b_a_c_k Ѥ롥

__
||
void XtAddCallback(_w, _c_a_l_l_b_a_c_k___n_a_m_e_, _c_a_l_l_b_a_c_k, _c_l_i_e_n_t___d_a_t_a)
      Widget _w;
      String _c_a_l_l_b_a_c_k___n_a_m_e;
      XtCallbackProc _c_a_l_l_b_a_c_k;
      XtPointer _c_l_i_e_n_t___d_a_t_a;


_w

_c_a_l_l_b_a_c_k___n_a_m_e
          ³ɲäȤʤ륳ХåꥹȤꤹ
          롥

_c_a_l_l_b_a_c_k  Хå³ꤹ롥

_c_l_i_e_n_t___d_a_t_a
          ɲäΥǡޤ NULL ꤹ롥ɲäΥǡ
          ϡꤵ줿³ƤӽФ줿ݤˤμ³
          Ϥ롥
||__

ƱХåǤ⡤ХåꥹȤʣ󸽤Ф
ƤӽФ롥


Хå³ΥꥹȤꤵ줿åȤΥ
ХåϤˤϡ _X_t_A_d_d_C_a_l_l_b_a_c_k_s Ѥ롥














                             -4-

__
||
void XtAddCallbacks(_w, _c_a_l_l_b_a_c_k___n_a_m_e_, _c_a_l_l_b_a_c_k_s)
      Widget _w;
      String _c_a_l_l_b_a_c_k___n_a_m_e;
      XtCallbackList _c_a_l_l_b_a_c_k_s;


_w         åȤꤹ롥Must be of class Object or
          any subclass thereof.

_c_a_l_l_b_a_c_k___n_a_m_e
          ³ɲäΥХåꥹȤꤹ
          롥

_c_a_l_l_b_a_c_k_s Хå³Ȥб륯饤ȥǡ
          ΥꥹȤꤹ롥ꥹȤκǸǤ NULL 
          롥
||__


00..44..  Хå³³κ

åȤΥХåꥹȤ饳Хå³1
ˤϡ _X_t_R_e_m_o_v_e_C_a_l_l_b_a_c_k Ѥ롥

__
||
void XtRemoveCallback(_w, _c_a_l_l_b_a_c_k___n_a_m_e, _c_a_l_l_b_a_c_k, _c_l_i_e_n_t___d_a_t_a)
      Widget _w;
      String _c_a_l_l_b_a_c_k___n_a_m_e;
      XtCallbackProc _c_a_l_l_b_a_c_k;
      XtPointer _c_l_i_e_n_t___d_a_t_a;


_w         åȤꤹ롥Must be of class Object or
          any subclass thereof.

_c_a_l_l_b_a_c_k___n_a_m_e
          ³륳ХåꥹȤꤹ롥

_c_a_l_l_b_a_c_k  Хå³ꤹ롥

_c_l_i_e_n_t___d_a_t_a
          Ͽ줿ХåΥȥ꡼˥ޥå륯
          ȥǡꤹ롥
||__

_X_t_R_e_m_o_v_e_C_a_l_l_b_a_c_k ХåΤϡ³ȥ
ȥǡξޥåǤ롥


Хå³ΥꥹȤ򥦥åȤΥХåꥹ
ˤϡ _X_t_R_e_m_o_v_e_C_a_l_l_b_a_c_k_s Ѥ롥










                             -5-

__
||
void XtRemoveCallbacks(_w, _c_a_l_l_b_a_c_k___n_a_m_e, _c_a_l_l_b_a_c_k_s)
      Widget _w;
      String _c_a_l_l_b_a_c_k___n_a_m_e;
      XtCallbackList _c_a_l_l_b_a_c_k_s;


_w         åȤꤹ롥Must be of class Object or
          any subclass thereof.

_c_a_l_l_b_a_c_k___n_a_m_e
          ³륳ХåꥹȤꤹ롥

_c_a_l_l_b_a_c_k_s Хå³б륯饤ȥǡΥ
          Ȥꤹ롥ΥꥹȤκǸǤ NULL Ǥ
          롥
||__

ꤷåȤΥХåꥹȤ饳Хå³
ƺΥХåꥹȤбΰƲ
ˤϡ _X_t_R_e_m_o_v_e_A_l_l_C_a_l_l_b_a_c_k_s Ѥ롥

__
||
void XtRemoveAllCallbacks(_w, _c_a_l_l_b_a_c_k___n_a_m_e)
      Widget _w;
      String _c_a_l_l_b_a_c_k___n_a_m_e;


_w         åȤꤹ롥 Must be of class Object
          or any subclass thereof.

_c_a_l_l_b_a_c_k___n_a_m_e
          ꥢ륳ХåꥹȤꤹ롥
||__


00..55..  Хå³³μ¹

꥽̾ǥХåꤷơͿ줿Хå
μ³¹Ԥˤϡ _X_t_C_a_l_l_C_a_l_l_b_a_c_k_s Ѥ롥






















                             -6-

__
||
void XtCallCallbacks(_w, _c_a_l_l_b_a_c_k___n_a_m_e, _c_a_l_l___d_a_t_a)
      Widget _w;
      String _c_a_l_l_b_a_c_k___n_a_m_e;
      XtPointer _c_a_l_l___d_a_t_a;


_w         åȤꤹ롥 Must be of class Object
          or any subclass thereof.

_c_a_l_l_b_a_c_k___n_a_m_e
          ¹Ԥ륳ХåꥹȤꤹ롥

_c_a_l_l___d_a_t_a ХåꥹȸͭΥǡͤޤ NULL 
          ꤹ롥ǡϤ줾ꥹΥХå³
          Ϥ롥
||__


_X_t_C_a_l_l_C_a_l_l_b_a_c_k_s ϻꤵ줿åȤ
ġ_c_a_l_l_b_a_c_k___n_a_m_eȤ̾ΥꥹΥХå³
줾ƤӽФƤӽФκݤˤϡ³ _c_a_l_l_-_d_a_t_a 
Ͽ줿饤ȥǡϤ


ɥ쥹ǻꤷХåꥹμ³¹Ԥ
ϡ _X_t_C_a_l_l_C_a_l_l_b_a_c_k_L_i_s_t Ѥ롥

__
||
void XtCallCallbackList(_w_i_d_g_e_t, _c_a_l_l_b_a_c_k_s, _c_a_l_l___d_a_t_a)
      Widget _w_i_d_g_e_t;
      XtCallbackList _c_a_l_l_b_a_c_k_s;
      XtPointer _c_a_l_l___d_a_t_a;


_w_i_d_g_e_t    ХåꥹȤġåȤΥ󥹥
          ꤹ롥Must be of class Object or any sub-
          class thereof.

_c_a_l_l_b_a_c_k_s ¹Ԥ륳ХåꥹȤꤹ롥

_c_a_l_l___d_a_t_a ХåꥹȸͭΥǡͤޤ NULL 
          ꤹ롥ǡϤ줾ꥹΥХå³
          Ϥ롥
||__

ѥ᡼ _c_a_l_l_b_a_c_k_s ϡåȤޤϥ֥ȤΥ
ƤꤷʤФʤʤΥ꥽ _X_t_R_-
_C_a_l_l_b_a_c_k ɽ롥 _c_a_l_l_b_a_c_k_s  NULL ʤС
_X_t_C_a_l_l_C_a_l_l_b_a_c_k_L_i_s_t ¨¤롥NULL ǤʤС
_X_t_C_a_l_l_C_a_l_l_b_a_c_k_L_i_s_t ϥꥹΥХå³򤽤줾
ƤӽФƤӽФκݤˤϡ饤ȥǡ _c_a_l_l___d_a_t_a
Ϥ롥









                             -7-


00..66..  ХåꥹȤξ֤Υå

Ϳ줿åȤΥХåꥹȤξ֤Τˤϡ
_X_t_H_a_s_C_a_l_l_b_a_c_k_s Ѥ롥


__
||
typedef enum {XtCallbackNoList, XtCallbackHasNone, XtCallbackHasSome} XtCallbackStatus;

XtCallbackStatus XtHasCallbacks(_w, _c_a_l_l_b_a_c_k___n_a_m_e)
      Widget _w;
      String _c_a_l_l_b_a_c_k___n_a_m_e;


_w         åȤꤹ롥 Must be of class Object
          or any subclass thereof.

_c_a_l_l_b_a_c_k___n_a_m_e
          å륳ХåꥹȤꤹ롥
||__

ؿ _X_t_H_a_s_C_a_l_l_b_a_c_k_s ϡåȤ _c_a_l_l_b_a_c_k___n_a_m_e Ǽ
Ǥ륳ХåꥹȤäƤ뤫ɤǽ˥å
롥ХåꥹȤ̵硤 _X_t_H_a_s_C_a_l_l_b_a_c_k_s 
_X_t_C_a_l_l_b_a_c_k_N_o_L_i_s_t ֤롥ХåꥹȤ¸ߤ뤬
Ǥˤϡ _X_t_C_a_l_l_b_a_c_k_H_a_s_N_o_n_e ֤롥Х
ꥹȤ¸ߤʤȤ1ĤΥХåꥹȤϿ
Ƥˤϡ _X_t_C_a_l_l_b_a_c_k_H_a_s_S_o_m_e ֤롥


































                             -8-






























































