Annotation of mstools/samples/sdktools/image/drwatson/browse.c, revision 1.1

1.1     ! root        1: /*++
        !             2: 
        !             3: Copyright (c) 1993  Microsoft Corporation
        !             4: 
        !             5: Module Name:
        !             6: 
        !             7:     browse.c
        !             8: 
        !             9: Abstract:
        !            10:     This file implements the functions that make use of the common
        !            11:     file open dialogs for browsing for files/directories.
        !            12: 
        !            13: Author:
        !            14: 
        !            15:     Wesley Witt (wesw) 1-May-1993
        !            16: 
        !            17: Environment:
        !            18: 
        !            19:     User Mode
        !            20: 
        !            21: --*/
        !            22: 
        !            23: #include <windows.h>
        !            24: #include <stdlib.h>
        !            25: #include <stdio.h>
        !            26: #include <string.h>
        !            27: #include <commdlg.h>
        !            28: #include <mmsystem.h>
        !            29: #include <direct.h>
        !            30: 
        !            31: #include "drwatson.h"
        !            32: #include "proto.h"
        !            33: #include "resource.h"
        !            34: 
        !            35: 
        !            36: static char   szHelpFileName[MAX_PATH];
        !            37: static char   szLastWaveFile[MAX_PATH];
        !            38: 
        !            39: 
        !            40: 
        !            41: LRESULT PASCAL
        !            42: BrowseHookProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )
        !            43: 
        !            44: /*++
        !            45: 
        !            46: Routine Description:
        !            47: 
        !            48:     Hook procedure for directory browse common file dialog.  This hook
        !            49:     procedure is required to provide help, put the window in the
        !            50:     foreground, and set the edit so that the common file dialog dll
        !            51:     thinks the user entered a value.
        !            52: 
        !            53: Arguments:
        !            54: 
        !            55:     hwnd       - window handle to the dialog box
        !            56:     message    - message number
        !            57:     wParam     - first message parameter
        !            58:     lParam     - second message parameter
        !            59: 
        !            60: Return Value:
        !            61: 
        !            62:     TRUE       - did not process the message
        !            63:     FALSE      - did process the message
        !            64: 
        !            65: --*/
        !            66: 
        !            67: {
        !            68:     if (message==WM_INITDIALOG) {
        !            69:         SetForegroundWindow( hwnd );
        !            70:     }
        !            71:     else
        !            72:     if (message==WM_PAINT) {
        !            73:         SetDlgItemText( hwnd, edt1, "drwatson.log" );
        !            74:     }
        !            75:     else
        !            76:     if (message==WM_COMMAND && wParam==psh15) {
        !            77:         //
        !            78:         // get the help file name
        !            79:         //
        !            80:         GetHelpFileName( szHelpFileName, sizeof( szHelpFileName ) );
        !            81: 
        !            82:         //
        !            83:         // call winhelp
        !            84:         //
        !            85:         WinHelp( hwnd, szHelpFileName, HELP_CONTEXT, IDH_LOGFILELOCATION );
        !            86:     }
        !            87:     return FALSE;
        !            88: }
        !            89: 
        !            90: BOOL
        !            91: BrowseForDirectory( char *szCurrDir )
        !            92: 
        !            93: /*++
        !            94: 
        !            95: Routine Description:
        !            96: 
        !            97:     Presents a common file open dialog that contains only the directory
        !            98:     tree.  The use can select a directory for use as a storage location
        !            99:     for the DRWTSN32 log file.
        !           100: 
        !           101: Arguments:
        !           102: 
        !           103:     szCurrDir  - current directory
        !           104: 
        !           105: Return Value:
        !           106: 
        !           107:     TRUE       - got a good directory (user pressed the OK button)
        !           108:     FALSE      - got nothing (user pressed the CANCEL button)
        !           109: 
        !           110:     the szCurrDir is also changed to have the selected directory.
        !           111: 
        !           112: --*/
        !           113: 
        !           114: {
        !           115:     OPENFILENAME   of;
        !           116:     char           ftitle     [MAX_PATH];
        !           117:     char           title      [MAX_PATH];
        !           118:     char           fname      [MAX_PATH];
        !           119:     char           szDrive    [_MAX_DRIVE];
        !           120:     char           szDir      [_MAX_DIR];
        !           121:     char           szFname    [_MAX_FNAME];
        !           122:     char           szExt      [_MAX_EXT];
        !           123: 
        !           124: 
        !           125:     ftitle[0] = 0;
        !           126:     strcpy( fname, "*.*" );
        !           127:     of.lStructSize = sizeof( OPENFILENAME );
        !           128:     of.hwndOwner = NULL;
        !           129:     of.hInstance = GetModuleHandle( NULL );
        !           130:     of.lpstrFilter = NULL;
        !           131:     of.lpstrCustomFilter = NULL;
        !           132:     of.nMaxCustFilter = 0;
        !           133:     of.nFilterIndex = 0;
        !           134:     of.lpstrFile = fname;
        !           135:     of.nMaxFile = MAX_PATH;
        !           136:     of.lpstrFileTitle = ftitle;
        !           137:     of.nMaxFileTitle = MAX_PATH;
        !           138:     of.lpstrInitialDir = szCurrDir;
        !           139:     strcpy( title, LoadRcString( IDS_LOGBROWSE_TITLE ) );
        !           140:     of.lpstrTitle = title;
        !           141:     of.Flags = OFN_NONETWORKBUTTON |
        !           142:                OFN_ENABLEHOOK      |
        !           143:                OFN_NOCHANGEDIR     |
        !           144:                OFN_SHOWHELP        |
        !           145:                OFN_ENABLETEMPLATE;
        !           146:     of.nFileOffset = 0;
        !           147:     of.nFileExtension = 0;
        !           148:     of.lpstrDefExt = NULL;
        !           149:     of.lCustData = 0;
        !           150:     of.lpfnHook = BrowseHookProc;
        !           151:     of.lpTemplateName = MAKEINTRESOURCE(DIRBROWSEDIALOG);
        !           152:     if (GetSaveFileName( &of )) {
        !           153:         _splitpath( fname, szDrive, szDir, szFname, szExt );
        !           154:         strcpy( szCurrDir, szDrive );
        !           155:         strcat( szCurrDir, szDir );
        !           156:         szCurrDir[strlen(szCurrDir)-1] = '\0';
        !           157:         return TRUE;
        !           158:     }
        !           159:     return FALSE;
        !           160: }
        !           161: 
        !           162: LRESULT PASCAL
        !           163: WaveHookProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )
        !           164: 
        !           165: /*++
        !           166: 
        !           167: Routine Description:
        !           168: 
        !           169:     Hook procedure for wave file selection common file dialog.  This hook
        !           170:     procedure is required to provide help, put the window in the
        !           171:     foreground, and provide a test button for listening to a wave file.
        !           172: 
        !           173: Arguments:
        !           174: 
        !           175:     hwnd       - window handle to the dialog box
        !           176:     message    - message number
        !           177:     wParam     - first message parameter
        !           178:     lParam     - second message parameter
        !           179: 
        !           180: Return Value:
        !           181: 
        !           182:     TRUE       - did not process the message
        !           183:     FALSE      - did process the message
        !           184: 
        !           185: --*/
        !           186: 
        !           187: {
        !           188:     char szWave[MAX_PATH];
        !           189: 
        !           190:     if (message==WM_INITDIALOG) {
        !           191:         SetForegroundWindow( hwnd );
        !           192:     }
        !           193:     else
        !           194:     if (message == WM_COMMAND) {
        !           195:         switch (wParam) {
        !           196:             case ID_TEST_WAVE:
        !           197:                 GetDlgItemText( hwnd, edt1, szWave, sizeof(szWave) );
        !           198:                 PlaySound( szWave, NULL, SND_FILENAME );
        !           199:                 break;
        !           200: 
        !           201:             case psh15:
        !           202:                 //
        !           203:                 // get the help file name
        !           204:                 //
        !           205:                 GetHelpFileName( szHelpFileName, sizeof( szHelpFileName ) );
        !           206: 
        !           207:                 //
        !           208:                 // call winhelp
        !           209:                 //
        !           210:                 WinHelp( hwnd, szHelpFileName, HELP_CONTEXT, IDH_WAVEFILE );
        !           211:                 break;
        !           212:         }
        !           213:     }
        !           214: 
        !           215:     return FALSE;
        !           216: }
        !           217: 
        !           218: BOOL
        !           219: GetWaveFileName( char *szWaveName )
        !           220: 
        !           221: /*++
        !           222: 
        !           223: Routine Description:
        !           224: 
        !           225:     Presents a common file open dialog for the purpose of selecting a
        !           226:     wave file to be played when an application error occurs.
        !           227: 
        !           228: Arguments:
        !           229: 
        !           230:     szWaveName - name of the selected wave file
        !           231: 
        !           232: Return Value:
        !           233: 
        !           234:     TRUE       - got a good wave file name (user pressed the OK button)
        !           235:     FALSE      - got nothing (user pressed the CANCEL button)
        !           236: 
        !           237:     the szWaveName is changed to have the selected wave file name.
        !           238: 
        !           239: --*/
        !           240: 
        !           241: {
        !           242:     OPENFILENAME   of;
        !           243:     char           ftitle[MAX_PATH];
        !           244:     char           title[MAX_PATH];
        !           245:     char           fname[MAX_PATH];
        !           246:     char           filter[1024];
        !           247:     char           szDrive    [_MAX_DRIVE];
        !           248:     char           szDir      [_MAX_DIR];
        !           249:     char           szFname    [_MAX_FNAME];
        !           250:     char           szExt      [_MAX_EXT];
        !           251: 
        !           252: 
        !           253:     ftitle[0] = 0;
        !           254:     strcpy( fname, "*.wav" );
        !           255:     of.lStructSize = sizeof( OPENFILENAME );
        !           256:     of.hwndOwner = NULL;
        !           257:     of.hInstance = GetModuleHandle( NULL );
        !           258:     strcpy( filter, LoadRcString( IDS_WAVE_FILTER ) );
        !           259:     strcpy( &filter[strlen(filter)+1], "*.wav" );
        !           260:     filter[strlen(filter)+1] = '\0';
        !           261:     of.lpstrFilter = filter;
        !           262:     of.lpstrCustomFilter = NULL;
        !           263:     of.nMaxCustFilter = 0;
        !           264:     of.nFilterIndex = 0;
        !           265:     of.lpstrFile = fname;
        !           266:     of.nMaxFile = MAX_PATH;
        !           267:     of.lpstrFileTitle = ftitle;
        !           268:     of.nMaxFileTitle = MAX_PATH;
        !           269:     of.lpstrInitialDir = szLastWaveFile;
        !           270:     strcpy( title, LoadRcString( IDS_WAVEBROWSE_TITLE ) );
        !           271:     of.lpstrTitle = title;
        !           272:     of.Flags = OFN_NONETWORKBUTTON |
        !           273:                OFN_ENABLEHOOK      |
        !           274:                OFN_ENABLETEMPLATE  |
        !           275:                OFN_SHOWHELP        |
        !           276:                OFN_NOCHANGEDIR;
        !           277:     of.nFileOffset = 0;
        !           278:     of.nFileExtension = 0;
        !           279:     of.lpstrDefExt = "wav";
        !           280:     of.lCustData = 0;
        !           281:     of.lpfnHook = WaveHookProc;
        !           282:     of.lpTemplateName = MAKEINTRESOURCE(WAVEFILEOPENDIALOG);
        !           283:     if (GetOpenFileName( &of )) {
        !           284:         strcpy( szWaveName, fname );
        !           285:         _splitpath( fname, szDrive, szDir, szFname, szExt );
        !           286:         strcpy( szLastWaveFile, szDrive );
        !           287:         strcat( szLastWaveFile, szDir );
        !           288:         return TRUE;
        !           289:     }
        !           290:     return FALSE;
        !           291: }
        !           292: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.