about.c
上传用户:jlteech
上传日期:2007-01-06
资源大小:349k
文件大小:5k
源码类别:

压缩解压

开发平台:

Visual C++

  1. /* Author Mike White, 1996. Based on original WizUnZip code by
  2.  * Robert Heath.
  3.  */
  4. #include <windows.h>    /* required for all Windows applications */
  5. #include <stdio.h>
  6. #include "wiz.h"
  7. #include "wizver.h"
  8. #include "api.h"
  9. #ifndef WIN32
  10. #define UNZIP_DLL_NAME "UnZip16"
  11. #define DLL_VERSION "(16-bit Version)"
  12. #define ZIP_DLL_NAME "Zip16"
  13. #else
  14. #define UNZIP_DLL_NAME "UnZip32"
  15. #define DLL_VERSION "(32-bit Version)"
  16. #define ZIP_DLL_NAME "Zip32"
  17. #endif
  18. /****************************************************************************
  19.     FUNCTION: About(HWND, unsigned, WPARAM, LPARAM)
  20.     PURPOSE:  Processes messages for "About" dialog box
  21.     MESSAGES:
  22.     WM_INITDIALOG - initialize dialog box
  23.     WM_COMMAND    - Input received
  24. ****************************************************************************/
  25. #ifdef __BORLANDC__
  26. #pragma argsused
  27. #endif
  28. BOOL WINAPI
  29. AboutProc(HWND hwndDlg, WORD wMessage, WPARAM wParam, LPARAM lParam)
  30. {
  31. UzpVer2 VersionUzp;
  32. ZpVer   VersionZp;
  33. char string[80];
  34. #ifndef USE_UNZIP_LIB
  35. typedef void (WINAPI * _get_unzip_ver) (UzpVer2 far *);
  36. _get_unzip_ver GetUnzipVersion;
  37. #endif
  38. #ifndef USE_ZIP_LIB
  39. typedef void (WINAPI * _get_zip_ver) (ZpVer far *);
  40. _get_zip_ver GetZipVersion;
  41. #endif
  42. if ((wMessage == WM_CLOSE) ||
  43.     (wMessage == WM_COMMAND && LOWORD(wParam) == IDOK))
  44.         EndDialog(hwndDlg, TRUE);
  45. if (wMessage == WM_INITDIALOG)
  46.    {
  47. #ifndef BETA
  48.    sprintf(string, "%s %s", APPLICATION, DLL_VERSION);
  49.    SetWindowText(hwndDlg, string);
  50. #else
  51.    SetWindowText(hwndDlg, "BETA - Do Not Distribute");
  52. #endif
  53.    sprintf(string, "Info-ZIP's WiZ version %d.%d.%d%s %s",
  54.       WIZ_MAJORVER, WIZ_MINORVER, WIZ_PATCHLEVEL, WIZBETALEVEL,
  55.       WIZ_VERSION_DATE);
  56.    SetDlgItemText(hwndDlg, IDM_ABOUT_VERSION_INFO, string);
  57. #ifndef USE_ZIP_LIB
  58.    (_get_zip_ver) GetZipVersion =
  59.       (_get_zip_ver)GetProcAddress(hZipDll, "ZpVersion");
  60.    if (!GetZipVersion)
  61.       {
  62.       lstrcpy(string, "Cannot get ZpVersion address");
  63.       }
  64.    else
  65.       {
  66.       (*GetZipVersion)(&VersionZp);
  67.       sprintf(string, "%s DLL Version %d.%d%d %s",
  68.          ZIP_DLL_NAME,
  69.          VersionZp.windll.major,
  70.          VersionZp.windll.minor,
  71.          VersionZp.windll.patchlevel,
  72.          VersionZp.betalevel);
  73.       }
  74. #else
  75.       ZpVersion(&VersionZp);
  76.       sprintf(string, "%s Library Version %d.%d%d %s",
  77.          ZIP_DLL_NAME,
  78.          VersionZp.windll.major,
  79.          VersionZp.windll.minor,
  80.          VersionZp.windll.patchlevel,
  81.          VersionZp.betalevel);
  82. #endif
  83.    SetDlgItemText(hwndDlg, IDM_ABOUT_ZIP_INFO, string);
  84. #ifndef USE_UNZIP_LIB
  85.    (_get_unzip_ver) GetUnzipVersion =
  86.       (_get_unzip_ver)GetProcAddress(hUnzipDll, "UzpVersion2");
  87.    if (!GetUnzipVersion)        
  88.       {
  89.       lstrcpy(string, "Cannot get UzpVersion address");
  90.       }
  91.    else
  92.       {
  93.       (*GetUnzipVersion)(&VersionUzp);
  94.       sprintf(string, "%s DLL Version %d.%d%d %s",
  95.          UNZIP_DLL_NAME,
  96.          VersionUzp.windll.major,
  97.          VersionUzp.windll.minor,
  98.          VersionUzp.windll.patchlevel,
  99.          VersionUzp.betalevel);
  100.       }
  101. #else
  102.       UzpVersion2(&VersionUzp);
  103.       sprintf(string, "%s Library Version %d.%d%d %s",
  104.          UNZIP_DLL_NAME,
  105.          VersionUzp.windll.major,
  106.          VersionUzp.windll.minor,
  107.          VersionUzp.windll.patchlevel,
  108.          VersionUzp.betalevel);
  109. #endif
  110.    SetDlgItemText(hwndDlg, IDM_ABOUT_UNZIP_INFO, string);
  111.    CenterDialog(GetParent(hwndDlg), hwndDlg);
  112.    }
  113. return ((wMessage == WM_CLOSE) || (wMessage == WM_INITDIALOG) || (wMessage == WM_COMMAND))
  114.             ? TRUE : FALSE;
  115. }
  116. /*
  117.  *      CenterDialog
  118.  *
  119.  *      Purpose:
  120.  *              Moves the dialog specified by hwndDlg so that it is centered on
  121.  *              the window specified by hwndParent. If hwndParent is null,
  122.  *              hwndDlg gets centered on the screen.
  123.  *
  124.  *              Should be called while processing the WM_INITDIALOG message
  125.  *              from the dialog's DlgProc().
  126.  *
  127.  *      Arguments:
  128.  *              HWND    parent hwnd
  129.  *              HWND    dialog's hwnd
  130.  *
  131.  *      Returns:
  132.  *              Nothing.
  133.  *
  134.  */
  135. void
  136. CenterDialog(HWND hwndParent, HWND hwndDlg)
  137. {
  138. RECT    rectDlg;
  139. RECT    rect;
  140. int             dx;
  141. int             dy;
  142. if (hwndParent == NULL)
  143.    {
  144.    rect.top = rect.left = 0;
  145.    rect.right = GetSystemMetrics(SM_CXSCREEN);
  146.    rect.bottom = GetSystemMetrics(SM_CYSCREEN);
  147.    }
  148. else
  149.    {
  150.    GetWindowRect(hwndParent, &rect);
  151.    }
  152. GetWindowRect(hwndDlg, &rectDlg);
  153. OffsetRect(&rectDlg, -rectDlg.left, -rectDlg.top);
  154. dx = (rect.left + (rect.right - rect.left -
  155.      rectDlg.right) / 2 + 4) & ~7;
  156. dy = rect.top + (rect.bottom - rect.top -
  157.      rectDlg.bottom) / 2;
  158. WinAssert(hwndDlg);
  159. MoveWindow(hwndDlg, dx, dy, rectDlg.right, rectDlg.bottom, 0);
  160. }