home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / winbase / ipc / ddeml / ddeprog / phtest.c < prev    next >
C/C++ Source or Header  |  1997-10-05  |  2KB  |  85 lines

  1.  
  2. /******************************************************************************\
  3. *       This is a part of the Microsoft Source Code Samples. 
  4. *       Copyright (C) 1993-1997 Microsoft Corporation.
  5. *       All rights reserved. 
  6. *       This source code is only intended as a supplement to 
  7. *       Microsoft Development Tools and/or WinHelp documentation.
  8. *       See these sources for detailed information regarding the 
  9. *       Microsoft samples programs.
  10. \******************************************************************************/
  11.  
  12. #include <windows.h>
  13. #include "phtest.h"
  14. #include "proghelp.h"
  15.  
  16. LONG  APIENTRY MainWndProc(HWND hwnd, UINT message, WPARAM wParam, LONG lParam);
  17.  
  18. DWORD GFlags;
  19. DWORD type;
  20. HANDLE hKey;
  21.  
  22. int WINAPI WinMain(
  23. HINSTANCE hInstance,
  24. HINSTANCE hPrevInstance,
  25. LPSTR lpCmdLine,
  26. INT nCmdShow)
  27. {
  28.     DialogBox(hInstance,
  29.             MAKEINTRESOURCE(DID_PHTEST),
  30.             NULL,
  31.             (DLGPROC)MainWndProc);
  32.  
  33.     return(TRUE);
  34. }
  35.  
  36.  
  37.  
  38. LONG  APIENTRY MainWndProc(
  39. HWND hwnd,
  40. UINT message,
  41. WPARAM wParam,
  42. LONG lParam)
  43. {
  44.     TCHAR szT[100];
  45.  
  46.     switch (message) {
  47.     case WM_INITDIALOG:
  48.         if (!ConnectToProgman()) {
  49.             PostMessage(hwnd, WM_CLOSE, 0, 0);
  50.             return(0);
  51.         }
  52.         return(IDEF_EXECTEXT);
  53.  
  54.     case WM_COMMAND:
  55.         switch (LOWORD(wParam)) {
  56.         case IDOK:
  57.             GetDlgItemText(hwnd, IDEF_EXECTEXT, szT, sizeof(szT));
  58.             if (!ProgmanExecuteString(szT)) {
  59.                 MessageBeep(0);
  60.             }
  61.         }
  62.         break;
  63.  
  64.     case WM_CLOSE:
  65.         ShowWindow(hwnd, SW_HIDE);
  66.         if (!DisconnectFromProgman()) {
  67.             /*
  68.              * Progman is not done yet - we need to wait around for the
  69.              * transactions to complete before closing down so just
  70.              * keep posting WM_CLOSE to ourselves to allow DDEML's DDE
  71.              * messages to finish.
  72.              */
  73.             Sleep(100);
  74.             PostMessage(hwnd, WM_CLOSE, 0, 0);
  75.             return(0);
  76.         };
  77.         EndDialog(hwnd, 0);
  78.         break;
  79.  
  80.     }
  81.     return(0);
  82. }
  83.  
  84.  
  85.