home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c221 / 7.ddi / MWHC.007 / S5 < prev    next >
Encoding:
Text File  |  1991-10-23  |  4.1 KB  |  138 lines

  1. /*-----------------------------------
  2.    POPPADF -- Popup Notepad File I/O
  3.   -----------------------------------*/
  4.  
  5. #include <windows.h>
  6.                                         // in FILEDLG.C
  7.  
  8. int DoFileOpenDlg (HANDLE, WORD, char *, char *, WORD,   char *, POFSTRUCT) ;
  9. int DoFileSaveDlg (HANDLE, WORD, char *, char *, WORD *, char *, POFSTRUCT) ;
  10.  
  11. extern char szAppName  [] ;             // in POPPAD.C
  12. extern char szFileSpec [] ;
  13.  
  14. long FileLength (HANDLE hFile)
  15.      {
  16.      long   lCurrentPos = _llseek (hFile, 0L, 1) ;
  17.      long   lFileLength = _llseek (hFile, 0L, 2) ;
  18.      
  19.      _llseek (hFile, lCurrentPos, 0) ;
  20.  
  21.      return lFileLength ;
  22.      }
  23.  
  24. void OkMessageBox (HWND hwnd, char *szString, char *szFileName)
  25.      {
  26.      static char szBuffer [40] ;
  27.  
  28.      wsprintf (szBuffer, szString, (LPSTR) szFileName) ;
  29.  
  30.      MessageBox (hwnd, szBuffer, szAppName, MB_OK | MB_ICONEXCLAMATION) ;
  31.      }
  32.  
  33. BOOL ReadFile (HANDLE hInstance, HWND hwnd, HWND hwndEdit, POFSTRUCT pof,
  34.            char *szFileName, BOOL bAskName)
  35.      {
  36.      DWORD  dwLength ;
  37.      HANDLE hFile, hTextBuffer ;
  38.      LPSTR  lpTextBuffer ;
  39.  
  40.      if (bAskName)
  41.           {
  42.           if (!DoFileOpenDlg (hInstance, hwnd, szFileSpec, szFileSpec + 1,
  43.                                         0x4010, szFileName, pof))
  44.                return FALSE ;
  45.           }
  46.  
  47. #ifdef __HIGHC__
  48.      if ((HANDLE) -1 == (hFile = OpenFile (szFileName, pof, OF_READ | OF_REOPEN)))
  49. #else
  50.      if (-1 == (hFile = OpenFile (szFileName, pof, OF_READ | OF_REOPEN)))
  51. #endif
  52.           {
  53.           OkMessageBox (hwnd, "Cannot open file %s", szFileName) ;
  54.           return FALSE ;
  55.           }
  56.  
  57.      if ((dwLength = FileLength (hFile)) >= 32000)
  58.           {
  59.           _lclose (hFile) ;
  60.           OkMessageBox (hwnd, "File %s too large", szFileName) ;
  61.           return FALSE ;
  62.           }
  63.  
  64.      if (NULL == (hTextBuffer = GlobalAlloc (GHND, (DWORD) dwLength + 1)))
  65.           {
  66.           _lclose (hFile) ;
  67.           OkMessageBox (hwnd, "Cannot allocate memory for %s", szFileName) ;
  68.           return FALSE ;
  69.           }
  70.  
  71.      lpTextBuffer = GlobalLock (hTextBuffer) ;
  72.      _lread (hFile, lpTextBuffer, (WORD) dwLength) ;
  73.      _lclose (hFile) ;
  74.      lpTextBuffer [(WORD) dwLength] = '\0' ;
  75.  
  76.      SetWindowText (hwndEdit, lpTextBuffer) ;
  77.      GlobalUnlock (hTextBuffer) ;
  78.      GlobalFree (hTextBuffer) ;
  79.  
  80.      return TRUE ;
  81.      }
  82.  
  83. BOOL WriteFile (HANDLE hInstance, HWND hwnd, HWND hwndEdit, POFSTRUCT pof,
  84.         char *szFileName, BOOL bAskName)
  85.      {
  86.      char      szBuffer [40] ;
  87.      HANDLE    hFile, hTextBuffer ;
  88. #ifdef __HIGHC__
  89.      LPSTR     npTextBuffer ;
  90. #else
  91.      NPSTR     npTextBuffer ;
  92. #endif
  93.      WORD      wStatus, wLength ;
  94.  
  95.      if (bAskName)
  96.           {
  97.           if (!DoFileSaveDlg (hInstance, hwnd, szFileSpec, szFileSpec + 1,
  98.                                    &wStatus, szFileName, pof))
  99.                return FALSE ;
  100.  
  101.           if (wStatus == 1)
  102.                {
  103.                wsprintf (szBuffer, "Replace existing %s", (LPSTR) szFileName) ;
  104.                if (IDNO == MessageBox (hwnd, szBuffer, szAppName, 
  105.                                              MB_YESNO | MB_ICONQUESTION))
  106.                     return FALSE ;
  107.                }
  108.           }
  109.      else
  110.           OpenFile (szFileName, pof, OF_PARSE) ;
  111.  
  112. #ifdef __HIGHC__
  113.      if ((HANDLE) -1 == (hFile = OpenFile (szFileName, pof, OF_CREATE | OF_REOPEN)))
  114. #else
  115.      if (-1 == (hFile = OpenFile (szFileName, pof, OF_CREATE | OF_REOPEN)))
  116. #endif
  117.           {
  118.           OkMessageBox (hwnd, "Cannot create file %s", szFileName) ;
  119.           return FALSE ;
  120.           }
  121.  
  122.      wLength = GetWindowTextLength (hwndEdit) ;
  123.      hTextBuffer = (HANDLE) SendMessage (hwndEdit, EM_GETHANDLE, 0, 0L) ;
  124.      npTextBuffer = LocalLock (hTextBuffer) ;
  125.  
  126.      if (wLength != _lwrite (hFile, npTextBuffer, wLength))
  127.           {
  128.           _lclose (hFile) ;
  129.           OkMessageBox (hwnd, "Cannot write file %s to disk", szFileName) ;
  130.           return FALSE ;
  131.           }
  132.  
  133.      _lclose (hFile) ;
  134.      LocalUnlock (hTextBuffer) ;
  135.  
  136.      return TRUE ;
  137.      }
  138.