/* * Copyright 2000 Martin Fuchs * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #define WIN32_LEAN_AND_MEAN #define WIN32_EXTRA_LEAN #define NOSERVICE #define NOMCX #define NOIME #define NOCOMM #define NOKANJI #define NORPC #define NOPROXYSTUB #define NOIMAGE #define NOTAPE #ifdef UNICODE #define _UNICODE #include <wchar.h> #endif #include <windows.h> #include <windowsx.h> #include <commctrl.h> #include <shellapi.h> #include <stdlib.h> #include <stdio.h> #include <tchar.h> #include <ctype.h> #ifdef _MSC_VER #include <malloc.h> /* for alloca() */ #endif #ifndef FILE_ATTRIBUTE_NOT_CONTENT_INDEXED #define FILE_ATTRIBUTE_ENCRYPTED 0x00000040 #define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200 #define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400 #define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000 #endif #ifdef _DEBUG #define ASSERT(x) {if (!(x)) DebugBreak();} #else #define ASSERT(x) /* nothing */ #endif #ifdef _MSC_VER #define LONGLONGARG _T("I64") #else #define LONGLONGARG _T("L") #endif #define BUFFER_LEN 1024 enum IMAGE { IMG_NONE=-1, IMG_FILE=0, IMG_DOCUMENT, IMG_EXECUTABLE, IMG_FOLDER, IMG_OPEN_FOLDER, IMG_FOLDER_PLUS,IMG_OPEN_PLUS, IMG_OPEN_MINUS, IMG_FOLDER_UP, IMG_FOLDER_CUR }; #define IMAGE_WIDTH 16 #define IMAGE_HEIGHT 13 #define SPLIT_WIDTH 5 #define IDW_STATUSBAR 0x100 #define IDW_TOOLBAR 0x101 #define IDW_DRIVEBAR 0x102 #define IDW_FIRST_CHILD 0xC000 /*0x200*/ #define IDW_TREE_LEFT 3 #define IDW_TREE_RIGHT 6 #define IDW_HEADER_LEFT 2 #define IDW_HEADER_RIGHT 5 #define WM_DISPATCH_COMMAND 0xBF80 #define COLOR_COMPRESSED RGB(0,0,255) #define COLOR_SELECTION RGB(0,0,128) #ifdef _NO_EXTENSIONS #define COLOR_SPLITBAR WHITE_BRUSH #else #define COLOR_SPLITBAR LTGRAY_BRUSH #endif #define WINEFILEFRAME _T("WFS_Frame") #define WINEFILETREE _T("WFS_Tree") #define WINEFILEDRIVES _T("WFS_Drives") #define WINEFILEMDICLIENT _T("WFS_MdiClient") #define FRM_CALC_CLIENT 0xBF83 #define Frame_CalcFrameClient(hwnd, prt) ((BOOL)SNDMSG(hwnd, FRM_CALC_CLIENT, 0, (LPARAM)(PRECT)prt)) typedef struct { HANDLE hInstance; HACCEL haccel; HWND hMainWnd; HMENU hMenuFrame; HMENU hWindowsMenu; HMENU hLanguageMenu; HMENU hMenuView; HMENU hMenuOptions; HWND hmdiclient; HWND hstatusbar; HWND htoolbar; HWND hdrivebar; HFONT hfont; TCHAR num_sep; SIZE spaceSize; HIMAGELIST himl; TCHAR drives[BUFFER_LEN]; BOOL prescan_node; /*TODO*/ UINT wStringTableOffset; } WINEFILE_GLOBALS; extern WINEFILE_GLOBALS Globals; #ifdef UNICODE extern void _wsplitpath(const WCHAR* path, WCHAR* drv, WCHAR* dir, WCHAR* name, WCHAR* ext); #else extern void _splitpath(const CHAR* path, CHAR* drv, CHAR* dir, CHAR* name, CHAR* ext); #endif