Split window control, listview and treeview moved to child window.
authorRobert Dickenson <robd@reactos.org>
Sun, 14 Jul 2002 20:38:52 +0000 (20:38 +0000)
committerRobert Dickenson <robd@reactos.org>
Sun, 14 Jul 2002 20:38:52 +0000 (20:38 +0000)
svn path=/trunk/; revision=3221

rosapps/regedit/Makefile
rosapps/regedit/framewnd.c
rosapps/regedit/framewnd.h
rosapps/regedit/listview.c
rosapps/regedit/main.c
rosapps/regedit/main.h
rosapps/regedit/treeview.c

index a90bc5f..3ab3dbb 100644 (file)
@@ -31,6 +31,7 @@ RCFLAGS = -DGCC -D_WIN32_IE=0x0400
 
 OBJS = about.o \
         framewnd.o \
+        childwnd.o \
         listview.o \
         treeview.o \
         main.o
index bbbc1c9..fd890e8 100644 (file)
 #include "treeview.h"
 #include "listview.h"
 #include <shellapi.h>
-//#include <winspool.h>
 
 
 ////////////////////////////////////////////////////////////////////////////////
-// Global Variables:
+// Globals and Variables:
 //
 
-HWND hTreeWnd;                   // Tree Control Window
-HWND hListWnd;                   // List Control Window
-HWND hSplitWnd;                  // Splitter Bar Control Window
-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
+static BOOL bInMenuLoop = FALSE;        // Tells us if we are in the menu loop
+
+static HWND hChildWnd;
 
 ////////////////////////////////////////////////////////////////////////////////
 // Local module support methods
@@ -60,7 +56,6 @@ BOOL bInMenuLoop = FALSE;        // Tells us if we are in the menu loop
 
 static void resize_frame_rect(HWND hWnd, PRECT prect)
 {
-//     int new_top;
        RECT rt;
 /*
        if (IsWindowVisible(hToolBar)) {
@@ -71,10 +66,11 @@ static void resize_frame_rect(HWND hWnd, PRECT prect)
        }
  */
        if (IsWindowVisible(hStatusBar)) {
+               SetupStatusBar(TRUE);
                GetClientRect(hStatusBar, &rt);
                prect->bottom -= rt.bottom;
        }
-//     MoveWindow(hWnd, prect->left-1,prect->top-1,prect->right+2,prect->bottom+1, TRUE);
+       MoveWindow(hChildWnd, prect->left-1,prect->top-1,prect->right+2,prect->bottom+1, TRUE);
 }
 
 static void resize_frame(HWND hWnd, int cx, int cy)
@@ -92,84 +88,8 @@ void resize_frame_client(HWND hWnd)
        resize_frame_rect(hWnd, &rect);
 }
 
-static void draw_splitbar(HWND hWnd, int x)
-{
-       RECT rt;
-       HDC hdc = GetDC(hWnd);
-
-       GetClientRect(hWnd, &rt);
-       if (IsWindowVisible(hStatusBar)) {
-       RECT rect;
-               GetClientRect(hStatusBar, &rect);
-               rt.bottom -= rect.bottom;
-       }
-       rt.left = x - SPLIT_WIDTH/2;
-       rt.right = x + SPLIT_WIDTH/2+1;
-       InvertRect(hdc, &rt);
-       ReleaseDC(hWnd, hdc);
-}
-
-#define _NO_EXTENSIONS
-
-static int nSplitPos = 250;
-
-static void ResizeWnd(int cx, int cy)
-{
-       HDWP hdwp = BeginDeferWindowPos(2);
-       RECT rt = {0, 0, cx, cy};
-
-       cx = nSplitPos + SPLIT_WIDTH/2;
-       if (IsWindowVisible(hStatusBar)) {
-       RECT rect;
-               GetClientRect(hStatusBar, &rect);
-               rt.bottom -= rect.bottom;
-       }
-    DeferWindowPos(hdwp, hTreeWnd, 0, rt.left, rt.top, nSplitPos-SPLIT_WIDTH/2-rt.left, rt.bottom-rt.top, SWP_NOZORDER|SWP_NOACTIVATE);
-       DeferWindowPos(hdwp, hListWnd, 0, rt.left+cx+1, rt.top, rt.right-cx, rt.bottom-rt.top, SWP_NOZORDER|SWP_NOACTIVATE);
-       EndDeferWindowPos(hdwp);
-}
-
-static void OnSize(WPARAM wParam, LPARAM lParam)
-{
-    if (wParam != SIZE_MINIMIZED) {
-               ResizeWnd(LOWORD(lParam), HIWORD(lParam));
-    }
-}
-
-/*
-// OnSize()
-// This function handles all the sizing events for the application
-// It re-sizes every window, and child window that needs re-sizing
-static 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(hStatusBar, &rc);
-    SendMessage(hStatusBar, 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(hStatusBar, SB_SETPARTS, bInMenuLoop ? 1 : 3, (long)nParts);
-    GetWindowRect(hStatusBar, &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)
+static void OnEnterMenuLoop(HWND hWnd)
 {
     int nParts;
 
@@ -180,7 +100,7 @@ void OnEnterMenuLoop(HWND hWnd)
     SendMessage(hStatusBar, SB_SETTEXT, (WPARAM)0, (LPARAM)_T(""));
 }
 
-void OnExitMenuLoop(HWND hWnd)
+static void OnExitMenuLoop(HWND hWnd)
 {
     RECT  rc;
     int   nParts[3];
@@ -194,13 +114,15 @@ void OnExitMenuLoop(HWND hWnd)
     nParts[2] = rc.right;
     SendMessage(hStatusBar, SB_SETPARTS, 3, (long)nParts);
     SendMessage(hStatusBar, SB_SETTEXT, 0, (LPARAM)_T(""));
+       SetupStatusBar(TRUE);
+       UpdateStatusBar();
 }
 
-void OnMenuSelect(HWND hWnd, UINT nItemID, UINT nFlags, HMENU hSysMenu)
+static void OnMenuSelect(HWND hWnd, UINT nItemID, UINT nFlags, HMENU hSysMenu)
 {
     TCHAR str[100];
 
-    strcpy(str, TEXT(""));
+    _tcscpy(str, _T(""));
     if (nFlags & MF_POPUP) {
         if (hSysMenu != GetMenu(hWnd)) {
             if (nItemID == 2) nItemID = 5;
@@ -217,6 +139,46 @@ void OnMenuSelect(HWND hWnd, UINT nItemID, UINT nFlags, HMENU hSysMenu)
     SendMessage(hStatusBar, SB_SETTEXT, 0, (LPARAM)str);
 }
 
+void SetupStatusBar(BOOL bResize)
+{
+    int nParts[4];
+//             int parts[] = {300, 500};
+//             SendMessage(Globals.hStatusBar, WM_SIZE, 0, 0);
+//             SendMessage(Globals.hStatusBar, SB_SETPARTS, 2, (LPARAM)&parts);
+
+    // Create the status bar panes
+    nParts[0] = 150;
+    nParts[1] = 220;
+    nParts[2] = 100;
+    nParts[3] = 100;
+       if (bResize)
+               SendMessage(hStatusBar, WM_SIZE, 0, 0);
+    SendMessage(hStatusBar, SB_SETPARTS, 4, (long)nParts);
+}
+
+void UpdateStatusBar(void)
+{
+    TCHAR text[260];
+       DWORD size;
+
+//     size = sizeof(text)/sizeof(TCHAR);
+//     GetUserName(text, &size);
+//  SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM)text);
+       size = sizeof(text)/sizeof(TCHAR);
+       GetComputerName(text, &size);
+    SendMessage(hStatusBar, SB_SETTEXT, 3, (LPARAM)text);
+}
+
+static void toggle_child(HWND hWnd, UINT cmd, HWND hchild)
+{
+       BOOL vis = IsWindowVisible(hchild);
+       HMENU hMenuView = GetSubMenu(hMenuFrame, ID_VIEW_MENU);
+
+       CheckMenuItem(hMenuView, cmd, vis?MF_BYCOMMAND:MF_BYCOMMAND|MF_CHECKED);
+       ShowWindow(hchild, vis?SW_HIDE:SW_SHOW);
+       resize_frame_client(hWnd);
+}
+
 ////////////////////////////////////////////////////////////////////////////////
 //
 //  FUNCTION: _CmdWndProc(HWND, unsigned, WORD, LONG)
@@ -227,19 +189,15 @@ void OnMenuSelect(HWND hWnd, UINT nItemID, UINT nFlags, HMENU hSysMenu)
 
 static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
 {
-    int wmId, wmEvent;
-    wmId    = LOWORD(wParam); 
-    wmEvent = HIWORD(wParam); 
-
        switch (LOWORD(wParam)) {
-        // Parse the menu selections:
-        case ID_REGISTRY_PRINTERSETUP:
-            //PRINTDLG pd;
-            //PrintDlg(&pd);
-            //PAGESETUPDLG psd;
-            //PageSetupDlg(&psd);
-            break;
-        case ID_REGISTRY_OPENLOCAL:
+    // Parse the menu selections:
+    case ID_REGISTRY_PRINTERSETUP:
+        //PRINTDLG pd;
+        //PrintDlg(&pd);
+        //PAGESETUPDLG psd;
+        //PageSetupDlg(&psd);
+        break;
+    case ID_REGISTRY_OPENLOCAL:
 /*
             {
             HWND hChildWnd;
@@ -253,29 +211,36 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
             }
             }
  */
-            break;
-        case ID_REGISTRY_EXIT:
-            DestroyWindow(hWnd);
-            break;
-        case ID_VIEW_REFRESH:
-            // TODO:
-            break;
-               case ID_HELP_HELPTOPICS:
-//                     WinHelp(hWnd, _T("regedit"), HELP_CONTENTS, 0);
-                       WinHelp(hWnd, _T("regedit"), HELP_FINDER, 0);
-            break;
-        case ID_HELP_ABOUT:
+        break;
+    case ID_REGISTRY_EXIT:
+        DestroyWindow(hWnd);
+        break;
+    case ID_VIEW_REFRESH:
+        // TODO:
+        break;
+//     case ID_OPTIONS_TOOLBAR:
+//             toggle_child(hWnd, LOWORD(wParam), hToolBar);
+//      break;
+       case ID_VIEW_STATUSBAR:
+               toggle_child(hWnd, LOWORD(wParam), hStatusBar);
+        break;
+    case ID_HELP_HELPTOPICS:
+//             WinHelp(hWnd, _T("regedit"), HELP_CONTENTS, 0);
+               WinHelp(hWnd, _T("regedit"), HELP_FINDER, 0);
+        break;
+    case ID_HELP_ABOUT:
 #ifdef WINSHELLAPI
-            ShellAbout(hWnd, szTitle, "", LoadIcon(hInst, (LPCTSTR)IDI_REGEDIT));
+        ShellAbout(hWnd, szTitle, _T(""), LoadIcon(hInst, (LPCTSTR)IDI_REGEDIT));
 #else
-            ShowAboutBox(hWnd);
+        ShowAboutBox(hWnd);
 #endif
-            break;
-               default:
-            return FALSE;
+        break;
+    default:
+        return FALSE;
     }
        return TRUE;
 }
+
 ////////////////////////////////////////////////////////////////////////////////
 //
 //  FUNCTION: FrameWndProc(HWND, unsigned, WORD, LONG)
@@ -289,15 +254,17 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
 //
 LRESULT CALLBACK FrameWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
 {
-    static int last_split;
-    PAINTSTRUCT ps;
-    HDC hdc;
-
     switch (message) {
     case WM_CREATE:
-        //HWND CreateListView(HWND hwndParent/*, Pane* pane*/, int id, LPTSTR lpszPathName);
-        hTreeWnd = CreateTreeView(hWnd, 1000, "c:\\foobar.txt");
-        hListWnd = CreateListView(hWnd, 1001, "");
+        {
+//        HMENU hMenuWindow = GetSubMenu(hMenuFrame, GetMenuItemCount(hMenuFrame)-2);
+        hChildWnd = CreateWindowEx(0, szChildClass, _T("regedit child window"),
+//        hChildWnd = CreateWindowEx(0, (LPCTSTR)(int)hChildWndClass, _T("regedit child window"),
+//                    WS_CHILD|WS_CLIPCHILDREN|WS_VISIBLE|WS_BORDER,
+                    WS_CHILD|WS_VISIBLE|WS_BORDER,
+                    CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
+                    hWnd, (HMENU)0, hInst, NULL/*lpParam*/);
+        }
         break;
     case WM_COMMAND:
         if (!_CmdWndProc(hWnd, message, wParam, lParam)) {
@@ -305,121 +272,13 @@ LRESULT CALLBACK FrameWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
         }
                break;
     case WM_SIZE:
-//        resize_frame_client(hWnd);
-//        OnSize(wParam, LOWORD(lParam), HIWORD(lParam));
-//        break;
-        OnSize(wParam, lParam);
-               goto def;
-    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;
+        resize_frame_client(hWnd);
         break;
+//        OnSize(wParam, lParam);
+//        goto def;
     case WM_TIMER:
         break;
 
-               case WM_SETCURSOR:
-                       if (LOWORD(lParam) == HTCLIENT) {
-                               POINT pt;
-                               GetCursorPos(&pt);
-                               ScreenToClient(hWnd, &pt);
-                               if (pt.x>=nSplitPos-SPLIT_WIDTH/2 && pt.x<nSplitPos+SPLIT_WIDTH/2+1) {
-                                       SetCursor(LoadCursor(0, IDC_SIZEWE));
-                                       return TRUE;
-                               }
-                       }
-                       goto def;
-
-               case WM_LBUTTONDOWN: {
-                       RECT rt;
-                       int x = LOWORD(lParam);
-
-                       GetClientRect(hWnd, &rt);
-                       if (x>=nSplitPos-SPLIT_WIDTH/2 && x<nSplitPos+SPLIT_WIDTH/2+1) {
-                               last_split = nSplitPos;
-#ifdef _NO_EXTENSIONS
-                               draw_splitbar(hWnd, last_split);
-#endif
-                               SetCapture(hWnd);
-                       }
-                       break;}
-
-               case WM_LBUTTONUP:
-                       if (GetCapture() == hWnd) {
-#ifdef _NO_EXTENSIONS
-                               RECT rt;
-                               int x = LOWORD(lParam);
-                               draw_splitbar(hWnd, last_split);
-                               last_split = -1;
-                               GetClientRect(hWnd, &rt);
-                               nSplitPos = x;
-                               ResizeWnd(rt.right, rt.bottom);
-#endif
-                               ReleaseCapture();
-                       }
-                       break;
-
-#ifdef _NO_EXTENSIONS
-               case WM_CAPTURECHANGED:
-                       if (GetCapture()==hWnd && last_split>=0)
-                               draw_splitbar(hWnd, last_split);
-                       break;
-#endif
-
-               case WM_KEYDOWN:
-                       if (wParam == VK_ESCAPE)
-                               if (GetCapture() == hWnd) {
-                                       RECT rt;
-#ifdef _NO_EXTENSIONS
-                                       draw_splitbar(hWnd, last_split);
-#else
-                                       nSplitPos = last_split;
-#endif
-                                       GetClientRect(hWnd, &rt);
-                                       ResizeWnd(rt.right, rt.bottom);
-                                       last_split = -1;
-                                       ReleaseCapture();
-                                       SetCursor(LoadCursor(0, IDC_ARROW));
-                               }
-                       break;
-
-               case WM_MOUSEMOVE:
-                       if (GetCapture() == hWnd) {
-                               RECT rt;
-                               int x = LOWORD(lParam);
-
-#ifdef _NO_EXTENSIONS
-                               HDC hdc = GetDC(hWnd);
-                               GetClientRect(hWnd, &rt);
-                               rt.left = last_split-SPLIT_WIDTH/2;
-                               rt.right = last_split+SPLIT_WIDTH/2+1;
-                               InvertRect(hdc, &rt);
-                               last_split = x;
-                               rt.left = x-SPLIT_WIDTH/2;
-                               rt.right = x+SPLIT_WIDTH/2+1;
-                               InvertRect(hdc, &rt);
-                               ReleaseDC(hWnd, hdc);
-#else
-                               GetClientRect(hWnd, &rt);
-                               if (x>=0 && x<rt.right) {
-                                       nSplitPos = x;
-                                       ResizeWnd(rt.right, rt.bottom);
-                                       rt.left = x-SPLIT_WIDTH/2;
-                                       rt.right = x+SPLIT_WIDTH/2+1;
-                                       InvalidateRect(hWnd, &rt, FALSE);
-                                       UpdateWindow(hTreeWnd);
-                                       UpdateWindow(hWnd);
-                                       UpdateWindow(hListWnd);
-                               }
-#endif
-                       }
-                       break;
-
-
     case WM_ENTERMENULOOP:
         OnEnterMenuLoop(hWnd);
         break;
@@ -432,7 +291,7 @@ LRESULT CALLBACK FrameWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
     case WM_DESTROY:
                WinHelp(hWnd, _T("regedit"), HELP_QUIT, 0);
         PostQuitMessage(0);
-    default: def:
+    default:
         return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
index c7a968d..5fdc50e 100644 (file)
@@ -32,13 +32,11 @@ extern "C" {
 #endif // _MSC_VER > 1000
 
 
-
-extern HWND hTreeWnd;                   // Tree Control Window
-extern HWND hListWnd;                   // List Control Window
-extern HWND hSplitWnd;                  // Splitter Bar Control Window
-
 LRESULT CALLBACK FrameWndProc(HWND, UINT, WPARAM, LPARAM);
 
+void SetupStatusBar(BOOL bResize);
+void UpdateStatusBar(void);
+
 
 #ifdef __cplusplus
 };
index 730b20c..14e7202 100644 (file)
@@ -45,8 +45,6 @@
 // Global Variables:
 //
 
-extern HINSTANCE hInst;
-extern HWND hMainWnd;
 static WNDPROC g_orgListWndProc;
 
 
@@ -57,8 +55,8 @@ static WNDPROC g_orgListWndProc;
 
 
 #define MAX_LIST_COLUMNS (IDS_LIST_COLUMN_LAST - IDS_LIST_COLUMN_FIRST + 1)
-static int default_column_widths[MAX_LIST_COLUMNS] = { 175, 100, 100 };
-static int column_alignment[MAX_LIST_COLUMNS] = { LVCFMT_LEFT, LVCFMT_RIGHT, LVCFMT_RIGHT };
+static int default_column_widths[MAX_LIST_COLUMNS] = { 200, 175, 400 };
+static int column_alignment[MAX_LIST_COLUMNS] = { LVCFMT_LEFT, LVCFMT_LEFT, LVCFMT_LEFT };
 
 static void CreateListColumns(HWND hWndListView)
 {
index f3eced8..75f9b35 100644 (file)
     
 #include "main.h"
 #include "framewnd.h"
-
-#include "treeview.h"
-#include "listview.h"
-#include <shellapi.h>
-//#include <winspool.h>
+#include "childwnd.h"
 
 
 ////////////////////////////////////////////////////////////////////////////////
 // Global Variables:
+//
+
 HINSTANCE hInst;
-HWND hMainWnd;
+HWND hFrameWnd;
 HWND hStatusBar;
+HMENU hMenuFrame;
 
 TCHAR szTitle[MAX_LOADSTRING];
 TCHAR szFrameClass[MAX_LOADSTRING];
-//TCHAR szWindowClass[MAX_LOADSTRING];
+TCHAR szChildClass[MAX_LOADSTRING];
 
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -66,11 +65,46 @@ TCHAR szFrameClass[MAX_LOADSTRING];
 //        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];
-    WNDCLASSEX wcex;
+    WNDCLASSEX wcFrame = {
+        sizeof(WNDCLASSEX),
+        CS_HREDRAW | CS_VREDRAW/*style*/,
+        FrameWndProc,
+        0/*cbClsExtra*/,
+        0/*cbWndExtra*/,
+        hInstance,
+        LoadIcon(hInstance, MAKEINTRESOURCE(IDI_REGEDIT)),
+        LoadCursor(0, IDC_ARROW),
+        0/*hbrBackground*/,
+        0/*lpszMenuName*/,
+        szFrameClass,
+        (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_REGEDIT), IMAGE_ICON,
+            GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED)
+    };
+    ATOM hFrameWndClass = RegisterClassEx(&wcFrame); // register frame window class
+
+    WNDCLASSEX wcChild = {
+        sizeof(WNDCLASSEX),
+        CS_HREDRAW | CS_VREDRAW/*style*/,
+        ChildWndProc,
+        0/*cbClsExtra*/,
+        sizeof(HANDLE)/*cbWndExtra*/,
+        hInstance,
+        LoadIcon(hInstance, MAKEINTRESOURCE(IDI_REGEDIT)),
+        LoadCursor(0, IDC_ARROW),
+        0/*hbrBackground*/,
+        0/*lpszMenuName*/,
+        szChildClass,
+        (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_REGEDIT), IMAGE_ICON,
+            GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED)
+
+    };
+    ATOM hChildWndClass = RegisterClassEx(&wcChild); // register child windows class
 
+/*
+    WNDCLASSEX wcex;
     wcex.cbSize         = sizeof(WNDCLASSEX); 
     wcex.style          = CS_HREDRAW | CS_VREDRAW;
     wcex.lpfnWndProc    = (WNDPROC)FrameWndProc;
@@ -79,49 +113,45 @@ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
     wcex.hInstance      = hInstance;
     wcex.hIcon          = LoadIcon(hInstance, (LPCTSTR)IDI_REGEDIT);
     wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
-    wcex.hbrBackground  = (HBRUSH)SS_BLACKRECT/*(COLOR_WINDOW+1)*/;
+    wcex.hbrBackground  = (HBRUSH)SS_BLACKRECT;
 //    wcex.lpszMenuName   = (LPCSTR)IDC_REGEDIT;
     wcex.lpszMenuName   = (LPCSTR)IDR_REGEDIT_MENU;
     wcex.lpszClassName  = szFrameClass;
     wcex.hIconSm        = LoadIcon((HINSTANCE)wcex.hInstance, (LPCTSTR)IDI_SMALL);
     RegisterClassEx(&wcex);
+ */
+
+       hMenuFrame = LoadMenu(hInstance, MAKEINTRESOURCE(IDR_REGEDIT_MENU));
 
     // Initialize the Windows Common Controls DLL
     InitCommonControls();
 
     hInst = hInstance; // Store instance handle in our global variable
-    hMainWnd = CreateWindow(szFrameClass, szTitle, WS_OVERLAPPEDWINDOW,
-                            CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
-    if (!hMainWnd) {
+//    hFrameWnd = CreateWindow(szFrameClass, szTitle, WS_OVERLAPPEDWINDOW,
+//                            CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
+    hFrameWnd = CreateWindowEx(0, (LPCTSTR)(int)hFrameWndClass, _T("regedit application"),
+                    WS_OVERLAPPEDWINDOW,
+                    CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
+                    NULL, hMenuFrame, hInstance, NULL/*lpParam*/);
+
+    if (!hFrameWnd) {
         return FALSE;
     }
 
-    // Get the minimum window sizes
-//    GetWindowRect(hMainWnd, &rc);
-//    nMinimumWidth = (rc.right - rc.left);
-//    nMinimumHeight = (rc.bottom - rc.top);
-
     // Create the status bar
     hStatusBar = CreateStatusWindow(WS_VISIBLE|WS_CHILD|WS_CLIPSIBLINGS|SBT_NOBORDERS, 
-                                    _T(""), hMainWnd, STATUS_WINDOW);
-    if (!hStatusBar)
-        return FALSE;
-
-    // Create the status bar panes
-    nParts[0] = 100;
-    nParts[1] = 210;
-    nParts[2] = 400;
-    SendMessage(hStatusBar, 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;
- */
-    ShowWindow(hMainWnd, nCmdShow);
-    UpdateWindow(hMainWnd);
+                                    _T(""), hFrameWnd, STATUS_WINDOW);
+    if (hStatusBar) {
+        // Create the status bar panes
+        int nParts[3];
+        nParts[0] = 100;
+        nParts[1] = 210;
+        nParts[2] = 400;
+        SendMessage(hStatusBar, SB_SETPARTS, 3, (long)nParts);
+        CheckMenuItem(GetSubMenu(hMenuFrame, ID_VIEW_MENU), ID_VIEW_STATUSBAR, MF_BYCOMMAND|MF_CHECKED);
+    }
+    ShowWindow(hFrameWnd, nCmdShow);
+    UpdateWindow(hFrameWnd);
     return TRUE;
 }
 
@@ -129,7 +159,7 @@ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
 
 void ExitInstance(void)
 {
-//    DestroyMenu(hMenuFrame);
+    DestroyMenu(hMenuFrame);
 }
 
 
@@ -144,7 +174,7 @@ int APIENTRY WinMain(HINSTANCE hInstance,
     // Initialize global strings
     LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
     LoadString(hInstance, IDC_REGEDIT_FRAME, szFrameClass, MAX_LOADSTRING);
-//    LoadString(hInstance, IDC_REGEDIT, szWindowClass, MAX_LOADSTRING);
+    LoadString(hInstance, IDC_REGEDIT, szChildClass, MAX_LOADSTRING);
     
     // Store instance handle in our global variable
     hInst = hInstance;
index e0b8728..2c499ba 100644 (file)
@@ -44,13 +44,15 @@ extern "C" {
 
 ////////////////////////////////////////////////////////////////////////////////
 // Global Variables:
+//
 extern HINSTANCE hInst;
-extern HWND hMainWnd;
+extern HWND hFrameWnd;
 extern HWND hStatusBar;
+extern HMENU hMenuFrame;
 
 extern TCHAR szTitle[];
 extern TCHAR szFrameClass[];
-//extern TCHAR szWindowClass[];
+extern TCHAR szChildClass[];
 
 #ifndef _MSC_VER
 typedef struct tagNMITEMACTIVATE{
index c91f703..604ee7c 100644 (file)
 #include "treeview.h"
 
 
-// Global Variables:
-extern HINSTANCE hInst;
-extern HWND hMainWnd;
-
 // Global variables and constants 
 // Image_Open, Image_Closed, and Image_Root - integer variables for 
 // indexes of the images. 
@@ -152,12 +148,12 @@ static BOOL InitTreeViewItems(HWND hwndTV)
 { 
     HTREEITEM hItem;
     
-    hItem = AddItemToTree(hwndTV, "My Computer", 1); 
-    AddItemToTree(hwndTV, "HKEY_CLASSES_ROOT", 2); 
-    AddItemToTree(hwndTV, "HKEY_CURRENT_USER", 2); 
-    AddItemToTree(hwndTV, "HKEY_LOCAL_MACHINE", 2); 
-    AddItemToTree(hwndTV, "HKEY_USERS", 2); 
-    AddItemToTree(hwndTV, "HKEY_CURRENT_CONFIG", 2); 
+    hItem = AddItemToTree(hwndTV, _T("My Computer"), 1); 
+    AddItemToTree(hwndTV, _T("HKEY_CLASSES_ROOT"), 2); 
+    AddItemToTree(hwndTV, _T("HKEY_CURRENT_USER"), 2); 
+    AddItemToTree(hwndTV, _T("HKEY_LOCAL_MACHINE"), 2); 
+    AddItemToTree(hwndTV, _T("HKEY_USERS"), 2); 
+    AddItemToTree(hwndTV, _T("HKEY_CURRENT_CONFIG"), 2); 
 
     TreeView_Expand(hwndTV, hItem, TVE_EXPAND);
     return TRUE;