home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 June / PCWorld_1998-06_cd.bin / software / sharware / grafika / EROICA16 / CALLBACK.C_ / CALLBACK.C
C/C++ Source or Header  |  1998-01-15  |  3KB  |  118 lines

  1. /*-------------------------- Parallax Standard C_File ----------------------------
  2.       C_File: callback.c
  3.       
  4.       Purpose: This file contains the source code for the handling
  5.                of DDE callbacks for the Eroica unit test program.
  6.               
  7.       
  8. --------------------------------------------------------------------------------
  9.           Copyright (c)1996 Parallax Software , All rights reserved.            
  10. ------------------------------------------------------------------------------*/
  11.  
  12. #include <memory.h>
  13. #include "dde_test.h"
  14. #include "utdde.h"
  15. #include <errno.h>
  16. #include <malloc.h>
  17.  
  18. int      done = 0;
  19. HDDEDATA hDataXact = NULL;
  20. DWORD    dwXactID;
  21.  
  22. #define MAX_DATA        1024
  23.  
  24. #ifndef _WIN32
  25.   HDDEDATA EXPENTRY _export DdeCallBack(WORD wType, WORD wFmt, HCONV hConv, HSZ hsz1, HSZ hsz2, HDDEDATA hData, DWORD dwData1, DWORD dwData2)
  26. #else
  27.   _declspec(dllexport) HDDEDATA EXPENTRY DdeCallBack(WORD wType, WORD wFmt, HCONV hConv, HSZ hsz1, HSZ hsz2, HDDEDATA hData, DWORD dwData1, DWORD dwData2)
  28. #endif
  29.  
  30. {
  31.   char    lpStr[MAX_DATA + 1];
  32.  
  33.   if (dwData2) ;
  34.   if (hConv)   ;
  35.   if (wFmt)    ;
  36.  
  37.   switch (wType)
  38.   {
  39.     case XTYP_ADVDATA:
  40.     {
  41.       if (DdeGetData(hData, lpStr, MAX_DATA, 0) > 0)
  42.       {
  43.         __FMTMSG("Advised of <%s>", (LPSTR)lpStr);
  44.       } else /* if (DdeGetData(hData, lpStr, MAX_DATA, 0) > 0) */
  45.       {
  46.         __MSG("NO DATA!!!!!!");
  47.       } /* if (DdeGetData(hData, lpStr, MAX_DATA, 0) > 0) */
  48.  
  49.       break;
  50.     } /* case XTYP_ADVDATA */
  51.  
  52.     case XTYP_REGISTER:
  53.     {
  54.       DdeKeepStringHandle(idInst, hsz1);
  55.       DdeKeepStringHandle(idInst, hsz2);
  56.  
  57.       hszServerBase = hsz1;
  58.       hszServerInst = hsz2;
  59.  
  60.       return (HDDEDATA)NULL;
  61.     } /* case XTYP_REGISTER */
  62.  
  63.     case XTYP_XACT_COMPLETE:
  64.     {
  65.       DWORD    buf_size;
  66.       LPSTR    img_buf;
  67.       PSTR     pimg_buf;
  68.  
  69.       if (dwXactID == dwData1)
  70.       {
  71.         hDataXact = hData;
  72.  
  73.         if (hDataXact)
  74.         {
  75.           buf_size = DdeGetData(hDataXact, (void FAR *)NULL, 0, 0L);
  76.           buf_size++;
  77.           pimg_buf = (PSTR)malloc((WORD)buf_size);
  78.           img_buf = (LPSTR)pimg_buf;
  79.  
  80.           if (img_buf)
  81.           {
  82.             if (DdeGetData(hDataXact, (LPSTR)img_buf, buf_size, 0L))
  83.             {
  84.               hViewWnd = (HWND) img_ATOI(img_buf);
  85.             }
  86.  
  87.             free(pimg_buf);
  88.           } /* if (img_buf) */
  89.         } /* if (hDataXact) */
  90.  
  91.         done = 1;
  92.       } /* if (dwXactID == dwData1) */
  93.  
  94.       break;
  95.     } /* case XTYP_XACT_COMPLETE */
  96.  
  97.     case XTYP_UNREGISTER:
  98.     {
  99.       return (HDDEDATA)NULL;
  100.     } /* case XTYP_UNREGISTER */
  101.  
  102.     case XTYP_DISCONNECT:
  103.     {
  104.       return (HDDEDATA)NULL;
  105.     } /* case XTYP_DISCONNECT */
  106.  
  107.     default:
  108.     {
  109.       return (HDDEDATA)NULL;
  110.     } /* case default */
  111.   } /* switch (wType) */
  112.  
  113.    return (HDDEDATA)NULL;
  114. }    
  115.  
  116. /* CALLBACK.C */
  117. /* end of file */
  118.