CMGDK r49-rc2
K:/CMGDKv18/SDK/Include/hgl/platform/compiler/EventFunc.H
浏览该文件的文档。
00001 # i f n d e f   H G L _ E V E N T _ F U N C _ I N C L U D E 
00002  
00003  # d e f i n e   H G L _ E V E N T _ F U N C _ I N C L U D E 
00004  
00005  
00006  
00007  # i n c l u d e < h g l / o b j e c t / _ O b j e c t . H > 
00008  
00009  n a m e s p a c e   h g l 
00010  
00011  { 
00012  
00013      # i f d e f   _ _ B O R L A N D C _ _   
00014  
00015      
00016  
00017          # d e f i n e   S e t E v e n t C a l l ( e v e n t _ o b j , o b j _ t h i s , c l a s s _ n a m e , e v e n t _ f u n c )     e v e n t _ o b j = o b j _ t h i s - > c l a s s _ n a m e : : e v e n t _ f u n c 
00018  
00019          # d e f i n e   S a f e C a l l E v e n t ( e v e n t _ o b j , i n t r o )                             { i f ( e v e n t _ o b j ) e v e n t _ o b j   i n t r o ; } 
00020  
00021          # d e f i n e   C a l l E v e n t ( e v e n t _ o b j , i n t r o )                                 e v e n t _ o b j   i n t r o 
00022  
00023          # d e f i n e   D e f E v e n t ( r e s u l t , n a m e , i n t r o )                                   r e s u l t   ( _ _ c l o s u r e   * n a m e ) i n t r o 
00024  
00025  
00026  
00027      # e l s e 
00028  
00029      
00030  
00031          t e m p l a t e   < t y p e n a m e   F u n c >   s t r u c t   E v e n t F u n c 
00032  
00033          { 
00034  
00035              u n i o n 
00036  
00037              { 
00038  
00039                  v o i d   * v p _ t h i s ; 
00040  
00041                  _ O b j e c t   * t h i s _ p o i n t e r ; 
00042  
00043              } ; 
00044  
00045  
00046  
00047              u n i o n 
00048  
00049              { 
00050  
00051                  v o i d   * v p _ f u n c ; 
00052  
00053                  F u n c   f u n c _ p o i n t e r ; 
00054  
00055                  O b j e c t M e m b e r F u n c   o m f ; 
00056  
00057              } ; 
00058  
00059  
00060  
00061              v o i d   o p e r a t o r   =   ( v o i d   * v ) 
00062  
00063              { 
00064  
00065                  i f ( v = = 0 ) 
00066  
00067                      v p _ f u n c = 0 ; 
00068  
00069              } 
00070  
00071  
00072  
00073              b o o l   o p e r a t o r   = =   ( v o i d   * v ) 
00074  
00075              { 
00076  
00077                  r e t u r n ( v p _ f u n c = = v ) ; 
00078  
00079              } 
00080  
00081  
00082  
00083              b o o l   o p e r a t o r   ! =   ( v o i d   * v ) 
00084  
00085              { 
00086  
00087                  r e t u r n ( v p _ f u n c ! = v ) ; 
00088  
00089              } 
00090  
00091          } ; / / t e m p l a t e   < t y p e n a m e   F u n c >   s t r u c t   E v e n t F u n c 
00092  
00093  
00094  
00095          # d e f i n e   S e t E v e n t C a l l ( e v e n t _ o b j , o b j _ t h i s , c l a s s _ n a m e , e v e n t _ f u n c )     {   \ 
00096  
00097                                                                              e v e n t _ o b j . v p _ t h i s = o b j _ t h i s ;   \ 
00098  
00099                                                                              e v e n t _ o b j . v p _ f u n c = G e t M e m b e r F u n c P o i n t e r ( c l a s s _ n a m e , e v e n t _ f u n c ) ;     \ 
00100  
00101                                                                          } 
00102  
00103  
00104  
00105          # d e f i n e   S e t E v e n t T h i s ( e v e n t _ o b j , o b j _ t h i s )             e v e n t _ o b j . v p _ t h i s = o b j _ t h i s ; 
00106  
00107  
00108  
00109          # d e f i n e   C a l l E v e n t ( e v e n t _ o b j , i n t r o )                     ( ( e v e n t _ o b j . t h i s _ p o i n t e r - > * ( e v e n t _ o b j . f u n c _ p o i n t e r ) ) i n t r o ) 
00110  
00111  
00112  
00113          # d e f i n e   S a f e C a l l E v e n t ( e v e n t _ o b j , i n t r o )                 { i f ( e v e n t _ o b j . v p _ f u n c ) C a l l E v e n t ( e v e n t _ o b j , i n t r o ) ; } 
00114  
00115  
00116  
00117          # d e f i n e   D e f E v e n t ( r e s u l t , n a m e , i n t r o )                   E v e n t F u n c < r e s u l t   ( _ O b j e c t : :   * ) i n t r o >   n a m e ; 
00118  
00119  
00120  
00121      # e n d i f / / _ _ B O R L A N D C _ _ 
00122  
00123  
00124  
00125      / * 
00126  
00127  
00128  
00129      O(uel: 
00130  
00131  
00132  
00133          c l a s s   E x a m p l e 
00134  
00135          { 
00136  
00137              / / SB o r l a n d / C o d e G e a r e_
00138  
00139              v o i d   ( _ _ c l o s u r e   * O n C l i c k ) ( O b j e c t   * ) ; 
00140  
00141  
00142  
00143              / / s(ue_
00144  
00145              D e f E v e n t ( v o i d , O n C l i c k , ( O b j e c t   * ) ) ; 
00146  
00147          } ; 
00148  
00149  
00150  
00151          v o i d   T e s t : : C l i c k P r o c ( O b j e c t   * ) ; 
00152  
00153  
00154  
00155          v o i d   T e s t : : f u n c ( ) 
00156  
00157          { 
00158  
00159              E x a m p l e   * e x p ; 
00160  
00161  
00162  
00163              { 
00164  
00165                  / / SB o r l a n d / C o d e G e a r e_
00166  
00167                  e x p - > O n C l i c k = t h i s - > C l i c k P r o c ; 
00168  
00169                  b
00170  
00171                  e x p - > O n C l i c k = C l i c k P r o c ; 
00172  
00173  
00174  
00175                  / / s(ue_
00176  
00177                  S e t E v e n t C a l l ( e x p - > O n C l i c k , t h i s , T e s t , C l i c k P r o c ) ; 
00178  
00179              } 
00180  
00181  
00182  
00183              { 
00184  
00185                  / / SB o r l a n d / C o d e G e a r e_
00186  
00187                  e x p - > O n C l i c k ( N U L L ) ; 
00188  
00189  
00190  
00191                  / / s(ue_
00192  
00193                  C a l l E v e n t ( e x p - > O n C l i c k , ( N U L L ) ) ; 
00194  
00195              } 
00196  
00197          } 
00198  
00199  
00200  
00201      * / 
00202  
00203  } / / n a m e s p a c e   h g l 
00204  
00205  # e n d i f / / H G L _ E V E N T _ F U N C _ I N C L U D E 
00206  
00207  
 全部  名字空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义