1 /* 2 * Copyright 2004 Martin Fuchs 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 */ 18 19 20 // 21 // Explorer clone 22 // 23 // regfs.h 24 // 25 // Martin Fuchs, 31.01.2004 26 // 27 28 29 /// Registry entry 30 struct RegEntry : public Entry 31 { 32 RegEntry(Entry* parent) : Entry(parent, ET_REGISTRY) {} 33 34 protected: 35 RegEntry() : Entry(ET_REGISTRY) {} 36 37 virtual bool get_path(PTSTR path, size_t path_count) const; 38 virtual BOOL launch_entry(HWND hwnd, UINT nCmdShow); 39 }; 40 41 42 /// Registry key entry 43 struct RegDirectory : public RegEntry, public Directory 44 { 45 RegDirectory(Entry* parent, LPCTSTR path, HKEY hKeyRoot); 46 47 ~RegDirectory() 48 { 49 free(_path); 50 _path = NULL; 51 } 52 53 virtual void read_directory(int scan_flags=0); 54 virtual const void* get_next_path_component(const void*) const; 55 virtual Entry* find_entry(const void*); 56 57 protected: 58 HKEY _hKeyRoot; 59 }; 60 61 62 /// Registry key entry 63 struct RegistryRoot : public RegEntry, public Directory 64 { 65 RegistryRoot() 66 { 67 } 68 69 RegistryRoot(Entry* parent, LPCTSTR path) 70 : RegEntry(parent) 71 { 72 _path = _tcsdup(path); 73 } 74 75 ~RegistryRoot() 76 { 77 free(_path); 78 _path = NULL; 79 } 80 81 virtual void read_directory(int scan_flags=0); 82 }; 83