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

压缩解压

开发平台:

Visual C++

  1. /*
  2.  Copyright (C) 1996 Mike White
  3.  Permission is granted to any individual or institution to use, copy, or
  4.  redistribute this software so long as all of the original files are included,
  5.  that it is not sold for profit, and that this copyright notice is retained.
  6. */
  7. #include <windows.h>
  8. #include "wiz.h"
  9. #include "unzipzip.h"
  10. #include "password.h"
  11. #include "helpids.h"
  12. int pwflag;
  13. char *prompt;
  14. char *szPassword;
  15. LPSTR lpPasswordStr;
  16. /****************************************************************************
  17.     FUNCTION: PasswordProc(HWND, WORD, WPARAM, LPARAM)
  18.     PURPOSE:  Processes messages for "Password" dialog box
  19.     MESSAGES:
  20.     WM_INITDIALOG - initialize dialog box
  21.     WM_COMMAND    - Input received
  22. ****************************************************************************/
  23. BOOL WINAPI PasswordProc(HWND hDlg, WORD wMessage, WPARAM wParam, LPARAM lParam)
  24. {
  25.     switch (wMessage)
  26.     {
  27.     case WM_INITDIALOG:
  28.         SetDlgItemText(hDlg, IDM_PASSWORD_INCORRECT, prompt);
  29.         if ((LPSTR)lParam != NULL)
  30.            {
  31.            SetDlgItemText(hDlg, IDM_PASSWORD_TEXT, (LPSTR)lParam);
  32.            }
  33.         SetDlgItemText(hDlg, IDM_NEW_PASSWORD_NAME_TEXT, "");
  34.         CenterDialog(GetParent(hDlg), hDlg); /* center on parent */
  35.         return TRUE;
  36.     case WM_SETFOCUS:
  37.         SetFocus(GetDlgItem(hDlg, IDM_NEW_PASSWORD_NAME_TEXT));
  38.         return TRUE;
  39.     case WM_COMMAND:
  40.         switch (LOWORD(wParam))
  41.         {
  42.         case IDM_PASSWORD_RENAME:
  43.             GetDlgItemText(hDlg, IDM_NEW_PASSWORD_NAME_TEXT, lpPasswordStr, 80);
  44.             pwflag = IZ_PW_ENTERED;
  45.             EndDialog(hDlg, wParam);
  46.             break;
  47.         case IDM_PASSWORD_CANCEL:
  48.             szPassword[0] = '';
  49.             pwflag = IZ_PW_CANCELALL;
  50.             EndDialog(hDlg, wParam);
  51.             break;
  52.         case IDM_PASSWORD_HELP:
  53.             WinHelp(hDlg,szHelpFileName,HELP_CONTEXT, (DWORD)(HELPID_PASSWORD));
  54.             break;
  55.         }
  56.         return TRUE;
  57.     }
  58.     return FALSE;
  59. }
  60. int WINAPI password(LPSTR p, int n, const LPSTR m, const LPSTR name)
  61. {
  62. FARPROC lpProcPassword;
  63.     prompt = (char *)malloc(strlen(m) + 1);
  64.     szPassword = (char *)malloc(n);
  65.     if ((prompt == (char *)NULL) || (szPassword == (char *)NULL)) {
  66.         return IZ_PW_ERROR;
  67.     }
  68.     lpPasswordStr = szPassword;
  69.     pwflag = IZ_PW_ERROR;
  70.     lpProcPassword = MakeProcInstance(PasswordProc, hInst);
  71.     lstrcpy(prompt, m);
  72.     DialogBoxParam(hInst, "Password", hWndMain, lpProcPassword,
  73.        (DWORD)(LPSTR)name);
  74. #ifndef WIN32
  75.     FreeProcInstance(lpProcPassword);
  76. #endif
  77.     lstrcpy(p, szPassword);
  78.     free(szPassword);
  79.     free(prompt);
  80.     return pwflag;
  81. }