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

  1. /*
  2.  *
  3.  *  CloseComm
  4.  *  
  5.  *  This program demonstrates the use of the function CloseComm.
  6.  *  This function closes the communication device specified by the
  7.  *  parameter and frees any memory allocated for the device's transmit
  8.  *  and receive queues. All characters in the output queue are sent
  9.  *  before the communication device is closed.
  10.  *  
  11.  *  Other references: CFDial.c
  12.  */
  13.  
  14. /*************************************************************************/
  15. /*                           INCLUDE FILES                               */
  16. /*************************************************************************/
  17.  
  18. #include <windows.h>
  19.  
  20. /*************************************************************************/
  21. /*                        STRUCTURE DEFINTIONS                           */
  22. /*************************************************************************/
  23.  
  24. typedef struct
  25. {
  26.    int nDummy;
  27. }
  28. SETUPDATA;
  29.  
  30. /*************************************************************************/
  31. /*                         GLOBAL VARIABLES                              */
  32. /*************************************************************************/
  33.  
  34. static SETUPDATA strSetUpData;
  35. static HANDLE hInst;
  36. static char szFileName[] = "closecom";
  37. static char szFuncName[] = "CloseComm";
  38.  
  39. /*************************************************************************/
  40. /*                       FORWARD REFERENCES                              */
  41. /*************************************************************************/
  42.  
  43. long FAR PASCAL WindowProc ( HANDLE , unsigned , WORD , LONG );
  44.  
  45. /*************************************************************************/
  46. /*                         MAIN PROCEDURE                                */
  47. /*************************************************************************/
  48.  
  49. int PASCAL WinMain( hInstance, hPrevInstance, lpszCmdLine, cmdShow )
  50. HANDLE hInstance, hPrevInstance;
  51. LPSTR  lpszCmdLine;
  52. int    cmdShow;
  53. {
  54.   MSG  msg;
  55.  
  56.   WindowInit (hInstance, hPrevInstance, cmdShow );
  57.  
  58.   while ( GetMessage((LPMSG)&msg, NULL, 0 , 0 ))
  59.     {
  60.     TranslateMessage((LPMSG)&msg);
  61.     DispatchMessage((LPMSG)&msg);
  62.     }
  63.   exit(msg.wParam);
  64. }
  65.  
  66. /*************************************************************************/
  67. /*                      INITIALIZATION                                   */
  68. /*************************************************************************/
  69.  
  70. BOOL WindowInit (hInstance , hPrevInstance , cmdShow)
  71. HANDLE hInstance, hPrevInstance;
  72. int cmdShow;
  73. {
  74.   HWND  hWnd;
  75.  
  76.   if ( !hPrevInstance )
  77.      {
  78.      WNDCLASS rClass;
  79.  
  80.      rClass.style         = CS_HREDRAW | CS_VREDRAW;
  81.      rClass.lpfnWndProc   = WindowProc;
  82.      rClass.cbClsExtra    = 0;
  83.      rClass.cbWndExtra    = 0;
  84.      rClass.hInstance     = hInstance;
  85.      rClass.hCursor       = LoadCursor ( NULL , IDC_ARROW );
  86.      rClass.hIcon         = LoadIcon ( hInstance, IDI_APPLICATION );
  87.      rClass.hbrBackground = GetStockObject ( WHITE_BRUSH );
  88.      rClass.lpszMenuName  = (LPSTR) NULL;
  89.      rClass.lpszClassName = (LPSTR) szFileName;
  90.    
  91.      RegisterClass ( ( LPWNDCLASS ) &rClass );
  92.      }
  93.   else
  94.      GetInstanceData ( hPrevInstance, (PSTR) &strSetUpData,
  95.         sizeof ( SETUPDATA ) );
  96.  
  97.   hInst = hInstance;
  98.  
  99.   hWnd = CreateWindow ( (LPSTR) szFileName, (LPSTR) szFuncName,
  100.                       WS_OVERLAPPEDWINDOW,
  101.                       CW_USEDEFAULT, CW_USEDEFAULT,
  102.                       CW_USEDEFAULT, CW_USEDEFAULT,
  103.                       (HWND) NULL, (HMENU) NULL,
  104.                       (HANDLE) hInstance, (LPSTR) NULL );
  105.  
  106.   ShowWindow ( hWnd , cmdShow );
  107.   UpdateWindow (hWnd);
  108.  
  109.   return TRUE;
  110. }
  111.  
  112. /*************************************************************************/
  113. /*                 WINDOW PROCEDURE - PROCESS MESSAGES                   */
  114. /*************************************************************************/
  115.  
  116. long FAR PASCAL WindowProc (hWnd , message , wParam , lParam)
  117. HWND        hWnd;
  118. unsigned    message;
  119. WORD        wParam;
  120. LONG        lParam;
  121. {
  122.     PAINTSTRUCT ps;
  123.  
  124.     switch (message)
  125.     {
  126.  
  127.     case WM_PAINT:
  128.         BeginPaint ( hWnd, (LPPAINTSTRUCT)&ps );
  129.         FunctionDemonstrated ( );
  130.         EndPaint ( hWnd, (LPPAINTSTRUCT)&ps );
  131.         break;
  132.  
  133.     case WM_DESTROY:
  134.         PostQuitMessage ( 0 );
  135.         break;
  136.  
  137.     default:
  138.         return ( DefWindowProc ( hWnd , message , wParam , lParam ) );
  139.         break;
  140.     }
  141.   return ( 0L );
  142. }
  143.  
  144. /*************************************************************************/
  145. /*              FUNCTION DEMONSTRATED HERE - LOOK HERE                   */
  146. /*************************************************************************/
  147.  
  148. FunctionDemonstrated ( )
  149. {
  150.   int nCid;
  151.   int nResult;
  152.  
  153.   nCid = OpenComm ( ( LPSTR ) "LPT1", 255, 256 );
  154.    
  155.   MessageBox ( NULL, ( LPSTR ) "Closing LPT1", ( LPSTR ) szFuncName, MB_OK );
  156.  
  157.   nResult = CloseComm ( nCid );
  158.  
  159.   if ( nResult == 0 )
  160.      MessageBox (NULL, (LPSTR)"LPT1 closed", (LPSTR)szFuncName, MB_OK);
  161.   else
  162.      MessageBox (NULL, (LPSTR)"LPT1 not closed", (LPSTR)szFuncName, MB_OK);
  163.  
  164.   return TRUE;
  165. }
  166.