New File Manager application - winfile.
authorRobert Dickenson <robd@reactos.org>
Wed, 3 Jul 2002 19:32:52 +0000 (19:32 +0000)
committerRobert Dickenson <robd@reactos.org>
Wed, 3 Jul 2002 19:32:52 +0000 (19:32 +0000)
svn path=/trunk/; revision=3176

20 files changed:
rosapps/winfile/Makefile [new file with mode: 0644]
rosapps/winfile/StdAfx.cpp [new file with mode: 0644]
rosapps/winfile/StdAfx.h [new file with mode: 0644]
rosapps/winfile/about.cpp [new file with mode: 0644]
rosapps/winfile/about.h [new file with mode: 0644]
rosapps/winfile/debug.cpp [new file with mode: 0644]
rosapps/winfile/debug.h [new file with mode: 0644]
rosapps/winfile/folder1.bmp [new file with mode: 0644]
rosapps/winfile/folder2.bmp [new file with mode: 0644]
rosapps/winfile/folder3.bmp [new file with mode: 0644]
rosapps/winfile/listview.cpp [new file with mode: 0644]
rosapps/winfile/listview.h [new file with mode: 0644]
rosapps/winfile/resource.h [new file with mode: 0644]
rosapps/winfile/small.ico [new file with mode: 0644]
rosapps/winfile/treeview.cpp [new file with mode: 0644]
rosapps/winfile/treeview.h [new file with mode: 0644]
rosapps/winfile/winfile.cpp [new file with mode: 0644]
rosapps/winfile/winfile.h [new file with mode: 0644]
rosapps/winfile/winfile.ico [new file with mode: 0644]
rosapps/winfile/winfile.rc [new file with mode: 0644]

diff --git a/rosapps/winfile/Makefile b/rosapps/winfile/Makefile
new file mode 100644 (file)
index 0000000..cf8506e
--- /dev/null
@@ -0,0 +1,91 @@
+#
+#  ReactOS winfile
+#
+#  Makefile
+#
+#  Copyright (C) 2002  Robert Dickenson <robd@reactos.org>
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program 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 General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+       
+PATH_TO_TOP = ..
+
+TARGET = winfile
+
+BASE_CFLAGS = -DGCC -D_WIN32_IE=0x0400
+
+RCFLAGS = -DGCC -D_WIN32_IE=0x0400
+
+
+OBJS = about.o \
+       debug.o \
+       treeview.o \
+       listview.o \
+       $(TARGET).o
+
+LIBS = -lgdi32 -luser32 -lkernel32 -lcomctl32
+
+all:   $(TARGET).exe
+
+$(TARGET).res: $(TARGET).rc
+
+$(TARGET).exe: $(OBJS) $(TARGET).coff
+       $(CC) -Wl,--subsystem,windows -o $(TARGET).exe $(OBJS) $(TARGET).coff $(LIBS)
+       $(NM) --numeric-sort $(TARGET).exe > $(TARGET).sym
+
+
+about.o:       about.cpp about.h resource.h
+
+affinity.o:    affinity.cpp affinity.h
+
+applicationpage.o:     applicationpage.cpp applicationpage.h processpage.h $(TARGET).h resource.h
+
+column.o:      column.cpp column.h resource.h
+
+debug.o:       debug.cpp debug.h
+
+endproc.o:     endproc.cpp endproc.h
+
+font.o:                font.cpp font.h
+
+graph.o:       graph.cpp graph.h resource.h
+
+graphctrl.o:   graphctrl.cpp graphctrl.h resource.h
+
+optnmenu.o:    optnmenu.cpp optnmenu.h resource.h
+
+perfdata.o:    perfdata.cpp perfdata.h
+
+performancepage.o:     performancepage.cpp performancepage.h perfdata.h graphctrl.h graph.h $(TARGET).h resource.h
+
+priority.o:    priority.cpp priority.h
+
+processpage.o: processpage.cpp processpage.h perfdata.h column.h proclist.h $(TARGET).h resource.h
+
+proclist.o:    proclist.cpp proclist.h
+
+run.o:         run.cpp run.h
+
+trayicon.o:    trayicon.cpp trayicon.h resource.h
+
+$(TARGET).o:   $(TARGET).cpp $(TARGET).h resource.h
+
+clean:
+       - $(RM) $(OBJS)
+       - $(RM) $(TARGET).exe
+       - $(RM) $(TARGET).sym
+       - $(RM) $(TARGET).coff
+
+include ../rules.mak
diff --git a/rosapps/winfile/StdAfx.cpp b/rosapps/winfile/StdAfx.cpp
new file mode 100644 (file)
index 0000000..3ea6b57
--- /dev/null
@@ -0,0 +1,8 @@
+// stdafx.cpp : source file that includes just the standard includes
+//  winfile.pch will be the pre-compiled header
+//  stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
+// TODO: reference any additional headers you need in STDAFX.H
+// and not in this file
diff --git a/rosapps/winfile/StdAfx.h b/rosapps/winfile/StdAfx.h
new file mode 100644 (file)
index 0000000..273cb9d
--- /dev/null
@@ -0,0 +1,33 @@
+// stdafx.h : include file for standard system include files,
+//  or project specific include files that are used frequently, but
+//      are changed infrequently
+//
+
+#if !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
+#define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#define WIN32_LEAN_AND_MEAN     // Exclude rarely-used stuff from Windows headers
+
+
+// Windows Header Files:
+#include <windows.h>
+#include <commctrl.h>
+
+// C RunTime Header Files
+#include <stdlib.h>
+#include <malloc.h>
+#include <memory.h>
+#include <tchar.h>
+
+// Local Header Files
+
+// TODO: reference additional headers your program requires here
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
diff --git a/rosapps/winfile/about.cpp b/rosapps/winfile/about.cpp
new file mode 100644 (file)
index 0000000..ac92719
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ *  ReactOS About Dialog Box
+ *
+ *  about.cpp
+ *
+ *  Copyright (C) 2002  Robert Dickenson <robd@reactos.org>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program 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 General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+    
+#ifdef _MSC_VER
+#include "stdafx.h"
+#else
+#define WIN32_LEAN_AND_MEAN     // Exclude rarely-used stuff from Windows headers
+#include <windows.h>
+#include <commctrl.h>
+#include <stdlib.h>
+#include <malloc.h>
+#include <memory.h>
+#include <tchar.h>
+#include <process.h>
+#include <stdio.h>
+#endif
+    
+#include "winfile.h"
+#include "about.h"
+
+
+extern HINSTANCE hInst;
+//extern HWND hMainWnd;
+
+LRESULT CALLBACK AboutDialogWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
+
+
+void ShowAboutBox(HWND hWnd)
+{
+    DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, (DLGPROC)AboutDialogWndProc);
+}
+
+LRESULT CALLBACK AboutDialogWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
+{
+    HWND    hLicenseEditWnd;
+    TCHAR   strLicense[0x1000];
+
+    switch (message) {
+    case WM_INITDIALOG:
+        hLicenseEditWnd = GetDlgItem(hDlg, IDC_LICENSE_EDIT);
+        LoadString(hInst, IDS_LICENSE, strLicense, 0x1000);
+        SetWindowText(hLicenseEditWnd, strLicense);
+        return TRUE;
+    case WM_COMMAND:
+        if ((LOWORD(wParam) == IDOK) || (LOWORD(wParam) == IDCANCEL)) {
+            EndDialog(hDlg, LOWORD(wParam));
+            return TRUE;
+        }
+        break;
+    }
+    return 0;
+}
diff --git a/rosapps/winfile/about.h b/rosapps/winfile/about.h
new file mode 100644 (file)
index 0000000..fabcfb3
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ *  ReactOS About Dialog Box
+ *
+ *  about.h
+ *
+ *  Copyright (C) 2002  Robert Dickenson <robd@reactos.org>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program 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 General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+    
+#ifndef __ABOUT_H__
+#define __ABOUT_H__
+
+
+void ShowAboutBox(HWND hWnd);
+
+
+#endif // __ABOUT_H__
diff --git a/rosapps/winfile/debug.cpp b/rosapps/winfile/debug.cpp
new file mode 100644 (file)
index 0000000..bd0b237
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ *  ReactOS Application Debug Routines
+ *
+ *  debug.cpp
+ *
+ *  Copyright (C) 2002  Robert Dickenson <robd@reactos.org>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program 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 General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifdef _MSC_VER
+#include "stdafx.h"
+#else
+#define WIN32_LEAN_AND_MEAN     // Exclude rarely-used stuff from Windows headers
+#include <windows.h>
+#include <commctrl.h>
+#include <stdlib.h>
+#include <malloc.h>
+#include <memory.h>
+#include <tchar.h>
+#include <process.h>
+#include <stdio.h>
+#endif
+    
+#include "winfile.h"
+#include "debug.h"
+
diff --git a/rosapps/winfile/debug.h b/rosapps/winfile/debug.h
new file mode 100644 (file)
index 0000000..f9f96e6
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ *  ReactOS Application Debug Routines
+ *
+ *  debug.cpp
+ *
+ *  Copyright (C) 2002  Robert Dickenson <robd@reactos.org>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program 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 General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+    
+#ifndef __DEBUG_H__
+#define __DEBUG_H__
+
+
+
+#endif // __DEBUG_H__
\ No newline at end of file
diff --git a/rosapps/winfile/folder1.bmp b/rosapps/winfile/folder1.bmp
new file mode 100644 (file)
index 0000000..dada286
Binary files /dev/null and b/rosapps/winfile/folder1.bmp differ
diff --git a/rosapps/winfile/folder2.bmp b/rosapps/winfile/folder2.bmp
new file mode 100644 (file)
index 0000000..35fedba
Binary files /dev/null and b/rosapps/winfile/folder2.bmp differ
diff --git a/rosapps/winfile/folder3.bmp b/rosapps/winfile/folder3.bmp
new file mode 100644 (file)
index 0000000..dfc3c4f
Binary files /dev/null and b/rosapps/winfile/folder3.bmp differ
diff --git a/rosapps/winfile/listview.cpp b/rosapps/winfile/listview.cpp
new file mode 100644 (file)
index 0000000..360dde4
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ *  ReactOS winfile
+ *
+ *  listview.cpp
+ *
+ *  Copyright (C) 2002  Robert Dickenson <robd@reactos.org>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program 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 General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifdef _MSC_VER
+#include "stdafx.h"
+#else
+#define WIN32_LEAN_AND_MEAN     // Exclude rarely-used stuff from Windows headers
+#include <windows.h>
+#include <commctrl.h>
+#include <stdlib.h>
+#include <malloc.h>
+#include <memory.h>
+#include <tchar.h>
+#include <process.h>
+#include <stdio.h>
+#endif
+    
+#include "winfile.h"
+#include "listview.h"
+
+
+// Global Variables:
+extern HINSTANCE hInst;
+extern HWND hMainWnd;
+
+
+HWND CreateListView(HWND hwndParent, LPSTR lpszFileName) 
+{ 
+    RECT rcClient;  // dimensions of client area 
+    HWND hwndLV;    // handle to list view control 
+    // Get the dimensions of the parent window's client area, and create the list view control. 
+    GetClientRect(hwndParent, &rcClient); 
+    hwndLV = CreateWindowEx(0, WC_LISTVIEW, "List View", 
+        WS_VISIBLE | WS_CHILD | WS_BORDER | TVS_HASLINES, 
+        0, 0, rcClient.right, rcClient.bottom, 
+        hwndParent, (HMENU)LIST_WINDOW, hInst, NULL); 
+    // Initialize the image list, and add items to the control. 
+/*
+    if (!InitListViewImageLists(hwndLV) || 
+            !InitListViewItems(hwndLV, lpszFileName)) { 
+        DestroyWindow(hwndLV); 
+        return FALSE; 
+    } 
+ */
+    return hwndLV;
+} 
+
diff --git a/rosapps/winfile/listview.h b/rosapps/winfile/listview.h
new file mode 100644 (file)
index 0000000..9e87078
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ *  ReactOS winfile
+ *
+ *  listview.h
+ *
+ *  Copyright (C) 2002  Robert Dickenson <robd@reactos.org>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program 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 General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef __WINFILE_LISTVIEW_H__
+#define __WINFILE_LISTVIEW_H__
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#include "resource.h"
+
+
+
+HWND CreateListView(HWND hwndParent, LPSTR lpszFileName);
+
+
+
+#endif // __WINFILE_LISTVIEW_H__
diff --git a/rosapps/winfile/resource.h b/rosapps/winfile/resource.h
new file mode 100644 (file)
index 0000000..9913e3e
--- /dev/null
@@ -0,0 +1,76 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Developer Studio generated include file.
+// Used by winfile.rc
+//
+#define ID_FILE_MENU                    0
+#define ID_DISK_MENU                    1
+#define ID_TREE_MENU                    2
+#define ID_VIEW_MENU                    3
+#define ID_OPTIONS_MENU                 4
+#define ID_SECURITY_MENU                5
+#define ID_WINDOW_MENU                  6
+#define ID_HELP_MENU                    7
+
+#define IDD_ABOUTBOX                    103
+#define IDS_APP_TITLE                   103
+#define IDM_ABOUT                       104
+#define IDM_EXIT                        105
+#define IDS_HELLO                       106
+#define IDI_WINFILE                     107
+#define IDI_SMALL                       108
+#define IDC_WINFILE                     109
+#define IDC_WINFILE_FRAME               110
+#define IDR_WINFILE_MENU                130
+#define IDD_DIALOG1                     131
+#define IDB_OPEN_FILE                   132
+#define IDB_CLOSED_FILE                 133
+#define IDB_ROOT                        134
+
+#define ID_HELP_HELPTOPICS              32771
+#define ID_VIEW_STATUSBAR               32774
+#define ID_VIEW_SPLIT                   32775
+#define ID_VIEW_REFRESH                 32776
+#define ID_EDIT_DELETE                  32778
+#define ID_EDIT_RENAME                  32779
+#define ID_EDIT_COPYKEYNAME             32781
+#define ID_EDIT_FIND                    32782
+#define ID_EDIT_FINDNEXT                32783
+#define ID_EDIT_MODIFY                  32784
+#define ID_HELP_CONTENTS                32795
+#define ID_WINDOW_CASCADE               32797
+#define ID_WINDOW_TILE                  32798
+#define ID_WINDOW_ARRANGEICONS          32799
+#define ID_OPTIONS_FONT                 32800
+#define ID_OPTIONS_AUTOREFRESH          32801
+#define ID_OPTIONS_READONLYMODE         32802
+#define ID_OPTIONS_CONFIRMONDELETE      32803
+#define ID_OPTIONS_SAVESETTINGSONEXIT   32804
+#define ID_SECURITY_PERMISSIONS         32805
+#define ID_VIEW_TREEANDDATA             32806
+#define ID_VIEW_TREEONLY                32807
+#define ID_VIEW_DATAONLY                32808
+#define ID_VIEW_DISPLAYBINARYDATA       32810
+#define ID_VIEW_REFRESHALL              32811
+#define ID_VIEW_REFRESHACTIVE           32812
+#define ID_VIEW_FINDKEY                 32813
+#define ID_TREE_EXPANDONELEVEL          32814
+#define ID_TREE_EXPANDBRANCH            32815
+#define ID_TREE_EXPANDALL               32816
+#define ID_TREE_COLLAPSEBRANCH          32817
+#define ID_REGISTRY_OPENLOCAL           32825
+
+#define IDC_LICENSE_EDIT                1029
+#define IDS_LICENSE                     32835
+
+#define IDC_STATIC                      -1
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        132
+#define _APS_NEXT_COMMAND_VALUE         32836
+#define _APS_NEXT_CONTROL_VALUE         1000
+#define _APS_NEXT_SYMED_VALUE           110
+#endif
+#endif
diff --git a/rosapps/winfile/small.ico b/rosapps/winfile/small.ico
new file mode 100644 (file)
index 0000000..8f94d9a
Binary files /dev/null and b/rosapps/winfile/small.ico differ
diff --git a/rosapps/winfile/treeview.cpp b/rosapps/winfile/treeview.cpp
new file mode 100644 (file)
index 0000000..c8c82da
--- /dev/null
@@ -0,0 +1,211 @@
+/*
+ *  ReactOS winfile
+ *
+ *  treeview.cpp
+ *
+ *  Copyright (C) 2002  Robert Dickenson <robd@reactos.org>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program 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 General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifdef _MSC_VER
+#include "stdafx.h"
+#else
+#define WIN32_LEAN_AND_MEAN     // Exclude rarely-used stuff from Windows headers
+#include <windows.h>
+#include <commctrl.h>
+#include <stdlib.h>
+#include <malloc.h>
+#include <memory.h>
+#include <tchar.h>
+#include <process.h>
+#include <stdio.h>
+#endif
+    
+#include "winfile.h"
+#include "treeview.h"
+
+// Global Variables:
+extern HINSTANCE hInst;                   // current instance
+extern HWND hMainWnd;                     // Main Window
+
+// Global variables and constants 
+// Image_Open, Image_Closed, and Image_Root - integer variables for 
+// indexes of the images. 
+// CX_BITMAP and CY_BITMAP - width and height of an icon. 
+// NUM_BITMAPS - number of bitmaps to add to the image list. 
+int Image_Open; 
+int Image_Closed; 
+int Image_Root; 
+
+#define CX_BITMAP    16
+#define CY_BITMAP    16
+#define NUM_BITMAPS  3
+
+
+// AddItemToTree - adds items to a tree view control. 
+// Returns the handle to the newly added item. 
+// hwndTV - handle to the tree view control. 
+// lpszItem - text of the item to add. 
+// nLevel - level at which to add the item. 
+
+HTREEITEM AddItemToTree(HWND hwndTV, LPSTR lpszItem, int nLevel)
+{ 
+    TVITEM tvi; 
+    TVINSERTSTRUCT tvins; 
+    static HTREEITEM hPrev = (HTREEITEM)TVI_FIRST; 
+    static HTREEITEM hPrevRootItem = NULL; 
+    static HTREEITEM hPrevLev2Item = NULL; 
+    HTREEITEM hti; 
+    tvi.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM; 
+    // Set the text of the item. 
+    tvi.pszText = lpszItem; 
+    tvi.cchTextMax = lstrlen(lpszItem); 
+    // Assume the item is not a parent item, so give it an image. 
+    tvi.iImage = Image_Root; 
+    tvi.iSelectedImage = Image_Root; 
+
+    tvi.cChildren = 1; 
+
+    // Save the heading level in the item's application-defined data area. 
+    tvi.lParam = (LPARAM)nLevel; 
+    tvins.item = tvi; 
+    tvins.hInsertAfter = hPrev; 
+    // Set the parent item based on the specified level. 
+    if (nLevel == 1) 
+        tvins.hParent = TVI_ROOT; 
+    else if (nLevel == 2) 
+        tvins.hParent = hPrevRootItem; 
+    else 
+        tvins.hParent = hPrevLev2Item; 
+    // Add the item to the tree view control. 
+    hPrev = (HTREEITEM)SendMessage(hwndTV, TVM_INSERTITEM, 0, (LPARAM)(LPTVINSERTSTRUCT)&tvins); 
+    // Save the handle to the item. 
+    if (nLevel == 1) 
+        hPrevRootItem = hPrev; 
+    else if (nLevel == 2) 
+        hPrevLev2Item = hPrev; 
+    // The new item is a child item. Give the parent item a 
+    // closed folder bitmap to indicate it now has child items. 
+    if (nLevel > 1) { 
+        hti = TreeView_GetParent(hwndTV, hPrev); 
+        tvi.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE; 
+        tvi.hItem = hti; 
+        tvi.iImage = Image_Closed; 
+        tvi.iSelectedImage = Image_Closed; 
+        TreeView_SetItem(hwndTV, &tvi); 
+    } 
+    return hPrev; 
+} 
+
+// InitTreeViewItems - extracts headings from the specified file and 
+// passes them to a function that adds them to a tree view control. 
+// Returns TRUE if successful, or FALSE otherwise. 
+// hwndTV - handle to the tree view control. 
+// lpszFileName - name of file with headings.
+
+BOOL InitTreeViewItems(HWND hwndTV, LPSTR lpszFileName) 
+{ 
+    HTREEITEM hItem;
+    
+    hItem = AddItemToTree(hwndTV, "C:\\ - FAT32", 1); 
+    AddItemToTree(hwndTV, "reactos", 2); 
+    AddItemToTree(hwndTV, "bin", 3); 
+    AddItemToTree(hwndTV, "media", 3); 
+//    AddItemToTree(hwndTV, "fonts", 4); 
+    AddItemToTree(hwndTV, "symbols", 3); 
+    AddItemToTree(hwndTV, "system32", 3); 
+//    AddItemToTree(hwndTV, "config", 4); 
+//    AddItemToTree(hwndTV, "drivers", 4); 
+
+    TreeView_Expand(hwndTV, hItem, TVE_EXPAND);
+    return TRUE; 
+} 
+// InitTreeViewImageLists - creates an image list, adds three bitmaps 
+// to it, and associates the image list with a tree view control. 
+// Returns TRUE if successful, or FALSE otherwise. 
+// hwndTV - handle to the tree view control. 
+
+BOOL InitTreeViewImageLists(HWND hwndTV) 
+{ 
+    HIMAGELIST himl;  // handle to image list 
+    HBITMAP hbmp;     // handle to bitmap 
+
+    // Create the image list. 
+    if ((himl = ImageList_Create(CX_BITMAP, CY_BITMAP, 
+        FALSE, NUM_BITMAPS, 0)) == NULL) 
+        return FALSE; 
+
+    // Add the open file, closed file, and document bitmaps. 
+    hbmp = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_OPEN_FILE)); 
+    Image_Open = ImageList_Add(himl, hbmp, (HBITMAP) NULL); 
+    DeleteObject(hbmp); 
+
+    hbmp = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_CLOSED_FILE)); 
+    Image_Closed = ImageList_Add(himl, hbmp, (HBITMAP) NULL); 
+    DeleteObject(hbmp); 
+
+    hbmp = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_ROOT)); 
+    Image_Root = ImageList_Add(himl, hbmp, (HBITMAP) NULL); 
+    DeleteObject(hbmp); 
+
+    // Fail if not all of the images were added. 
+    if (ImageList_GetImageCount(himl) < 3) 
+        return FALSE; 
+
+    // Associate the image list with the tree view control. 
+    TreeView_SetImageList(hwndTV, himl, TVSIL_NORMAL); 
+
+    return TRUE; 
+} 
+
+// CreateTreeView - creates a tree view control. 
+// Returns the handle to the new control if successful,
+// or NULL otherwise. 
+// hwndParent - handle to the control's parent window. 
+// lpszFileName - name of the file to parse for tree view items.
+
+HWND CreateTreeView(HWND hwndParent, LPSTR lpszFileName) 
+{ 
+    RECT rcClient;  // dimensions of client area 
+    HWND hwndTV;    // handle to tree view control 
+    // Get the dimensions of the parent window's client area, and create 
+    // the tree view control. 
+    GetClientRect(hwndParent, &rcClient); 
+    hwndTV = CreateWindowEx(0, WC_TREEVIEW, "Tree View", 
+        WS_VISIBLE | WS_CHILD | WS_BORDER | TVS_HASLINES | TVS_HASBUTTONS | TVS_LINESATROOT,
+        0, 0, rcClient.right, rcClient.bottom, 
+        hwndParent, (HMENU)TREE_WINDOW, hInst, NULL); 
+    // Initialize the image list, and add items to the control. 
+    if (!InitTreeViewImageLists(hwndTV) || !InitTreeViewItems(hwndTV, lpszFileName)) { 
+        DestroyWindow(hwndTV); 
+        return FALSE; 
+    } 
+    return hwndTV;
+} 
+
diff --git a/rosapps/winfile/treeview.h b/rosapps/winfile/treeview.h
new file mode 100644 (file)
index 0000000..acfdec6
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ *  ReactOS winfile
+ *
+ *  treeview.h
+ *
+ *  Copyright (C) 2002  Robert Dickenson <robd@reactos.org>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program 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 General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef __WINFILE_TREEVIEW_H__
+#define __WINFILE_TREEVIEW_H__
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#include "resource.h"
+
+
+
+HWND CreateTreeView(HWND hwndParent, LPSTR lpszFileName);
+
+
+
+#endif // __WINFILE_TREEVIEW_H__
diff --git a/rosapps/winfile/winfile.cpp b/rosapps/winfile/winfile.cpp
new file mode 100644 (file)
index 0000000..641474e
--- /dev/null
@@ -0,0 +1,441 @@
+/*
+ *  ReactOS winfile
+ *
+ *  winfile.cpp
+ *
+ *  Copyright (C) 2002  Robert Dickenson <robd@reactos.org>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program 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 General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifdef _MSC_VER
+#include "stdafx.h"
+#else
+#define WIN32_LEAN_AND_MEAN     // Exclude rarely-used stuff from Windows headers
+#include <windows.h>
+#include <commctrl.h>
+#include <stdlib.h>
+#include <malloc.h>
+#include <memory.h>
+#include <tchar.h>
+#include <process.h>
+#include <stdio.h>
+#endif
+    
+#include "winfile.h"
+#include "treeview.h"
+#include "listview.h"
+#include "resource.h"
+#include <shellapi.h>
+//#include <winspool.h>
+
+
+// Global Variables:
+HINSTANCE hInst;                            // current instance
+
+HWND hMainWnd;                   // Main Window
+HWND hStatusWnd;                 // Status Bar Window
+
+HWND hTreeWnd;                   // Tree Control Window
+HWND hListWnd;                   // List Control Window
+HWND hSplitWnd;                  // Splitter Bar Control Window
+
+int  nMinimumWidth;              // Minimum width of the dialog (OnSize()'s cx)
+int  nMinimumHeight;             // Minimum height of the dialog (OnSize()'s cy)
+
+int  nOldWidth;                  // Holds the previous client area width
+int  nOldHeight;                 // Holds the previous client area height
+
+BOOL bInMenuLoop = FALSE;        // Tells us if we are in the menu loop
+
+TCHAR szTitle[MAX_LOADSTRING];              // The title bar text
+TCHAR szWindowClass[MAX_LOADSTRING];        // The title bar text
+TCHAR szFrameClass[MAX_LOADSTRING];         // The title bar text
+
+// Foward declarations of functions included in this code module:
+ATOM                MyRegisterClass(HINSTANCE hInstance);
+ATOM                MyRegisterClass2(HINSTANCE hInstance);
+BOOL                InitInstance(HINSTANCE, int);
+LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
+LRESULT CALLBACK    FrameWndProc(HWND, UINT, WPARAM, LPARAM);
+
+int APIENTRY WinMain(HINSTANCE hInstance,
+                     HINSTANCE hPrevInstance,
+                     LPSTR     lpCmdLine,
+                     int       nCmdShow)
+{
+    MSG msg;
+    HACCEL hAccelTable;
+
+    // Initialize global strings
+    LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
+    LoadString(hInstance, IDC_WINFILE, szWindowClass, MAX_LOADSTRING);
+    LoadString(hInstance, IDC_WINFILE_FRAME, szFrameClass, MAX_LOADSTRING);
+    
+    MyRegisterClass(hInstance);
+    MyRegisterClass2(hInstance);
+
+    // Perform application initialization:
+    if (!InitInstance(hInstance, nCmdShow)) {
+        return FALSE;
+    }
+    hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_WINFILE);
+
+    // Main message loop:
+    while (GetMessage(&msg, NULL, 0, 0)) {
+        if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) {
+            TranslateMessage(&msg);
+            DispatchMessage(&msg);
+        }
+    }
+    return msg.wParam;
+}
+
+
+
+//
+//  FUNCTION: MyRegisterClass()
+//
+//  PURPOSE: Registers the window class.
+//
+//  COMMENTS:
+//
+//    This function and its usage is only necessary if you want this code
+//    to be compatible with Win32 systems prior to the 'RegisterClassEx'
+//    function that was added to Windows 95. It is important to call this function
+//    so that the application will get 'well formed' small icons associated
+//    with it.
+//
+ATOM MyRegisterClass(HINSTANCE hInstance)
+{
+    WNDCLASSEX wcex;
+
+    wcex.cbSize         = sizeof(WNDCLASSEX); 
+    wcex.style          = CS_HREDRAW | CS_VREDRAW;
+    wcex.lpfnWndProc    = (WNDPROC)WndProc;
+    wcex.cbClsExtra     = 0;
+    wcex.cbWndExtra     = 0;
+    wcex.hInstance      = hInstance;
+    wcex.hIcon          = LoadIcon(hInstance, (LPCTSTR)IDI_WINFILE);
+    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
+    wcex.hbrBackground  = (HBRUSH)SS_BLACKRECT/*(COLOR_WINDOW+1)*/;
+//    wcex.lpszMenuName   = (LPCSTR)IDC_WINFILE;
+    wcex.lpszMenuName   = (LPCSTR)IDR_WINFILE_MENU;
+    wcex.lpszClassName  = szWindowClass;
+    wcex.hIconSm        = LoadIcon((HINSTANCE)wcex.hInstance, (LPCTSTR)IDI_SMALL);
+    return RegisterClassEx(&wcex);
+}
+
+ATOM MyRegisterClass2(HINSTANCE hInstance)
+{
+    WNDCLASSEX wcex;
+
+    wcex.cbSize         = sizeof(WNDCLASSEX); 
+    wcex.style          = CS_HREDRAW | CS_VREDRAW;
+    wcex.lpfnWndProc    = (WNDPROC)FrameWndProc;
+    wcex.cbClsExtra     = 0;
+    wcex.cbWndExtra     = 0;
+    wcex.hInstance      = hInstance;
+    wcex.hIcon          = LoadIcon(hInstance, (LPCTSTR)IDI_WINFILE);
+    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
+    wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
+    wcex.lpszMenuName   = (LPCSTR)IDR_WINFILE_MENU;
+    wcex.lpszClassName  = szFrameClass;
+    wcex.hIconSm        = LoadIcon((HINSTANCE)wcex.hInstance, (LPCTSTR)IDI_SMALL);
+    return RegisterClassEx(&wcex);
+}
+
+//
+//
+//   FUNCTION: InitInstance(HANDLE, int)
+//
+//   PURPOSE: Saves instance handle and creates main window
+//
+//   COMMENTS:
+//
+//        In this function, we save the instance handle in a global variable and
+//        create and display the main program window.
+//
+BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
+{
+    int nParts[3];
+
+    // Initialize the Windows Common Controls DLL
+    InitCommonControls();
+
+    hInst = hInstance; // Store instance handle in our global variable
+    hMainWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
+                            CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
+    if (!hMainWnd) {
+        return FALSE;
+    }
+
+    // Get the minimum window sizes
+//    GetWindowRect(hMainWnd, &rc);
+//    nMinimumWidth = (rc.right - rc.left);
+//    nMinimumHeight = (rc.bottom - rc.top);
+
+    // Create the status bar
+    hStatusWnd = CreateStatusWindow(WS_VISIBLE|WS_CHILD|WS_CLIPSIBLINGS|SBT_NOBORDERS, 
+                                    "", hMainWnd, STATUS_WINDOW);
+    if (!hStatusWnd)
+        return FALSE;
+
+    // Create the status bar panes
+    nParts[0] = 100;
+    nParts[1] = 210;
+    nParts[2] = 400;
+    SendMessage(hStatusWnd, SB_SETPARTS, 3, (long)nParts);
+
+/*
+    hSplitWnd = CreateWindow(szFrameClass, "splitter window", WS_VISIBLE|WS_CHILD,
+                            CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 
+                            hMainWnd, (HMENU)SPLIT_WINDOW, hInstance, NULL);
+    if (!hSplitWnd)
+        return FALSE;
+ */
+    hTreeWnd = CreateTreeView(hMainWnd, "c:\\foobar.txt");
+    if (!hTreeWnd)
+        return FALSE;
+
+    hListWnd = CreateListView(hMainWnd, "");
+    if (!hListWnd)
+        return FALSE;
+        
+    ShowWindow(hMainWnd, nCmdShow);
+    UpdateWindow(hMainWnd);
+    return TRUE;
+}
+
+
+// OnSize()
+// This function handles all the sizing events for the application
+// It re-sizes every window, and child window that needs re-sizing
+void OnSize(UINT nType, int cx, int cy)
+{
+    int     nParts[3];
+    int     nXDifference;
+    int     nYDifference;
+    RECT    rc;
+
+    if (nType == SIZE_MINIMIZED)
+        return;
+
+    nXDifference = cx - nOldWidth;
+    nYDifference = cy - nOldHeight;
+    nOldWidth = cx;
+    nOldHeight = cy;
+
+    // Update the status bar size
+    GetWindowRect(hStatusWnd, &rc);
+    SendMessage(hStatusWnd, WM_SIZE, nType, MAKELPARAM(cx, cy + (rc.bottom - rc.top)));
+
+    // Update the status bar pane sizes
+    nParts[0] = bInMenuLoop ? -1 : 100;
+    nParts[1] = 210;
+    nParts[2] = cx;
+    SendMessage(hStatusWnd, SB_SETPARTS, bInMenuLoop ? 1 : 3, (long)nParts);
+
+    GetWindowRect(hStatusWnd, &rc);
+
+    MoveWindow(hTreeWnd,0,0,cx/2,cy-(rc.bottom - rc.top),TRUE);
+    MoveWindow(hListWnd,cx/2,0,cx,cy-(rc.bottom - rc.top),TRUE);
+
+}
+
+void OnEnterMenuLoop(HWND hWnd)
+{
+    int nParts;
+
+    // Update the status bar pane sizes
+    nParts = -1;
+    SendMessage(hStatusWnd, SB_SETPARTS, 1, (long)&nParts);
+    bInMenuLoop = TRUE;
+    SendMessage(hStatusWnd, SB_SETTEXT, (WPARAM)0, (LPARAM)_T(""));
+}
+
+void OnExitMenuLoop(HWND hWnd)
+{
+    RECT  rc;
+    int   nParts[3];
+//    TCHAR text[260];
+
+    bInMenuLoop = FALSE;
+    // Update the status bar pane sizes
+    GetClientRect(hWnd, &rc);
+    nParts[0] = 100;
+    nParts[1] = 210;
+    nParts[2] = rc.right;
+    SendMessage(hStatusWnd, SB_SETPARTS, 3, (long)nParts);
+    SendMessage(hStatusWnd, SB_SETTEXT, 0, (LPARAM)_T(""));
+//    wsprintf(text, _T("CPU Usage: %3d%%"), PerfDataGetProcessorUsage());
+//    SendMessage(hStatusWnd, SB_SETTEXT, 1, (LPARAM)text);
+//    wsprintf(text, _T("Processes: %d"), PerfDataGetProcessCount());
+//    SendMessage(hStatusWnd, SB_SETTEXT, 0, (LPARAM)text);
+}
+
+void OnMenuSelect(HWND hWnd, UINT nItemID, UINT nFlags, HMENU hSysMenu)
+{
+    TCHAR str[100];
+
+    strcpy(str, TEXT(""));
+    if (nFlags & MF_POPUP) {
+        if (hSysMenu != GetMenu(hWnd)) {
+            if (nItemID == 2) nItemID = 5;
+        }
+    }
+    if (LoadString(hInst, nItemID, str, 100)) {
+        // load appropriate string
+        LPTSTR lpsz = str;
+        // first newline terminates actual string
+        lpsz = _tcschr(lpsz, '\n');
+        if (lpsz != NULL)
+            *lpsz = '\0';
+    }
+    SendMessage(hStatusWnd, SB_SETTEXT, 0, (LPARAM)str);
+}
+
+
+LRESULT CALLBACK FrameWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
+{
+    int wmId, wmEvent;
+    PAINTSTRUCT ps;
+    HDC hdc;
+    TCHAR szHello[MAX_LOADSTRING];
+    LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);
+
+    switch (message) {
+    case WM_COMMAND:
+        wmId    = LOWORD(wParam); 
+        wmEvent = HIWORD(wParam); 
+        // Parse the menu selections:
+        switch (wmId) {
+            case IDM_ABOUT:
+//                ShowAboutBox(hWnd);
+                {
+                HICON hIcon = LoadIcon(hInst, (LPCTSTR)IDI_WINFILE);
+                ShellAbout(hWnd, szTitle, "FrameWndProc", hIcon);
+                //if (hIcon) DestroyIcon(hIcon); // NOT REQUIRED
+                }
+            break;
+            case IDM_EXIT:
+                DestroyWindow(hWnd);
+                break;
+            default:
+                return DefWindowProc(hWnd, message, wParam, lParam);
+        }
+        break;
+    case WM_PAINT:
+        hdc = BeginPaint(hWnd, &ps);
+        // TODO: Add any drawing code here...
+        RECT rt;
+        GetClientRect(hWnd, &rt);
+        DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
+        EndPaint(hWnd, &ps);
+        break;
+    case WM_DESTROY:
+        PostQuitMessage(0);
+        break;
+    default:
+        return DefWindowProc(hWnd, message, wParam, lParam);
+    }
+    return 0;
+}
+
+
+//
+//  FUNCTION: WndProc(HWND, unsigned, WORD, LONG)
+//
+//  PURPOSE:  Processes messages for the main window.
+//
+//  WM_COMMAND  - process the application menu
+//  WM_PAINT    - Paint the main window
+//  WM_DESTROY  - post a quit message and return
+//
+//
+LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
+{
+    int wmId, wmEvent;
+    PAINTSTRUCT ps;
+    HDC hdc;
+    //TCHAR szHello[MAX_LOADSTRING];
+    //LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);
+
+    switch (message) {
+    case WM_COMMAND:
+        wmId    = LOWORD(wParam); 
+        wmEvent = HIWORD(wParam); 
+        // Parse the menu selections:
+        switch (wmId) {
+        case ID_REGISTRY_OPENLOCAL:
+            {
+            HWND hChildWnd;
+//            hChildWnd = CreateWindow(szFrameClass, szTitle, WS_OVERLAPPEDWINDOW | WS_CHILD,
+//                                   CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, hWnd, NULL, hInst, NULL);
+            hChildWnd = CreateWindow(szFrameClass, szTitle, WS_OVERLAPPEDWINDOW | WS_CHILD,
+                                     0, 0, 150, 170, hWnd, NULL, hInst, NULL);
+            if (hChildWnd) {
+                ShowWindow(hChildWnd, 1);
+                UpdateWindow(hChildWnd);
+            }
+            }
+            break;
+        case IDM_ABOUT:
+//            ShowAboutBox(hWnd);
+            {
+            HICON hIcon = LoadIcon(hInst, (LPCTSTR)IDI_WINFILE);
+            ShellAbout(hWnd, szTitle, "", hIcon);
+            //if (hIcon) DestroyIcon(hIcon); // NOT REQUIRED
+            }
+            break;
+        case IDM_EXIT:
+            DestroyWindow(hWnd);
+            break;
+        default:
+            return DefWindowProc(hWnd, message, wParam, lParam);
+        }
+        break;
+    case WM_SIZE:
+        // Handle the window sizing in it's own function
+        OnSize(wParam, LOWORD(lParam), HIWORD(lParam));
+        break;
+    case WM_PAINT:
+        hdc = BeginPaint(hWnd, &ps);
+        // TODO: Add any drawing code here...
+        RECT rt;
+        GetClientRect(hWnd, &rt);
+        //DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
+        EndPaint(hWnd, &ps);
+        break;
+    case WM_DESTROY:
+        PostQuitMessage(0);
+        break;
+    case WM_TIMER:
+        break;
+
+    case WM_ENTERMENULOOP:
+        OnEnterMenuLoop(hWnd);
+        break;
+    case WM_EXITMENULOOP:
+        OnExitMenuLoop(hWnd);
+        break;
+    case WM_MENUSELECT:
+        OnMenuSelect(hWnd, LOWORD(wParam), HIWORD(wParam), (HMENU)lParam);
+        break;
+    default:
+        return DefWindowProc(hWnd, message, wParam, lParam);
+   }
+   return 0;
+}
diff --git a/rosapps/winfile/winfile.h b/rosapps/winfile/winfile.h
new file mode 100644 (file)
index 0000000..8ce207b
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ *  ReactOS winfile
+ *
+ *  winfile.h
+ *
+ *  Copyright (C) 2002  Robert Dickenson <robd@reactos.org>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program 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 General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef __winfile_H__
+#define __winfile_H__
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#include "resource.h"
+
+
+#define STATUS_WINDOW   2001
+#define TREE_WINDOW     2002
+#define LIST_WINDOW     2003
+#define SPLIT_WINDOW    2004
+
+#define MAX_LOADSTRING 100
+
+
+#endif // __winfile_H__
diff --git a/rosapps/winfile/winfile.ico b/rosapps/winfile/winfile.ico
new file mode 100644 (file)
index 0000000..3868835
Binary files /dev/null and b/rosapps/winfile/winfile.ico differ
diff --git a/rosapps/winfile/winfile.rc b/rosapps/winfile/winfile.rc
new file mode 100644 (file)
index 0000000..518e6e8
--- /dev/null
@@ -0,0 +1,337 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#define APSTUDIO_HIDDEN_SYMBOLS
+#include "windows.h"
+#undef APSTUDIO_HIDDEN_SYMBOLS
+#include "resource.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_WINFILE             ICON    DISCARDABLE     "winfile.ICO"
+IDI_SMALL               ICON    DISCARDABLE     "SMALL.ICO"
+
+IDB_OPEN_FILE           BITMAP DISCARDABLE     "folder1.bmp"
+IDB_CLOSED_FILE         BITMAP DISCARDABLE     "folder2.bmp"
+IDB_ROOT                BITMAP DISCARDABLE     "folder3.bmp"
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDC_WINFILE MENU DISCARDABLE 
+BEGIN
+    POPUP "&File"
+    BEGIN
+        MENUITEM "E&xit",                       IDM_EXIT
+    END
+    POPUP "&Help"
+    BEGIN
+        MENUITEM "&About ...",                  IDM_ABOUT
+    END
+END
+
+IDR_WINFILE_MENU MENU DISCARDABLE 
+BEGIN
+    POPUP "&File"
+    BEGIN
+        MENUITEM "&Open",                       ID_VIEW_REFRESH
+        MENUITEM "&Move...\tF8",                ID_VIEW_REFRESH
+        MENUITEM "&Copy...\tF9",                ID_VIEW_REFRESH
+        MENUITEM "Copy to Clip&board...\tF9",   ID_VIEW_REFRESH
+        MENUITEM "&Delete...\tDel",             ID_VIEW_REFRESH
+        MENUITEM "Re&name...\t",                ID_VIEW_REFRESH
+        MENUITEM "Proper&ties...\tAlt+Enter",   ID_VIEW_REFRESH
+        MENUITEM SEPARATOR
+        MENUITEM "Compre&ss...\t",              ID_VIEW_REFRESH
+        MENUITEM "&Uncompress...\t",            ID_VIEW_REFRESH
+        MENUITEM SEPARATOR
+        MENUITEM "&Run...\t",                   ID_VIEW_REFRESH
+        MENUITEM "&Print...\t",                 ID_VIEW_REFRESH
+        MENUITEM "&Associate...\t",             ID_VIEW_REFRESH
+        MENUITEM SEPARATOR
+        MENUITEM "Cr&eate directory...\t",      ID_VIEW_REFRESH
+        MENUITEM "Searc&h...\t",                ID_VIEW_REFRESH
+        MENUITEM "Select &Files...\t",          ID_VIEW_REFRESH
+        MENUITEM SEPARATOR
+        MENUITEM "E&xit",                       IDM_EXIT
+    END
+    POPUP "&Disk"
+    BEGIN
+        MENUITEM "&Copy Disk...\t",             ID_VIEW_REFRESH
+        MENUITEM "&Label Disk...\t",            ID_VIEW_REFRESH
+        MENUITEM SEPARATOR
+        MENUITEM "&Format Disk..\t",            ID_VIEW_REFRESH
+        MENUITEM SEPARATOR
+        MENUITEM "Connect &Network Drive...",   ID_VIEW_STATUSBAR
+        MENUITEM "&Disconnect Network Drive...",ID_VIEW_STATUSBAR
+        MENUITEM SEPARATOR
+        MENUITEM "Share &As...",                ID_VIEW_STATUSBAR
+        MENUITEM "S&top Sharing...",            ID_VIEW_STATUSBAR
+        MENUITEM SEPARATOR
+        MENUITEM "&Select Drive...\t",          ID_VIEW_REFRESH
+    END
+    POPUP "&Tree"
+    BEGIN
+        MENUITEM "E&xpand One Level\t+",        ID_VIEW_REFRESH
+        MENUITEM "Expand &Branch\t*",           ID_VIEW_REFRESH
+        MENUITEM "Expand &All\tCtrl+*",         ID_VIEW_REFRESH
+        MENUITEM SEPARATOR
+        MENUITEM "&Indicate Expandable Branches",ID_VIEW_REFRESH
+    END
+    POPUP "&View"
+    BEGIN
+        MENUITEM "T&ree and Directory",          ID_VIEW_STATUSBAR
+        MENUITEM "Tr&ee Only",                   ID_VIEW_STATUSBAR
+        MENUITEM "Directory &Only",              ID_VIEW_STATUSBAR
+        MENUITEM SEPARATOR
+        MENUITEM "Sp&lit",                       ID_VIEW_SPLIT
+        MENUITEM SEPARATOR
+        MENUITEM "&Name",                        ID_VIEW_REFRESH
+        MENUITEM "&All File Details",            ID_VIEW_REFRESH
+        MENUITEM "&Partial Details...",          ID_VIEW_REFRESH
+        MENUITEM SEPARATOR
+        MENUITEM "&Sort by Name",                ID_VIEW_REFRESH
+        MENUITEM "Sort &by Type",                ID_VIEW_REFRESH
+        MENUITEM "Sort by Si&ze",                ID_VIEW_REFRESH
+        MENUITEM "Sort by &Date",                ID_VIEW_REFRESH
+        MENUITEM SEPARATOR
+        MENUITEM "By File &Type...",            ID_VIEW_REFRESH
+    END
+    POPUP "&Options"
+    BEGIN
+        MENUITEM "&Confirmation...",            ID_VIEW_REFRESH
+        MENUITEM "&Font...",                    ID_VIEW_REFRESH
+        MENUITEM "Customise Tool&bar...",       ID_VIEW_REFRESH
+        MENUITEM SEPARATOR
+        MENUITEM "&Toolbar...",                 ID_VIEW_REFRESH
+        MENUITEM "&Drivebar...",                ID_VIEW_REFRESH
+        MENUITEM "&Statusbar...",               ID_VIEW_REFRESH
+        MENUITEM SEPARATOR
+        MENUITEM "&Open New Window on Connect", ID_VIEW_REFRESH
+        MENUITEM "&Minimise on Use",            ID_VIEW_REFRESH
+        MENUITEM "&Save Settings on Exit",      ID_VIEW_REFRESH
+    END
+    POPUP "&Security"
+    BEGIN
+        MENUITEM "&Permissions...",             ID_VIEW_REFRESH, GRAYED
+        MENUITEM "&Auditing...",                ID_VIEW_REFRESH, GRAYED
+        MENUITEM "&Owner...",                   ID_VIEW_REFRESH, GRAYED
+    END
+    POPUP "&Window"
+    BEGIN
+        MENUITEM "&New Window",                 ID_VIEW_REFRESH
+        MENUITEM "&Cascade",                    ID_VIEW_REFRESH
+        MENUITEM "Tile &Horizontally",          ID_VIEW_REFRESH
+        MENUITEM "&Tile Vertically",            ID_VIEW_REFRESH
+        MENUITEM "&Arrange Icons",              ID_VIEW_REFRESH
+        MENUITEM "&Refresh",                    ID_VIEW_REFRESH
+        MENUITEM SEPARATOR
+    END
+    POPUP "&Help"
+    BEGIN
+        MENUITEM "&Contents",                   ID_HELP_HELPTOPICS
+        MENUITEM "&Search for Help on",         ID_HELP_HELPTOPICS
+        MENUITEM "&How to Use Help",            ID_HELP_HELPTOPICS
+        MENUITEM SEPARATOR
+        MENUITEM "&About File Manager",         IDM_ABOUT
+    END
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_ABOUTBOX DIALOG DISCARDABLE  22, 17, 230, 75
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "About"
+FONT 8, "System"
+BEGIN
+    ICON            IDI_WINFILE,IDI_WINFILE,14,9,16,16
+    LTEXT           "ReactOS winfile Version 1.0",IDC_STATIC,49,10,119,8,
+                    SS_NOPREFIX
+    LTEXT           "Copyright (C) 2002 ReactOS Team",IDC_STATIC,49,20,119,8
+    DEFPUSHBUTTON   "OK",IDOK,195,6,30,11,WS_GROUP
+END
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+2 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
+    "#include ""windows.h""\r\n"
+    "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
+    "#include ""resource.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_APP_TITLE           "ReactOS File Manager"
+    IDS_HELLO               "Hello World!"
+
+    ID_FILE_MENU            "Commands for working with files"
+    ID_DISK_MENU            "Commands for working with disk"
+    ID_TREE_MENU            "Commands for working in the tree window"
+    ID_VIEW_MENU            "Commands for determining how information is displayed"
+       ID_OPTIONS_MENU         "Commands for setting options"
+    ID_SECURITY_MENU        "Commands for manipulating file and directory security"
+    ID_WINDOW_MENU          "Commands for manipulating windows"
+    ID_HELP_MENU            "Commands for displaying help and information about file manager"
+
+    IDM_EXIT                "Quits the file manager"
+
+    ID_EDIT_DELETE          "Deletes the selection"
+    ID_EDIT_RENAME          "Renames the selection"
+    ID_EDIT_COPYKEYNAME     "Copies the name of the selected key to the clipboard"
+    ID_EDIT_FIND            "Finds a text string in a key, value or data"
+    ID_EDIT_FINDNEXT        "Finds next occurrence of text specified in previous search"
+
+    ID_VIEW_STATUSBAR       "Shows or hides the status bar"
+    ID_VIEW_SPLIT           "Change position of split between two panes"
+    ID_VIEW_REFRESH         "Refreshes the window"
+
+       ID_HELP_HELPTOPICS      "Opens file manager help"
+    IDM_ABOUT               "Displays program information, version number and copyright"
+
+    IDC_WINFILE             "WINFILE"
+    IDC_WINFILE_FRAME       "WINFILE_FRAME"
+END
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////////
+// English (Australia) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENA)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_AUS
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_DIALOG1 DIALOG DISCARDABLE  0, 0, 186, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Dialog"
+FONT 8, "MS Sans Serif"
+BEGIN
+    DEFPUSHBUTTON   "OK",IDOK,129,7,50,14
+    PUSHBUTTON      "Cancel",IDCANCEL,129,24,50,14
+END
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "resource.h\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO DISCARDABLE 
+BEGIN
+    IDD_DIALOG1, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 179
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 88
+    END
+END
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    ID_HELP_HELPTOPICS      "Opens File Manager Help."
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDM_ABOUT               "Displays program information, version number, and copyright."
+END
+
+#endif    // English (Australia) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+