B o t h c l i p b o a r d a n d d r a g a n d d r o p o p e r a t i o n s h a v e t w o s i d e s : t h e s o u r c e a n d t a r g e t , t h e d a t a p r o v i d e r a n d t h e d a t a r e c e i v e r .
T h e s e w h i c h m a y b e i n t h e s a m e a p p l i c a t i o n a n d e v e n t h e s a m e w i n d o w w h e n , f o r e x a m p l e , y o u d r a g s o m e t e x t f r o m o n e p o s i t i o n t o
a n o t h e r i n a w o r d p r o c e s s o r . L e t u s d e s c r i b e w h a t e a c h o f t h e m s h o u l d d o .
T h e d a t a p r o v i d e r ( s o u r c e ) d u t i e s
T h e d a t a p r o v i d e r i s r e s p o n s i b l e f o r c r e a t i n g a w x D a t a O b j e c t c o n t a i n i n g t h e d a t a t o b e t r a n s f e r r e d . T h e n i t s h o u l d e i t h e r p a s s
i t t o t h e c l i p b o a r d u s i n g S e t D a t a f u n c t i o n o r t o w x D r o p S o u r c e a n d c a l l D o D r a g D r o p f u n c t i o n .
T h e o n l y ( b u t i m p o r t a n t ) d i f f e r e n c e i s t h a t t h e o b j e c t f o r t h e c l i p b o a r d t r a n s f e r m u s t a l w a y s b e c r e a t e d o n t h e h e a p ( i . e . u s i n g
n e w ) a n d i t w i l l b e f r e e d b y t h e c l i p b o a r d w h e n i t i s n o l o n g e r n e e d e d ( i n d e e d , i t i s n o t k n o w n i n a d v a n c e w h e n , i f e v e r , t h e d a t a
w i l l b e p a s t e d f r o m t h e c l i p b o a r d ) . O n t h e o t h e r h a n d , t h e o b j e c t f o r d r a g a n d d r o p o p e r a t i o n m u s t o n l y e x i s t w h i l e D o D r a g D r o p
e x e c u t e s a n d m a y b e s a f e l y d e l e t e d a f t e r w a r d s a n d s o c a n b e c r e a t e d e i t h e r o n h e a p o r o n s t a c k ( i . e . a s a l o c a l v a r i a b l e ) .
A n o t h e r s m a l l d i f f e r e n c e i s t h a t i n t h e c a s e o f c l i p b o a r d o p e r a t i o n , t h e a p p l i c a t i o n u s u a l l y k n o w s i n a d v a n c e w h e t h e r i t c o p i e s o r
c u t s ( i . e . c o p i e s a n d d e l e t e s ) d a t a - i n f a c t , t h i s u s u a l l y d e p e n d s o n w h i c h m e n u i t e m t h e u s e r c h o s e . B u t f o r d r a g a n d d r o p i t c a n
o n l y k n o w i t a f t e r D o D r a g D r o p r e t u r n s ( f r o m i t s r e t u r n v a l u e ) .
T h e d a t a r e c e i v e r ( t a r g e t ) d u t i e s
T o r e c e i v e ( p a s t e i n u s u a l t e r m i n o l o g y ) d a t a f r o m t h e c l i p b o a r d , y o u s h o u l d c r e a t e a w x D a t a O b j e c t d e r i v e d c l a s s w h i c h s u p p o r t s
t h e d a t a f o r m a t s y o u n e e d a n d p a s s i t a s a r g u m e n t t o w x C l i p b o a r d : : G e t D a t a . I f i t r e t u r n s f a l s e , n o d a t a i n ( a n y o f ) t h e s u p p o r t e d
f o r m a t ( s ) i s a v a i l a b l e . I f i t r e t u r n s t r u e , t h e d a t a h a s b e e n s u c c e s s f u l l y t r a n s f e r r e d t o w x D a t a O b j e c t .
F o r d r a g a n d d r o p c a s e , t h e w x D r o p T a r g e t : : O n D a t a v i r t u a l f u n c t i o n w i l l b e c a l l e d w h e n a d a t a o b j e c t i s d r o p p e d , f r o m w h i c h t h e
d a t a i t s e l f m a y b e r e q u e s t e d b y c a l l i n g w x D r o p T a r g e t : : G e t D a t a m e t h o d w h i c h f i l l s t h e d a t a o b j e c t .
N o v e m b e r 1 5 t h T h u r s d a y ( AS N g 0AS”Nåe 0(gÜfåe ÿ
w x W i d g e t s ' D D E - l i k e p r o t o c o l i s a h i g h - l e v e l p r o t o c o l b a s e d o n W i n d o w s D D E . T h e r e a r e t w o i m p l e m e n t a t i o n s o f t h i s D D E - l i k e p r o t o c o l :
o n e u s i n g r e a l D D E r u n n i n g o n W i n d o w s o n l y , a n d a n o t h e r u s i n g T C P / I P ( s o c k e t s ) t h a t r u n s o n m o s t p l a t f o r m s .
N o t i c e t h a t b y i n c l u d i n g < w x / i p c . h > y o u m a y d e f i n e c o n v e n i e n t s y n o n y m s f o r t h e I P C c l a s s e s : w x S e r v e r f o r e i t h e r w x D D E S e r v e r o r w x T C P S e r v e r
d e p e n d i n g o n w h e t h e r D D E - b a s e d o r s o c k e t - b a s e d i m p l e m e n t a t i o n i s u s e d a n d t h e s a m e t h i n g f o r w x C l i e n t a n d w x C o n n e c t i o n .
B y d e f a u l t , t h e D D E i m p l e m e n t a t i o n i s u s e d u n d e r W i n d o w s . D D E w o r k s w i t h i n o n e c o m p u t e r o n l y . I f y o u w a n t t o u s e I P C b e t w e e n d i f f e r e n t
w o r k s t a t i o n s y o u s h o u l d d e f i n e w x U S E _ D D E _ F O R _ I P C a s 0 b e f o r e i n c l u d i n g t h i s h e a d e r - - t h i s w i l l f o r c e u s i n g T C P / I P i m p l e m e n t a t i o n e v e n
u n d e r W i n d o w s .
T h e f o l l o w i n g d e s c r i p t i o n r e f e r s t o w x . . . b u t r e m e m b e r t h a t t h e e q u i v a l e n t w x T C P . . . a n d w x D D E . . . c l a s s e s c a n b e u s e d i n m u c h t h e s a m e w a y .
T h r e e c l a s s e s a r e c e n t r a l t o t h e D D E - l i k e A P I :
1 . w x C l i e n t . T h i s r e p r e s e n t s t h e c l i e n t a p p l i c a t i o n , a n d i s u s e d o n l y w i t h i n a c l i e n t p r o g r a m .
2 . w x S e r v e r . T h i s r e p r e s e n t s t h e s e r v e r a p p l i c a t i o n , a n d i s u s e d o n l y w i t h i n a s e r v e r p r o g r a m .
3 . w x C o n n e c t i o n . T h i s r e p r e s e n t s t h e c o n n e c t i o n f r o m t h e c l i e n t t o t h e s e r v e r - b o t h t h e c l i e n t a n d t h e s e r v e r u s e a n i n s t a n c e o f t h i s c l a s s ,
o n e p e r c o n n e c t i o n . M o s t D D E t r a n s a c t i o n s o p e r a t e o n t h i s o b j e c t .
M e s s a g e s b e t w e e n a p p l i c a t i o n s a r e u s u a l l y i d e n t i f i e d b y t h r e e v a r i a b l e s : c o n n e c t i o n o b j e c t , t o p i c n a m e a n d i t e m n a m e . A d a t a s t r i n g i s
a f o u r t h e l e m e n t o f s o m e m e s s a g e s . T o c r e a t e a c o n n e c t i o n ( a c o n v e r s a t i o n i n W i n d o w s p a r l a n c e ) , t h e c l i e n t a p p l i c a t i o n u s e s w x C l i e n t : : M a k e C o n n e c t i o n
t o s e n d a m e s s a g e t o t h e s e r v e r o b j e c t , w i t h a s t r i n g s e r v i c e n a m e t o i d e n t i f y t h e s e r v e r a n d a t o p i c n a m e t o i d e n t i f y t h e t o p i c f o r t h e d u r a t i o n o f
t h e c o n n e c t i o n . U n d e r U n i x , t h e s e r v i c e n a m e m a y b e e i t h e r a n i n t e g e r p o r t i d e n t i f i e r i n w h i c h c a s e a n I n t e r n e t d o m a i n s o c k e t w i l l b e u s e d f o r t h e
c o m m u n i c a t i o n s o r a v a l i d f i l e n a m e ( w h i c h s h o u l d n ' t e x i s t a n d w i l l b e d e l e t e d a f t e r w a r d s ) i n w h i c h c a s e a U n i x d o m a i n s o c k e t i s c r e a t e d .
T h e s e r v e r t h e n r e s p o n d s a n d e i t h e r v e t o e s t h e c o n n e c t i o n o r a l l o w s i t . I f a l l o w e d , b o t h t h e s e r v e r a n d c l i e n t o b j e c t s c r e a t e w x C o n n e c t i o n o b j e c t s
w h i c h p e r s i s t u n t i l t h e c o n n e c t i o n i s c l o s e d . T h e c o n n e c t i o n o b j e c t i s t h e n u s e d f o r s e n d i n g a n d r e c e i v i n g s u b s e q u e n t m e s s a g e s b e t w e e n c l i e n t a n d s e r v e r
- o v e r r i d i n g v i r t u a l f u n c t i o n s i n y o u r c l a s s d e r i v e d f r o m w x C o n n e c t i o n a l l o w s y o u t o h a n d l e t h e D D E m e s s a g e s .
T o c r e a t e a w o r k i n g s e r v e r , t h e p r o g r a m m e r m u s t :
1 . D e r i v e a c l a s s f r o m w x C o n n e c t i o n , p r o v i d i n g h a n d l e r s f o r v a r i o u s m e s s a g e s s e n t t o t h e s e r v e r s i d e o f a w x C o n n e c t i o n ( e . g . O n E x e c u t e , O n R e q u e s t , O n P o k e ) .
O n l y t h e h a n d l e r s a c t u a l l y r e q u i r e d b y t h e a p p l i c a t i o n n e e d t o b e o v e r r i d d e n .
2 . D e r i v e a c l a s s f r o m w x S e r v e r , o v e r r i d i n g O n A c c e p t C o n n e c t i o n t o a c c e p t o r r e j e c t a c o n n e c t i o n o n t h e b a s i s o f t h e t o p i c a r g u m e n t . T h i s m e m b e r m u s t c r e a t e
a n d r e t u r n a n i n s t a n c e o f t h e d e r i v e d c o n n e c t i o n c l a s s i f t h e c o n n e c t i o n i s a c c e p t e d .
3 . C r e a t e a n i n s t a n c e o f y o u r s e r v e r o b j e c t a n d c a l l C r e a t e t o a c t i v a t e i t , g i v i n g i t a s e r v i c e n a m e .
T o c r e a t e a w o r k i n g c l i e n t , t h e p r o g r a m m e r m u s t :
1 . D e r i v e a c l a s s f r o m w x C o n n e c t i o n , p r o v i d i n g h a n d l e r s f o r v a r i o u s m e s s a g e s s e n t t o t h e c l i e n t s i d e o f a w x C o n n e c t i o n ( e . g . O n A d v i s e ) . O n l y t h e h a n d l e r s
a c t u a l l y r e q u i r e d b y t h e a p p l i c a t i o n n e e d t o b e o v e r r i d d e n .
2 . D e r i v e a c l a s s f r o m w x C l i e n t , o v e r r i d i n g O n M a k e C o n n e c t i o n t o c r e a t e a n d r e t u r n a n i n s t a n c e o f t h e d e r i v e d c o n n e c t i o n c l a s s .
3 . C r e a t e a n i n s t a n c e o f y o u r c l i e n t o b j e c t .
W h e n a p p r o p r i a t e , c r e a t e a n e w c o n n e c t i o n u s i n g w x C l i e n t : : M a k e C o n n e c t i o n , w i t h a r g u m e n t s h o s t n a m e ( p r o c e s s e d i n U n i x o n l y , u s e ' l o c a l h o s t ' f o r l o c a l c o m p u t e r ) ,
s e r v i c e n a m e , a n d t o p i c n a m e f o r t h i s c o n n e c t i o n . T h e c l i e n t o b j e c t w i l l c a l l O n M a k e C o n n e c t i o n t o c r e a t e a c o n n e c t i o n o b j e c t o f t h e d e r i v e d c l a s s i f t h e c o n n e c t i o n
i s s u c c e s s f u l . U s e t h e w x C o n n e c t i o n m e m b e r f u n c t i o n s t o s e n d m e s s a g e s t o t h e s e r v e r .