home *** CD-ROM | disk | FTP | other *** search
/ Borland Programmer's Resource / Borland_Programmers_Resource_CD_1995.iso / fonts / cw_src / install / install.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-05-19  |  5.2 KB  |  212 lines

  1. #define    _WINDOWS
  2.  
  3. #define    no_Trace_
  4.  
  5. #include "c:\windev\include\windows.h"
  6. #include "cwinst.h"
  7.  
  8. BOOL    FAR PASCAL MainWndProc (HWND, WORD, WORD, LONG);
  9. BOOL    FAR PASCAL About (HWND, WORD, WORD, LONG);
  10. BOOL    FAR PASCAL Options (HWND, WORD, WORD, LONG);
  11.  
  12. HANDLE    hInst;
  13. char    szCwInst []= "CWINST";
  14. char    szTitle []= "Cyrillic driver installation";
  15.  
  16. HANDLE    hWait;
  17. HANDLE    hArrow;
  18.  
  19. #define    WM_ALTKEYBKILL    (WM_USER + 1141)
  20.  
  21. //
  22. // installations options
  23. //
  24. int    bInstallSys= 1;
  25. int    bCommentFonts= 1;
  26. int    bLangInfo= 1;
  27. int    bLoadFonts= 1;
  28. int    bLoadAuto= 1;
  29.  
  30. int    PASCAL WinMain (hInstance, hPrevInstance, lpCmdLine, nCmdShow)
  31.     HANDLE hInstance;
  32.     HANDLE hPrevInstance;
  33.     LPSTR lpCmdLine;
  34.     int nCmdShow;
  35.     {
  36.     MSG    msg;
  37.     FARPROC    lpfnProc;
  38.     HWND    hWnd;
  39.     /*
  40.     if (!hPrevInstance)
  41.         if (!InitApplication (hInstance))
  42.             return FALSE;
  43.     */
  44.     /*
  45.     if (!InitInstance(hInstance, nCmdShow))
  46.         return FALSE;
  47.     */
  48.     hInst= hInstance;
  49.     lpfnProc= MakeProcInstance (MainWndProc, hInst);
  50.     hWnd= CreateDialog (hInst, "MAINOPTS", NULL, lpfnProc);
  51. //    SetMenu (hWnd, LoadMenu (hInst, szCwInst));
  52.  
  53.     hWait= LoadCursor (NULL, IDC_WAIT);
  54.     hArrow= LoadCursor (NULL, IDC_ARROW);
  55.  
  56.     SetClassWord (hWnd, GCW_HCURSOR, NULL);
  57.  
  58.     while (GetMessage (&msg, NULL, NULL, NULL))
  59.         {
  60.         if (!IsDialogMessage (hWnd, &msg))
  61.             {
  62.             TranslateMessage (&msg);
  63.             DispatchMessage (&msg);
  64.             }
  65.         }
  66. //    while (GetMessage ((LPMSG) &msg, NULL, 0, 0) && !IsDialogMessage(hWnd, &msg))
  67. //        DispatchMessage ((LPMSG) &msg);
  68.  
  69. #ifdef    _Trace_
  70.     DestroyDebugWindow ();
  71. #endif
  72.  
  73.     FreeProcInstance (lpfnProc);
  74.     return msg.wParam;
  75.     }
  76.  
  77. //
  78. //    main window procedure (new version)
  79. //
  80. BOOL    FAR PASCAL MainWndProc (hWnd, wMsg, wParam, lParam)
  81.     register HWND hWnd;
  82.     register WORD wMsg;
  83.     WORD    wParam;
  84.     LONG    lParam;
  85.     {
  86.     FARPROC    lpfnAbout;
  87.     int    cwInst (HWND);
  88.     int    cwDefaults (HWND);
  89.     BOOL    bUninstall (HWND);
  90.     HMENU    hSysMenu;
  91.  
  92.     switch (wMsg)
  93.         {
  94.     case WM_SYSCOMMAND:
  95.         if (wParam == 101)
  96.             {
  97.             lpfnAbout = MakeProcInstance(About, hInst);
  98.             DialogBox (hInst, (LPSTR) "About", hWnd, lpfnAbout);
  99.             FreeProcInstance(lpfnAbout);
  100.             }
  101.         return DefWindowProc(hWnd, wMsg, wParam, lParam);
  102.  
  103.     case WM_DESTROY:
  104.         PostQuitMessage (0);
  105.         break;
  106.     case WM_INITDIALOG:
  107.         SendMessage (-1, WM_ALTKEYBKILL, 0, 0L);
  108.         if (!cwDefaults (hWnd))
  109.             {
  110.             MessageBox (hWnd, "Error initializing installation procedure", szTitle, MB_ICONSTOP|MB_OK);
  111.             PostMessage (hWnd, WM_DESTROY, 0, 0L);
  112.             return FALSE;
  113.             }
  114.         CheckDlgButton (hWnd, IDM_REPLACE, bInstallSys);
  115.         CheckDlgButton (hWnd, IDM_REPLACELANG, bLangInfo);
  116.         CheckDlgButton (hWnd, IDM_AUTO, bLoadAuto);
  117.         CheckDlgButton (hWnd, IDM_REPLACEORIG, bCommentFonts);
  118.         if (bLoadFonts)
  119.             CheckRadioButton (hWnd, IDM_LOADCYR, IDM_DONTLOADCYR, IDM_LOADCYR);
  120.         else
  121.             CheckRadioButton (hWnd, IDM_LOADCYR, IDM_DONTLOADCYR, IDM_DONTLOADCYR);
  122.         EnableWindow (GetDlgItem (hWnd, IDM_REPLACEORIG), bLoadFonts);
  123.         hSysMenu = GetSystemMenu(hWnd, 0);
  124.         AppendMenu(hSysMenu, MF_SEPARATOR, -1, NULL);
  125.         AppendMenu(hSysMenu, MF_STRING, 101,
  126.             (LPSTR) "&About CyrWin installation...");
  127.         return TRUE;
  128.     case WM_COMMAND:
  129.         switch (wParam)
  130.             {
  131.         case IDD_HELP:
  132.             WinHelp (hWnd, "CWINST.HLP", HELP_INDEX, NULL);
  133.             break;
  134.         case IDM_REPLACE:
  135.             bInstallSys^= 1;
  136.             CheckDlgButton (hWnd, IDM_REPLACE, bInstallSys);
  137.             break;
  138.         case IDM_REPLACELANG:
  139.             bLangInfo^= 1;
  140.             CheckDlgButton (hWnd, IDM_REPLACELANG, bLangInfo);
  141.             break;
  142.         case IDM_AUTO:
  143.             bLoadAuto^= 1;
  144.             CheckDlgButton (hWnd, IDM_AUTO, bLoadAuto);
  145.             break;
  146.         case IDM_LOADCYR:
  147.             bLoadFonts= 1;
  148.             if (bLoadFonts)
  149.                 CheckRadioButton (hWnd, IDM_LOADCYR, IDM_DONTLOADCYR, IDM_LOADCYR);
  150.             else
  151.                 CheckRadioButton (hWnd, IDM_LOADCYR, IDM_DONTLOADCYR, IDM_DONTLOADCYR);
  152.             EnableWindow (GetDlgItem (hWnd, IDM_REPLACEORIG), bLoadFonts);
  153.             break;
  154.         case IDM_DONTLOADCYR:
  155.             bLoadFonts= 0;
  156.             if (bLoadFonts)
  157.                 CheckRadioButton (hWnd, IDM_LOADCYR, IDM_DONTLOADCYR, IDM_LOADCYR);
  158.             else
  159.                 CheckRadioButton (hWnd, IDM_LOADCYR, IDM_DONTLOADCYR, IDM_DONTLOADCYR);
  160.             EnableWindow (GetDlgItem (hWnd, IDM_REPLACEORIG), bLoadFonts);
  161.             break;
  162.         case IDM_REPLACEORIG:
  163.             bCommentFonts^= 1;
  164.             CheckDlgButton (hWnd, IDM_REPLACEORIG, bCommentFonts);
  165.             break;
  166.         case IDM_UNINSTALL:
  167.             if (bUninstall (hWnd))
  168.                 {
  169.                 MessageBox (hWnd, "CyrWin files was removed from Windows directory\nwin.ini and system.ini files was restored", szTitle, MB_OK|MB_ICONEXCLAMATION);
  170.                 PostMessage (hWnd, WM_DESTROY, 0, 0L);
  171.                 }
  172.             break;
  173.         case IDOK:
  174.             SetCursor (hWait);
  175.             if (cwInst (hWnd))
  176.                 {
  177.                 MessageBox (hWnd, "CyrWin was sucessfully installed on your computer", szTitle, MB_ICONINFORMATION);
  178.                 ExitWindows (0L, 0);
  179.                 }
  180.             else
  181.                 {
  182.                 MessageBox (hWnd, "Installation failed\nTry again", szTitle, MB_ICONSTOP|MB_OK);
  183.                 }
  184.             SetCursor (hArrow);
  185.             break;
  186.         case IDCANCEL:
  187.             PostQuitMessage (0);
  188.             break;
  189.             }
  190.         }
  191.     return FALSE;
  192.     }
  193.  
  194.  
  195. BOOL    FAR PASCAL About (hDlg, wMsg, wParam, lParam)
  196.     register HWND hDlg;
  197.     register WORD wMsg;
  198.     WORD    wParam;
  199.     LONG    lParam;
  200.     {
  201.     switch (wMsg)
  202.         {
  203.     case WM_INITDIALOG:
  204.         return TRUE;
  205.  
  206.     case WM_COMMAND:
  207.         EndDialog (hDlg, TRUE);
  208.         return TRUE;
  209.         }
  210.     return FALSE;
  211.     }
  212.