home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / win_lrn / comm / clearcom.c < prev    next >
C/C++ Source or Header  |  1988-08-10  |  5KB  |  181 lines

  1. /*
  2.  *
  3.  * Function (s) demonstrated in this program: ClearCommBreak, CloseComm,
  4.  *    OpenComm, SetCommBreak
  5.  *
  6.  * Compiler version:  C 5.10
  7.  *
  8.  * Description:  This function restores character transmission and places the
  9.  *    transmission line in a nonbreak state.
  10.  *
  11.  */
  12.  
  13. #define NOMINMAX
  14. #include <windows.h>
  15. #include <stdlib.h>
  16. #include <stdio.h>
  17. #include "ClearCom.h"
  18.  
  19. HWND     hWndParent1;
  20. HANDLE   hInstMain;
  21.  
  22. char    szOutputBuffer1 [70];
  23. char    szOutputBuffer2 [500];
  24.  
  25.  
  26. /****************************************************************************/
  27. /************************    Message Structure      *************************/
  28. /****************************************************************************/
  29.  
  30. struct   {
  31.   char    *szMessage; 
  32.   } Messages [] =   {
  33.   "About\0",
  34.   "     This is a sample application to demonstrate the\n\
  35. use of the ClearCommBreak, CloseComm, OpenComm, and\n\
  36. SetCommBreak Windows functions.",
  37.  
  38.       "Help Message",
  39.   "     This program uses the ClearCommBreak Windows\n\
  40. function to restore character transmission to the\n\
  41. comm port and places the transmission line in a\n\
  42. nonbreak state.  nResult should be 0 if the function\n\
  43. was successful.  Use the menu to invoke this\n\
  44. function.",
  45.  
  46.   };
  47.  
  48.  
  49. /****************************************************************************/
  50.  
  51. void ProcessMessage (HWND, int);
  52.  
  53. void ProcessMessage (hWnd, MessageNumber)
  54. HWND     hWnd;
  55. int    MessageNumber;
  56.   {
  57.   sprintf (szOutputBuffer1, "%s", Messages [MessageNumber]);
  58.   sprintf (szOutputBuffer2, "%s", Messages [MessageNumber + 1]);
  59.   MessageBox (hWnd, szOutputBuffer2, szOutputBuffer1, MB_OK);
  60.   }
  61.  
  62. /****************************************************************************/
  63.  
  64. int     PASCAL WinMain (hInstance, hPrevInstance, lpszCmdLine, nCmdShow)
  65. HANDLE      hInstance, hPrevInstance;
  66. LPSTR       lpszCmdLine;
  67. int         nCmdShow;
  68.   {
  69.   HWND        hWnd;
  70.   WNDCLASS    wndclass;
  71.   MSG msg;
  72.  
  73.   if (!hPrevInstance)
  74.     {
  75.     wndclass.style         = CS_HREDRAW | CS_VREDRAW;
  76.     wndclass.lpfnWndProc   = WndProc;
  77.     wndclass.cbClsExtra    = 0;
  78.     wndclass.cbWndExtra    = 0;
  79.     wndclass.hInstance     = hInstance;
  80.     wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION);
  81.     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW);
  82.     wndclass.hbrBackground = GetStockObject (WHITE_BRUSH);
  83.     wndclass.lpszMenuName  = "ClearCom";
  84.     wndclass.lpszClassName = "ClearCom";
  85.  
  86.     if (!RegisterClass (&wndclass))
  87.       return FALSE;
  88.     }
  89.  
  90.   hWndParent1 = CreateWindow (szAppName,          /* window class name       */
  91.                              "ClearCommBreak",    /* window caption          */
  92.                              WS_OVERLAPPEDWINDOW, /* window style            */
  93.                              CW_USEDEFAULT,       /* initial x position      */
  94.                              0,                   /* initial y position      */
  95.                              CW_USEDEFAULT,       /* initial x size          */
  96.                              0,                   /* initial y size          */
  97.                              NULL,                /* parent window handle    */
  98.                              NULL,                /* window menu handle      */
  99.                              hInstance,           /* program instance handle */
  100.                              NULL);               /* create parameters       */
  101.  
  102.   ShowWindow (hWndParent1, nCmdShow);
  103.   UpdateWindow (hWndParent1);
  104.  
  105.   hInstMain = hInstance;
  106.  
  107.   while (GetMessage (&msg, NULL, 0, 0))
  108.     {
  109.     TranslateMessage (&msg);
  110.     DispatchMessage (&msg);
  111.     }
  112.   return (msg.wParam);
  113.   }
  114.  
  115. /****************************************************************************/
  116.  
  117. long    FAR PASCAL WndProc (hWnd, iMessage, wParam, lParam)
  118. HWND     hWnd;
  119. unsigned iMessage;
  120. WORD     wParam;
  121. LONG     lParam;
  122.   {
  123.   int    nCid;
  124.   int    nResult;
  125.   HMENU  hMenu;
  126.  
  127.   switch (iMessage)
  128.     {
  129.     case WM_CREATE:
  130.       hMenu = GetSystemMenu (hWnd, FALSE);
  131.       ChangeMenu (hMenu, NULL, "&About", IDM_ABOUT, MF_APPEND | MF_STRING);
  132.       break;
  133.  
  134.     case WM_SYSCOMMAND:
  135.       switch (wParam)
  136.         {
  137.         case IDM_ABOUT:
  138.           ProcessMessage (hWnd, 0);
  139.           break;
  140.         default:
  141.           return DefWindowProc (hWnd, iMessage, wParam, lParam);
  142.         }
  143.       break;
  144.  
  145.     case WM_COMMAND:
  146.       switch (wParam)
  147.         {
  148.         case IDM_CLEARCOM:
  149.           nCid = OpenComm ( (LPSTR)"LPT1", 255, 256);
  150.           sprintf (szOutputBuffer1, "nCid = %i", nCid);
  151.           MessageBox (hWnd, szOutputBuffer1, "OpenComm", MB_OK);
  152.  
  153.           nResult = SetCommBreak (nCid);
  154.           sprintf (szOutputBuffer1, "nResult = %i", nResult);
  155.           MessageBox (hWnd, szOutputBuffer1, "SetCommBreak", MB_OK);
  156.  
  157.           nResult = ClearCommBreak (nCid);
  158.           sprintf (szOutputBuffer1, "nResult = %i", nResult);
  159.           MessageBox (hWnd, szOutputBuffer1, "ClearCommBreak", MB_OK);
  160.  
  161.           nResult = CloseComm (nCid);
  162.           sprintf (szOutputBuffer1, "nResult = %i", nResult);
  163.           MessageBox (hWnd, szOutputBuffer1, "CloseComm", MB_OK);
  164.           break;
  165.  
  166.         case IDM_HELP:
  167.           ProcessMessage (hWnd, 2);
  168.           break;
  169.         }
  170.       break;
  171.  
  172.     case WM_DESTROY:
  173.       PostQuitMessage (0);
  174.       break;
  175.  
  176.     default:
  177.       return DefWindowProc (hWnd, iMessage, wParam, lParam);
  178.     }
  179.   return (0L);
  180.   }
  181.