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

压缩解压

开发平台:

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 <string.h>
  8. #include <io.h>
  9. #include <stdio.h>
  10. #include "wiz.h"
  11. #include "helpids.h"
  12. /****************************************************************************
  13.     FUNCTION: SelectDirProc(HWND, WORD, WPARAM, LPARAM)
  14.     PURPOSE:  Processes messages for "Unzip To..." dialog box
  15.     MESSAGES:
  16.     WM_INITDIALOG - initialize dialog box
  17.     WM_COMMAND    - Input received
  18. ****************************************************************************/
  19. BOOL WINAPI SelectDirProc(HWND hDlg, WORD wMessage, WPARAM wParam, LPARAM lParam)
  20. {
  21.     static OPENFILENAME __far *lpofn = 0;
  22.     static WORD wClose;
  23.     switch (wMessage)
  24.     {
  25.     case WM_DESTROY:
  26.         if (lpofn && lpofn->lpstrFile && (wClose == IDOK))
  27.         {
  28.          DWORD dwResult;      /* result of Save As Default button query */
  29.          /* get state of Save As Default checkbox, if appropriate */
  30.          if (!uf.fUnzipToZipDir)
  31.             {
  32.              dwResult = SendDlgItemMessage(hDlg , IDM_SAVE_AS_DEFAULT, BM_GETSTATE, 0, 0);
  33.              if (dwResult & 1)   /* if checked */
  34.                  {
  35.                  /* save as future default */
  36.                  WritePrivateProfileString(szAppName, szDefaultUnzipToDir,
  37.                                 lpofn->lpstrFile, szWiZIniFile);
  38.                  }
  39.             }
  40.         }
  41.         break;
  42.     case WM_COMMAND:
  43.         /* When the user presses the OK button, stick text
  44.            into the filename edit ctrl to fool the commdlg
  45.            into thinking a file has been chosen.
  46.            We're just interested in the path, so any file
  47.            name will do - so long as it doesn't match
  48.            a directory name, we're fine
  49.         */
  50.         if (LOWORD(wParam) == IDOK)
  51.         {
  52.             SetDlgItemText(hDlg, edt1, "johnny376376.375374373");
  53.             wClose = LOWORD(wParam);
  54.         }
  55.         else if (LOWORD(wParam) == IDCANCEL)
  56.         {
  57.             wClose = LOWORD(wParam);
  58.         }
  59.         break;
  60.     case WM_INITDIALOG:
  61.         {
  62.             RECT    rT1, rT2;
  63.             short   nWidth, nHeight;
  64.             lpofn = (OPENFILENAME __far *)lParam;
  65.             CenterDialog(GetParent(hDlg), hDlg); /* center on parent */
  66.             wClose = 0;
  67.             /* Disable and hide the "save as default" checkbox */
  68.             EnableWindow(GetDlgItem(hDlg, IDM_SAVE_AS_DEFAULT), FALSE);
  69.             ShowWindow(GetDlgItem(hDlg, IDM_SAVE_AS_DEFAULT), SW_HIDE);
  70.             /* Disable the filename edit ctrl
  71.                and the file type label
  72.                and the file type combo box
  73.                Note: stc2, cmb1 etc are defined in DLGS.H in the standard
  74.                windows include files.
  75.             */
  76.             EnableWindow(GetDlgItem(hDlg, edt1), FALSE);
  77.             EnableWindow(GetDlgItem(hDlg, stc2), FALSE);
  78.             EnableWindow(GetDlgItem(hDlg, cmb1), FALSE);
  79.             GetWindowRect(GetDlgItem(hDlg, cmb2), &rT1);
  80.             /*  Hide the file type label & combo box */
  81.             ShowWindow(GetDlgItem(hDlg, stc2), SW_HIDE);
  82.             ShowWindow(GetDlgItem(hDlg, cmb1), SW_HIDE);
  83.             /* Extend the rectangle of the list of files
  84.                in the current directory so that it's flush
  85.                with the bottom of the Drives combo box
  86.             */
  87.             GetWindowRect(GetDlgItem(hDlg, lst1), &rT2);
  88.             nWidth = (short)(rT2.right - rT2.left);
  89.             nHeight = (short)(rT1.bottom - rT2.top);
  90.             ScreenToClient(hDlg, (LPPOINT)&rT2);
  91.             MoveWindow(GetDlgItem(hDlg, lst1),
  92.                         rT2.left, rT2.top,
  93.                         nWidth,
  94.                         nHeight,
  95.                         TRUE);
  96.         }
  97.     default:
  98.         break;
  99.     }
  100.     /* message not handled */
  101.     return 0;
  102. }