home *** CD-ROM | disk | FTP | other *** search
/ PC World 2004 November / PCWorld_2004-11_cd.bin / software / temacd / poweroff / pwroff30.exe / src / program.c < prev    next >
C/C++ Source or Header  |  2002-02-16  |  3KB  |  112 lines

  1. #include "poweroff.h"
  2.  
  3. void BrowseFolders(HWND hWnd)
  4. {
  5.   BROWSEINFO bi;
  6.   char buffer[MAX_PATH]="";
  7.   LPITEMIDLIST lpiddl;
  8.   LPMALLOC malc;
  9.  
  10.   Log("BrowseFolders start");
  11.   SHGetMalloc(&malc);
  12.   bi.hwndOwner=hWnd;
  13.   bi.pidlRoot=NULL;
  14.   bi.pszDisplayName=buffer;
  15.   bi.lpszTitle="Select Directory";
  16.   bi.ulFlags=BIF_RETURNONLYFSDIRS ;
  17.   bi.lpfn=NULL;
  18.   bi.lParam=0;
  19.   if ((lpiddl=SHBrowseForFolder(&bi))!=NULL)
  20.   {
  21.     SHGetPathFromIDList(lpiddl,buffer);
  22.     SetDlgItemText(hWnd,IDC_PROGRAM_DIRECTORY,buffer);
  23.   }
  24.   malc->lpVtbl->Free(malc,lpiddl);
  25.   Log("BrowseFolders end, directory=%s",buffer);
  26. }
  27.  
  28. void BrowseProgram(HWND hWnd)
  29. {
  30.   OPENFILENAME openFile;
  31.   char filename[MAX_PATH]="\0";
  32.   char filter[100]="Programs\0*.EXE;*.CMD;*.BAT;*.COM\0All Files\0*.*\0\0\0";
  33.  
  34.   Log("BrowseProgram start");
  35.   openFile.lStructSize=sizeof(OPENFILENAME);
  36.   openFile.hwndOwner=hWnd;
  37.   openFile.hInstance=NULL;
  38.   openFile.lpstrFilter=filter;
  39.   openFile.lpstrCustomFilter=NULL;
  40.   openFile.nMaxCustFilter=255;
  41.   openFile.nFilterIndex=0;
  42.   openFile.lpstrFile=filename;
  43.   openFile.nMaxFile=MAX_PATH;
  44.   openFile.lpstrFileTitle=NULL;
  45.   openFile.nMaxFileTitle=0;
  46.   openFile.lpstrInitialDir=NULL;
  47.   openFile.lpstrTitle=NULL;
  48.   openFile.Flags=OFN_FILEMUSTEXIST|OFN_HIDEREADONLY;
  49.   openFile.nFileOffset=0;
  50.   openFile.nFileExtension=0;
  51.   openFile.lpstrDefExt=NULL;
  52.   openFile.lCustData=0;
  53.   openFile.lpfnHook=NULL;
  54.   openFile.lpTemplateName=NULL;
  55.   GetOpenFileName(&openFile);
  56.   if (filename[0])
  57.   {
  58.     SetDlgItemText(hWnd,IDC_PROGRAM_NAME,filename);
  59.   }
  60.   Log("BrowseProgram end, filename=%s",filename);
  61. }
  62.  
  63.  
  64. BOOL FAR PASCAL ProgramProc(HWND hWnd, unsigned message,DWORD wParam, LONG lParam)
  65. {
  66.   static PowerSettings *ps;
  67.  
  68.   switch (message) 
  69.   {
  70.     case WM_INITDIALOG:
  71.       {
  72.         ps=(PowerSettings*)lParam;
  73.         SetDlgItemText(hWnd,IDC_PROGRAM_NAME,ps->program.program);
  74.         SetDlgItemText(hWnd,IDC_PROGRAM_DIRECTORY,ps->program.directory);
  75.       }      
  76.       return TRUE;
  77.     case WM_COMMAND:
  78.       switch (LOWORD(wParam))
  79.       {
  80.         case IDCANCEL:
  81.           EndDialog(hWnd,TRUE);
  82.           break;
  83.         case IDOK:
  84.           GetDlgItemText(hWnd,IDC_PROGRAM_NAME,ps->program.program,MAX_PATH);
  85.           GetDlgItemText(hWnd,IDC_PROGRAM_DIRECTORY,ps->program.directory,MAX_PATH);
  86.           EndDialog(hWnd,TRUE);
  87.           break;
  88.         case IDC_BROWSE:
  89.           BrowseProgram(hWnd);
  90.           break;
  91.         case IDC_BROWSE_DIRECTORY:
  92.           BrowseFolders(hWnd);
  93.           break;
  94.       }
  95.       break;
  96.       default:
  97.          break;
  98.   }
  99.   return FALSE;
  100. }
  101.  
  102. void ShowProgramDialog(HWND hWnd,PowerSettings *ps)
  103. {
  104.   FARPROC dlgproc;
  105.  
  106.   Log("ShowProgramDialog start");
  107.   dlgproc=MakeProcInstance((FARPROC)ProgramProc,hInst);
  108.     if (DialogBoxParam(hInst,MAKEINTRESOURCE(IDD_PROGRAM),hWnd,(DLGPROC)dlgproc,(LPARAM)ps)==-1)
  109.     DisplayLastError(ps,hWnd);
  110.     FreeProcInstance(dlgproc);
  111.   Log("ShowProgramDialog end");
  112. }