home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / dho.zip / DHO / SRC / MODDLOG.CC < prev    next >
C/C++ Source or Header  |  1995-08-27  |  4KB  |  184 lines

  1. /****************************************/
  2. /*    Developer Helper Object Set       */
  3. /*  (C) 1994-95 Thomas E. Bednarz, Jr.  */
  4. /*     All rights reserved              */
  5. /***************************************/
  6.  
  7. /* $Id: moddlog.cc 1.8 1995/08/21 05:59:24 teb Exp $ */
  8.  
  9. #include"moddlog.h"
  10. #include"pmutils.h"
  11. TModalDialog *temp_MD_THIS = NULL;
  12.  
  13.  
  14. //-------------------------------------------------------------------
  15. //  TModalDialog
  16. TModalDialog::TModalDialog(ULONG resource, TWinBase *owner, void *buffer):TWinBase(resource)
  17. {
  18.    fBuffer = buffer;
  19.    fOwner = owner;
  20.    temp_MD_THIS= this;
  21. }
  22.  
  23.  
  24. //-------------------------------------------------------------------
  25. //  ~TModalDialog
  26. TModalDialog::~TModalDialog()
  27. {
  28.    WinDestroyWindow(hwnd);
  29. }
  30.  
  31.  
  32.  
  33. //----------------------------------------------------------------
  34. //  Init
  35. BOOL TModalDialog::init()
  36. {
  37.    HWND ownerHwnd = HWND_DESKTOP;
  38.    if (fOwner != NULL)
  39.       ownerHwnd = fOwner->getHWND();
  40.  
  41.    hwnd = WinLoadDlg( HWND_DESKTOP,
  42.               ownerHwnd,
  43.                     (PFNWP)ClientModDlogProc,
  44.                     getResHMODULE(),
  45.                         fResource,NULL);
  46.    return (hwnd != (HWND)NULL);
  47.  
  48. }
  49.  
  50.  
  51. //-------------------------------------------------------------------
  52. //  Execute
  53. ULONG TModalDialog::Execute()
  54. {
  55.    WinProcessDlg(hwnd);
  56.    return ret_val;
  57. }
  58.  
  59.  
  60. //-------------------------------------------------------------------
  61. //  getClassName
  62. const char *TModalDialog::getClassName()
  63. {
  64.    return "TModalDialog";
  65. }
  66.  
  67.  
  68. //-------------------------------------------------------------------
  69. //  DlogProc
  70. MRESULT TModalDialog::DlogProc(HWND hWnd, ULONG Message, MPARAM mParam1, MPARAM mParam2 )
  71. {
  72.    WinMsg wm;
  73.    wm.hwnd = hWnd;
  74.    wm.msg = Message;
  75.    wm.mp1 = mParam1;
  76.    wm.mp2 = mParam2;
  77.  
  78.    switch (Message)
  79.    {
  80.       case WM_COMMAND:
  81.          doCommand(wm);
  82.          return (MRESULT)FALSE;
  83.       break;
  84.          
  85.       case WM_CONTROL:
  86.          doControl(wm);
  87.          return (MRESULT)TRUE;
  88.       break;
  89.   
  90.       default:
  91.          return WinDefDlgProc(hWnd, Message, mParam1, mParam2);
  92.    }
  93.    return (MRESULT)FALSE;
  94. }
  95.  
  96.  
  97. //-------------------------------------------------------------------
  98. //  doCommand
  99. void TModalDialog::doCommand(WinMsg wm)
  100. {
  101.    SHORT command = SHORT1FROMMP(wm.mp1);
  102.    if (command == DID_OK)
  103.    {
  104.     ret_val = DID_OK;
  105.     if (doOK())
  106.       WinDismissDlg(hwnd,1);
  107.     }
  108.     else if (command == DID_CANCEL) 
  109.     {
  110.        ret_val = DID_CANCEL;
  111.        doCancel();
  112.        WinDismissDlg(hwnd,1);
  113.    }
  114.  
  115. }
  116.  
  117.  
  118. //-------------------------------------------------------------------
  119. //  doCommand
  120. void TModalDialog::doControl(WinMsg wm)
  121. {
  122.    WinDefDlgProc(wm.hwnd, wm.msg, wm.mp1, wm.mp2);
  123. }
  124.  
  125.  
  126.  
  127.  
  128. //-------------------------------------------------------------------
  129. //  doOk
  130. SHORT TModalDialog::doOK(void)
  131. {
  132.    SetData();
  133.    return 1;
  134. }
  135.  
  136.  
  137. //-------------------------------------------------------------------
  138. //  SetData
  139. void TModalDialog::SetData()
  140. {
  141.  
  142. }
  143.  
  144.  
  145. //-------------------------------------------------------------------
  146. //  doCancel
  147. void TModalDialog::doCancel(void)
  148. {
  149.  
  150. }
  151.  
  152.  
  153. //-------------------------------------------------------------------
  154. //  ClientModDlogProc
  155. MRESULT EXPENTRY ClientModDlogProc (HWND hWnd,ULONG iMessage,
  156.     MPARAM mParam1, MPARAM mParam2)
  157. {
  158.     
  159.    WinMsg wm;
  160.    wm.hwnd = hWnd;
  161.    wm.msg = iMessage;
  162.    wm.mp1 = mParam1;
  163.    wm.mp2 = mParam2;
  164.  
  165.    TModalDialog *pDialog = (TModalDialog *)WinQueryWindowULong(hWnd,0);
  166.  
  167.    if (pDialog == 0) 
  168.    {
  169.       if (iMessage == WM_INITDLG)
  170.       {
  171.          pDialog = temp_MD_THIS;
  172.          WinSetWindowULong(hWnd,0,(ULONG)pDialog);
  173.          return pDialog->DlogProc(hWnd,iMessage,mParam1,mParam2);
  174.       }
  175.       else
  176.          return WinDefDlgProc(hWnd,iMessage,mParam1,mParam2);
  177.    } 
  178.    else
  179.       return pDialog->DlogProc(hWnd,iMessage,mParam1,mParam2);
  180.  
  181. }
  182.  
  183.  
  184.