home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / smart21b.zip / SAMPLES / WIN31OS2 / OPENFILE.C < prev    next >
C/C++ Source or Header  |  1994-01-13  |  6KB  |  206 lines

  1. #include <windows.h>
  2. #include "openfile.h"
  3. #include "commdlg.h"
  4.  
  5. HWND   hwnd;
  6. HWND   hwndEdit;
  7. HANDLE hAccelTable;
  8. HANDLE hInst;
  9.  
  10. /* new variables for common dialogs */
  11.  
  12. OPENFILENAME ofn;
  13. char szFileName[MAXFILENAME];
  14. char szFileTitle[MAXFILENAME];
  15.  
  16.  
  17. int PASCAL WinMain (HANDLE hInstance, HANDLE hPrevInstance, LPSTR lpCmdLine,
  18.                     int nCmdShow)
  19. {
  20.     MSG msg;
  21.  
  22.     if (!hPrevInstance)
  23.         if (!InitApplication (hInstance))
  24.             return (FALSE);
  25.  
  26.     if (!InitInstance (hInstance, nCmdShow))
  27.         return (FALSE);
  28.  
  29.     while (GetMessage (&msg, NULL, NULL, NULL)) 
  30.         if (!TranslateAccelerator (hwnd, hAccelTable, &msg)) 
  31.         {
  32.             TranslateMessage (&msg);
  33.             DispatchMessage (&msg); 
  34.         }
  35.  
  36.     return (msg.wParam);
  37. }
  38.  
  39.  
  40. BOOL InitApplication (HANDLE hInstance)
  41. {
  42.     WNDCLASS  wc;
  43.  
  44.     wc.style         = NULL;
  45.     wc.lpfnWndProc   = MainWndProc;
  46.     wc.cbClsExtra    = 0;
  47.     wc.cbWndExtra    = 0;
  48.     wc.hInstance     = hInstance;
  49.     wc.hIcon         = LoadIcon (NULL, IDI_APPLICATION);
  50.     wc.hCursor       = LoadCursor (NULL, IDC_ARROW);
  51.     wc.hbrBackground = GetStockObject (WHITE_BRUSH); 
  52.     wc.lpszMenuName  = "AppMenu";
  53.     wc.lpszClassName = "AppClass";
  54.  
  55.     return (RegisterClass (&wc));
  56. }
  57.  
  58.  
  59. BOOL InitInstance (HANDLE hInstance, int nCmdShow)
  60. {
  61.     RECT            Rect;
  62.  
  63.     hInst = hInstance;
  64.  
  65.     hAccelTable = LoadAccelerators (hInst, "AppAccel");
  66.  
  67.     hwnd = CreateWindow ("AppClass", "Application Title",
  68.                WS_OVERLAPPEDWINDOW,
  69.                CW_USEDEFAULT,
  70.                CW_USEDEFAULT,
  71.                CW_USEDEFAULT,
  72.                CW_USEDEFAULT,
  73.                NULL, NULL, hInstance, NULL);
  74.  
  75.     if (!hwnd)
  76.         return (FALSE);
  77.  
  78.     GetClientRect (hwnd, (LPRECT) &Rect);
  79.  
  80.     hwndEdit = CreateWindow ("Edit", NULL,
  81.                    WS_CHILD | WS_VISIBLE | ES_MULTILINE |
  82.                    WS_VSCROLL | WS_HSCROLL |
  83.                    ES_AUTOHSCROLL | ES_AUTOVSCROLL,
  84.                    0, 0, 
  85.                    (Rect.right-Rect.left), (Rect.bottom-Rect.top),
  86.                    hwnd, IDC_EDIT, hInst, NULL);
  87.  
  88.     if (!hwndEdit)
  89.     {
  90.         DestroyWindow(hwnd);
  91.         return (NULL);
  92.     }
  93.  
  94.     /* fill in non-variant fields of OPENFILENAME struct. */
  95.     ofn.lStructSize       = sizeof(OPENFILENAME);
  96.     ofn.hwndOwner         = hwnd;
  97.     ofn.lpstrFilter       = "All Files (*.*)\0*.*\0";
  98.     ofn.lpstrCustomFilter = NULL;
  99.     ofn.nMaxCustFilter    = 0;
  100.     ofn.nFilterIndex      = 0;
  101.     ofn.lpstrFile         = szFileName;
  102.     ofn.nMaxFile          = MAXFILENAME;
  103.     ofn.lpstrInitialDir   = NULL;
  104.     ofn.lpstrFileTitle    = szFileTitle;
  105.     ofn.nMaxFileTitle     = MAXFILENAME;
  106.     ofn.lpstrTitle        = NULL;
  107.     ofn.lpstrDefExt       = "C";
  108.     ofn.Flags             = 0;
  109.  
  110.     ShowWindow (hwnd, nCmdShow);
  111.     UpdateWindow (hwnd);
  112.  
  113.     return (TRUE);
  114.  
  115. }
  116.  
  117.  
  118. long FAR PASCAL MainWndProc (HWND hWnd, unsigned message, 
  119.                              WPARAM wParam, LPARAM lParam)
  120. {
  121.     FARPROC lpProcAbout;
  122.  
  123.     switch (message) 
  124.     {
  125.         case WM_COMMAND:
  126.             switch (wParam) 
  127.             {
  128.                 case IDM_ABOUT:
  129.                     lpProcAbout = MakeProcInstance (About, hInst);
  130.                     DialogBox (hInst, "About", hWnd, lpProcAbout);
  131.                     FreeProcInstance (lpProcAbout);
  132.                     break;
  133.  
  134.                 case IDM_OPEN:
  135.                     if (!GetOpenFileName ((LPOPENFILENAME)&ofn))
  136.                         return FALSE;
  137.  
  138.                     lstrcpy (szWindowTitle, "Application Title");
  139.                     lstrcat (szWindowTitle, " - ");
  140.                     lstrcat (szWindowTitle, szFileTitle);
  141.                     SetWindowText (hWnd, szWindowTitle);
  142.  
  143.                     MessageBox (hWnd, "Open File goes here",
  144.                         "Application Title",
  145.                         MB_ICONASTERISK | MB_OK);
  146.                     break;
  147.  
  148.                 case IDM_SAVEAS:
  149.                     if (!GetSaveFileName ((LPOPENFILENAME)&ofn))
  150.                         return FALSE;
  151.  
  152.                     lstrcpy (szWindowTitle, "Application Title");
  153.                     lstrcat (szWindowTitle, " - ");
  154.                     lstrcat (szWindowTitle, szFileTitle);
  155.                     SetWindowText (hWnd, szWindowTitle);
  156.                                             
  157.                     MessageBox (hWnd, "Save File goes here",
  158.                         "Application Title",
  159.                         MB_ICONASTERISK | MB_OK);
  160.                     break;
  161.  
  162.                 case IDM_EXIT:
  163.                     DestroyWindow (hWnd);
  164.                     break;
  165.             } 
  166.             break;
  167.  
  168.         case WM_SETFOCUS:
  169.             SetFocus (hwndEdit);
  170.             break;
  171.  
  172.         case WM_SIZE:
  173.             MoveWindow (hwndEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
  174.             break;
  175.  
  176.         case WM_DESTROY:
  177.             PostQuitMessage (0);
  178.             break;
  179.  
  180.         default:
  181.             return (DefWindowProc (hWnd, message, wParam, lParam));
  182.     }
  183.     return (NULL);
  184. }
  185.  
  186.  
  187. BOOL FAR PASCAL About (HWND hDlg, unsigned message, 
  188.                        WPARAM wParam, LPARAM lParam)
  189. {
  190.     switch (message) 
  191.     {
  192.         case WM_INITDIALOG:
  193.             return (TRUE);
  194.  
  195.         case WM_COMMAND:
  196.             if (wParam == IDOK || wParam == IDCANCEL) 
  197.             {
  198.                 EndDialog (hDlg, TRUE);
  199.                 return (TRUE);
  200.             }
  201.             break;
  202.     }
  203.  
  204.     return (FALSE);
  205. }
  206.