home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / opendc12.zip / od124os2.exe / od12osp1.exe / src / shpin / ioddspm.cpp < prev    next >
C/C++ Source or Header  |  1997-04-02  |  5KB  |  171 lines

  1.  
  2. /* @(#)Z 1.2 com/src/samples/shpin/ioddspm.cpp, odplugin, od96os2, odos29712d 97/03/21 17:51:30 (97/02/27 16:11:39) */
  3.  
  4. //====START_GENERATED_PROLOG======================================
  5. //
  6. //
  7. //   COMPONENT_NAME: odplugin
  8. //
  9. //   CLASSES: none
  10. //
  11. //   ORIGINS: 27
  12. //
  13. //
  14. //   (C) COPYRIGHT International Business Machines Corp. 1997
  15. //   All Rights Reserved
  16. //   Licensed Materials - Property of IBM
  17. //   US Government Users Restricted Rights - Use, duplication or
  18. //   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  19. //
  20. //   IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  21. //   ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  22. //   PURPOSE. IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
  23. //   CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
  24. //   USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
  25. //   OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
  26. //   OR PERFORMANCE OF THIS SOFTWARE.
  27. //
  28. //====END_GENERATED_PROLOG========================================
  29.  
  30. #ifndef SOM_Module_smpdspm_Source
  31. #define SOM_Module_smpdspm_Source
  32. #endif
  33. #define SampleDispatchMonitor_Class_Source
  34.  
  35. #define VARIABLE_MACROS
  36. #include <stdio.h>
  37. #include "ioddspm.xih"
  38. #include "frame.xh"
  39. #include "draft.xh"
  40. #include "winstat.xh"
  41. #include "window.xh"
  42. #include "storageU.xh"
  43. #include "ioddspm.h"
  44.  
  45.  
  46. // 
  47. // Our sample dispatch logs each event passed through the dispatcher
  48. // and sets the draft dirty if the event types is WM_MOVE on OS/2 and 
  49. // Windows platform.
  50. //
  51. SOM_Scope ODBoolean  SOMLINK SampleDispatchMonitorDispatch(
  52.                     SampleDispatchMonitor *somSelf,
  53.                                         Environment *ev,
  54.                                         ODEventData* event,
  55.                     ODEventInfo *eventInfo)
  56. {
  57.     SampleDispatchMonitorData *somThis = SampleDispatchMonitorGetData(somSelf);
  58.     SampleDispatchMonitorMethodDebug("SampleDispatchMonitor","SampleDispatchMonitorDispatch");
  59.  
  60.     const char *msg;
  61.     char work[12];
  62.  
  63.     // Search the message table for the message id. If the message id
  64.     // is found, get the message string from the message table to be
  65.     // used for logging. If the message id is not found in the message
  66.     // table, use the message id for logging. 
  67.     const int array_size = sizeof(messages) / sizeof(message);
  68.     for (int i=0; i<array_size; i++)
  69. #ifdef _PLATFORM_WIN32_
  70.        if (messages[i].id == event->message) break;
  71. #endif
  72. #ifdef _PLATFORM_OS2_
  73.        if (messages[i].id == event->msg) break;
  74. #endif
  75.  
  76.     if (i < array_size)
  77.        msg = messages[i].text;
  78.     else {
  79. #ifdef _PLATFORM_WIN32_
  80.        sprintf(work, "%08X", event->message);
  81. #endif
  82. #ifdef _PLATFORM_OS2_
  83.        sprintf(work, "%08X", event->msg);
  84. #endif
  85.        msg = work;
  86.     }
  87.  
  88. #ifdef _PLATFORM_OS2_
  89.     somPrintf("hwnd=%08X, msg=%s, mp1=%08X, mp2=%08X\n",
  90.              event->hwnd,
  91.              msg,
  92.              event->mp1,
  93.              event->mp2);
  94. #endif
  95. #ifdef _PLATFORM_WIN32_
  96.     somPrintf("hwnd=%08X, msg=%s, wParam=%08X, lParam=%08X\n",
  97.              event->hwnd,
  98.              msg,
  99.              event->wParam,
  100.              event->lParam);
  101. #endif
  102.  
  103.     // If the event type is WM_MOVE, mark the draft dirty.
  104. #ifdef _PLATFORM_WIN32_
  105.     if (event->message == WM_MOVE)
  106. #endif
  107. #ifdef _PLATFORM_OS2
  108.     if (event->msg == WM_MOVE)
  109. #endif
  110.     {
  111.         // Get window state from dispatcher module
  112.     ODWindowState *windowState = somSelf->GetWindowState(ev);
  113.      
  114.     if (windowState)
  115.     {
  116.         // Acquire OD window from the platform window
  117.         ODWindow *window = windowState->AcquireODWindow(ev, event->hwnd);
  118.         if (window)
  119.         {
  120.             // Get root frame belonging to the OD window
  121.             ODFrame *frame = window->GetRootFrame(ev);
  122.             if (frame)
  123.             {
  124.                 // Get draft belonging to the root frame
  125.                 ODDraft *draft = frame->GetStorageUnit(ev)->
  126.                             GetDraft(ev);
  127.  
  128.                 // If draft has write permission, mark draft
  129.                 // dirty.
  130.                 if (draft && 
  131.                   draft->GetPermissions(ev) >= kODDPSharedWrite)
  132.                     draft->SetChangedFromPrev(ev);
  133.             }
  134.             // Release OD window acquired above
  135.             window->Release(ev);
  136.         }
  137.     }
  138.    }
  139.     
  140.    // Return event not handled
  141.    return kODFalse;
  142. }
  143.  
  144. //
  145. // Set window state data
  146. //
  147. SOM_Scope void SOMLINK SampleDispatchMonitorSetWindowState(
  148.                     SampleDispatchMonitor *somSelf,
  149.                                         Environment *ev,
  150.                                         ODWindowState *windowState)
  151. {
  152.     SampleDispatchMonitorData *somThis = SampleDispatchMonitorGetData(somSelf); 
  153.     SampleDispatchMonitorMethodDebug("SampleDispatchMonitor","SampleDispatchMonitorSetWindowState");
  154.  
  155.     _fWindowState = windowState;
  156. }
  157.  
  158. //
  159. // Get window state data
  160. //
  161. SOM_Scope ODWindowState* SOMLINK SampleDispatchMonitorGetWindowState(
  162.                     SampleDispatchMonitor *somSelf,
  163.                                         Environment *ev)
  164. {
  165.     SampleDispatchMonitorData *somThis = SampleDispatchMonitorGetData(somSelf); 
  166.     SampleDispatchMonitorMethodDebug("SampleDispatchMonitor","SampleDispatchMonitorSetWindowState");
  167.  
  168.     return _fWindowState; 
  169. }
  170.  
  171.