diff --git a/reactos/subsys/system/explorer/desktop/desktop.cpp b/reactos/subsys/system/explorer/desktop/desktop.cpp index f28eb23bb86..afdd2356850 100644 --- a/reactos/subsys/system/explorer/desktop/desktop.cpp +++ b/reactos/subsys/system/explorer/desktop/desktop.cpp @@ -55,8 +55,7 @@ static void draw_desktop_background(HWND hwnd, HDC hdc) static const TCHAR BkgndText[] = TEXT("ReactOS 0.1.2 Desktop Example\nby Silver Blade, Martin Fuchs"); - RECT rect; - GetClientRect(hwnd, &rect); + ClientRect rect(hwnd); PaintDesktop(hdc); /* @@ -140,8 +139,7 @@ LRESULT DesktopWindow::Init(LPCREATESTRUCT pcs) fs.ViewMode = FVM_ICON; fs.fFlags = FWF_DESKTOP|FWF_NOCLIENTEDGE|FWF_NOSCROLL|FWF_BESTFITWINDOW|FWF_SNAPTOGRID; - RECT rect; - GetClientRect(_hwnd, &rect); + ClientRect rect(_hwnd); hr = _pShellView->CreateViewWindow(NULL, &fs, this, &rect, &hWndView); @@ -232,13 +230,10 @@ LRESULT DesktopWindow::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam) HWND create_desktop_window(HINSTANCE hInstance) { - WindowClass wcDesktop(_T("Progman")); + WindowClass wcDesktop(_T("Progman"), CS_DBLCLKS); - wcDesktop.style = CS_DBLCLKS; wcDesktop.hbrBackground = (HBRUSH)(COLOR_BACKGROUND+1); wcDesktop.hIcon = LoadIcon(0, IDI_APPLICATION); - wcDesktop.hCursor = LoadCursor(0, IDC_ARROW); - ATOM desktopClass = wcDesktop.Register(); diff --git a/reactos/subsys/system/explorer/explorer.cpp b/reactos/subsys/system/explorer/explorer.cpp index 16ce1d127c1..59f75a4f2b6 100644 --- a/reactos/subsys/system/explorer/explorer.cpp +++ b/reactos/subsys/system/explorer/explorer.cpp @@ -96,35 +96,20 @@ static void InitInstance(HINSTANCE hInstance) WindowClass wcFrame(CLASSNAME_FRAME); wcFrame.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_EXPLORER)); - wcFrame.hCursor = LoadCursor(0, IDC_ARROW); - wcFrame.hIconSm = (HICON)LoadImage(hInstance, - MAKEINTRESOURCE(IDI_EXPLORER), - IMAGE_ICON, - GetSystemMetrics(SM_CXSMICON), - GetSystemMetrics(SM_CYSMICON), - LR_SHARED); + wcFrame.hIconSm = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_EXPLORER), + IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED); g_Globals._hframeClass = wcFrame.Register(); // register child windows class - WindowClass wcChild(CLASSNAME_CHILDWND); - - wcChild.style = CS_CLASSDC|CS_DBLCLKS|CS_VREDRAW; - wcChild.hCursor = LoadCursor(0, IDC_ARROW); - - wcChild.Register(); + WindowClass(CLASSNAME_CHILDWND, CS_CLASSDC|CS_DBLCLKS|CS_VREDRAW).Register(); // register tree windows class - WindowClass wcTreeChild(CLASSNAME_WINEFILETREE); - - wcTreeChild.style = CS_CLASSDC|CS_DBLCLKS|CS_VREDRAW; - wcTreeChild.hCursor = LoadCursor(0, IDC_ARROW); - - wcTreeChild.Register(); + WindowClass(CLASSNAME_WINEFILETREE, CS_CLASSDC|CS_DBLCLKS|CS_VREDRAW).Register(); g_Globals._cfStrFName = RegisterClipboardFormat(CFSTR_FILENAME); diff --git a/reactos/subsys/system/explorer/explorer.dsw b/reactos/subsys/system/explorer/explorer.dsw index d417101aa2f..92fff86f51d 100644 --- a/reactos/subsys/system/explorer/explorer.dsw +++ b/reactos/subsys/system/explorer/explorer.dsw @@ -11,9 +11,6 @@ Package=<5> Package=<4> {{{ - Begin Project Dependency - Project_Dep_Name shellhook - End Project Dependency }}} ############################################################################### @@ -30,18 +27,6 @@ Package=<4> ############################################################################### -Project: "shellhook"=.\shellhook.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - Global: Package=<5> diff --git a/reactos/subsys/system/explorer/shell/mainframe.cpp b/reactos/subsys/system/explorer/shell/mainframe.cpp index d4d95c912ff..62fe64f081f 100644 --- a/reactos/subsys/system/explorer/shell/mainframe.cpp +++ b/reactos/subsys/system/explorer/shell/mainframe.cpp @@ -410,18 +410,17 @@ int MainFrame::Command(int id, int code) void MainFrame::resize_frame_rect(PRECT prect) { int new_top; - RECT rt; if (IsWindowVisible(_htoolbar)) { SendMessage(_htoolbar, WM_SIZE, 0, 0); - GetClientRect(_htoolbar, &rt); + ClientRect rt(_htoolbar); prect->top = rt.bottom+3; prect->bottom -= rt.bottom+3; } if (IsWindowVisible(_hdrivebar)) { SendMessage(_hdrivebar, WM_SIZE, 0, 0); - GetClientRect(_hdrivebar, &rt); + ClientRect rt(_hdrivebar); new_top = --prect->top + rt.bottom+3; MoveWindow(_hdrivebar, 0, prect->top, rt.right, new_top, TRUE); prect->top = new_top; @@ -433,7 +432,7 @@ void MainFrame::resize_frame_rect(PRECT prect) SendMessage(_hstatusbar, WM_SIZE, 0, 0); SendMessage(_hstatusbar, SB_SETPARTS, 2, (LPARAM)&parts); - GetClientRect(_hstatusbar, &rt); + ClientRect rt(_hstatusbar); prect->bottom -= rt.bottom; } @@ -456,17 +455,13 @@ void MainFrame::resize_frame(int cx, int cy) void MainFrame::resize_frame_client() { - RECT rect; - - GetClientRect(_hwnd, &rect); + ClientRect rect(_hwnd); resize_frame_rect(&rect); } void MainFrame::frame_get_clientspace(PRECT prect) { - RECT rt; - if (!IsIconic(_hwnd)) GetClientRect(_hwnd, prect); else { @@ -483,17 +478,17 @@ void MainFrame::frame_get_clientspace(PRECT prect) } if (IsWindowVisible(_htoolbar)) { - GetClientRect(_htoolbar, &rt); + ClientRect rt(_htoolbar); prect->top += rt.bottom+2; } if (IsWindowVisible(_hdrivebar)) { - GetClientRect(_hdrivebar, &rt); + ClientRect rt(_hdrivebar); prect->top += rt.bottom+2; } if (IsWindowVisible(_hstatusbar)) { - GetClientRect(_hstatusbar, &rt); + ClientRect rt(_hstatusbar); prect->bottom -= rt.bottom; } } diff --git a/reactos/subsys/system/explorer/shell/pane.cpp b/reactos/subsys/system/explorer/shell/pane.cpp index 367294ad146..b0ff1566189 100644 --- a/reactos/subsys/system/explorer/shell/pane.cpp +++ b/reactos/subsys/system/explorer/shell/pane.cpp @@ -776,8 +776,7 @@ int Pane::Notify(int id, NMHDR* pnmh) int dx = phdn->pitem->cxy - _widths[idx]; int i; - RECT clnt; - GetClientRect(_hwnd, &clnt); + ClientRect clnt(_hwnd); // move immediate to simulate HDS_FULLDRAG (for now [04/2000] not realy needed with WINELIB) Header_SetItem(_hwndHeader, idx, phdn->pitem); diff --git a/reactos/subsys/system/explorer/shell/shellbrowser.cpp b/reactos/subsys/system/explorer/shell/shellbrowser.cpp index 1370124977d..3e5f4429358 100644 --- a/reactos/subsys/system/explorer/shell/shellbrowser.cpp +++ b/reactos/subsys/system/explorer/shell/shellbrowser.cpp @@ -77,8 +77,7 @@ LRESULT ShellBrowserChild::Init(LPCREATESTRUCT pcs) _hWndFrame = GetParent(pcs->hwndParent); - RECT rect; - GetClientRect(_hwnd, &rect); + ClientRect rect(_hwnd); SHFILEINFO sfi; @@ -393,8 +392,7 @@ void ShellBrowserChild::OnTreeItemSelected(int idCtrl, LPNMTREEVIEW pnmtv) pLastShellView->DestroyViewWindow(); pLastShellView->Release(); - RECT clnt; - GetClientRect(_hwnd, &clnt); + ClientRect clnt(_hwnd); resize_children(clnt.right, clnt.bottom); } diff --git a/reactos/subsys/system/explorer/taskbar/taskbar.cpp b/reactos/subsys/system/explorer/taskbar/taskbar.cpp index ba310d3bc17..71fa67240ae 100644 --- a/reactos/subsys/system/explorer/taskbar/taskbar.cpp +++ b/reactos/subsys/system/explorer/taskbar/taskbar.cpp @@ -42,15 +42,11 @@ HWND InitializeExplorerBar(HINSTANCE hInstance) { - WindowClass wcExplorerBar(_T("Shell_TrayWnd")); - - wcExplorerBar.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1); - wcExplorerBar.hCursor = LoadCursor(0, IDC_ARROW); - - ATOM explorerBarClass = wcExplorerBar.Register(); - RECT rect; + WindowClass wcExplorerBar(CLASSNAME_EXPLORERBAR); + wcExplorerBar.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1); + rect.left = -2; // hide left border #ifdef TASKBAR_AT_TOP rect.top = -2; // hide top border @@ -61,7 +57,7 @@ HWND InitializeExplorerBar(HINSTANCE hInstance) rect.bottom = rect.top + TASKBAR_HEIGHT + 2; return Window::Create(WINDOW_CREATOR(DesktopBar), WS_EX_PALETTEWINDOW, - (LPCTSTR)(int)explorerBarClass, _T("DesktopBar"), WS_POPUP|WS_THICKFRAME|WS_CLIPCHILDREN|WS_VISIBLE, + (LPCTSTR)(int)wcExplorerBar.Register(), TITLE_EXPLORERBAR, WS_POPUP|WS_THICKFRAME|WS_CLIPCHILDREN|WS_VISIBLE, rect.left, rect.top, rect.right-rect.left, rect.bottom-rect.top, 0); } @@ -74,6 +70,7 @@ DesktopBar::DesktopBar(HWND hwnd) DesktopBar::~DesktopBar() { + // exit application after destroying desktop window PostQuitMessage(0); } @@ -86,19 +83,12 @@ LRESULT DesktopBar::Init(LPCREATESTRUCT pcs) Button(_hwnd, TEXT("Start"), 2, 2, 50, TASKBAR_HEIGHT-10, IDC_START);//BS_OWNERDRAW // create task bar - WindowClass wcTaskBar(_T("MSTaskSwWClass")); - + WindowClass wcTaskBar(CLASSNAME_TASKBAR); wcTaskBar.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1); - wcTaskBar.hCursor = LoadCursor(0, IDC_ARROW); - - ATOM taskbarClass = wcTaskBar.Register(); - - RECT clnt; - GetClientRect(_hwnd, &clnt); _hwndTaskBar = Window::Create(WINDOW_CREATOR(TaskBar), 0, - (LPCTSTR)(int)taskbarClass, _T("Running Applications"), WS_CHILD|WS_VISIBLE, - TASKBAR_LEFT, 0, clnt.right-TASKBAR_LEFT, TASKBAR_HEIGHT, _hwnd); + (LPCTSTR)(int)wcTaskBar.Register(), TITLE_TASKBAR, WS_CHILD|WS_VISIBLE, + TASKBAR_LEFT, 0, ClientRect(_hwnd).right-TASKBAR_LEFT, TASKBAR_HEIGHT, _hwnd); TaskBar* taskbar = static_cast(Window::get_window(_hwndTaskBar)); @@ -138,13 +128,10 @@ LRESULT DesktopBar::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam) } goto def; - case WM_SIZE: { - if (_hwndTaskBar) { - RECT clnt; - GetClientRect(_hwnd, &clnt); - MoveWindow(_hwndTaskBar, TASKBAR_LEFT, 0, clnt.right-TASKBAR_LEFT, HIWORD(lparam), TRUE); - } - break;} + case WM_SIZE: + if (_hwndTaskBar) + MoveWindow(_hwndTaskBar, TASKBAR_LEFT, 0, ClientRect(_hwnd).right-TASKBAR_LEFT, HIWORD(lparam), TRUE); + break; case WM_CLOSE: break; @@ -247,11 +234,11 @@ LRESULT TaskBar::Init(LPCREATESTRUCT pcs) super::Init(pcs); _htoolbar = CreateToolbarEx(_hwnd, - WS_CHILD|WS_VISIBLE|CCS_NODIVIDER|CCS_TOP|//CCS_NORESIZE| + WS_CHILD|WS_VISIBLE|CCS_NODIVIDER|CCS_TOP| TBSTYLE_LIST|TBSTYLE_TOOLTIPS|TBSTYLE_WRAPABLE|TBSTYLE_TRANSPARENT, IDW_TASKTOOLBAR, 0, 0, 0, NULL, 0, 0, 0, 16, 16, sizeof(TBBUTTON)); - SendMessage(_htoolbar, TB_SETBUTTONWIDTH, 0, MAKELONG(16,160)); + SendMessage(_htoolbar, TB_SETBUTTONWIDTH, 0, MAKELONG(80,160)); //SendMessage(_htoolbar, TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_MIXEDBUTTONS); //SendMessage(_htoolbar, TB_SETDRAWTEXTFLAGS, DT_CENTER|DT_VCENTER, DT_CENTER|DT_VCENTER); //SetWindowFont(_htoolbar, GetStockFont(ANSI_VAR_FONT), FALSE); @@ -322,6 +309,8 @@ int TaskBar::Command(int id, int code) _last_foreground_wnd = hwnd; } + Refresh(); + return 0; } diff --git a/reactos/subsys/system/explorer/taskbar/taskbar.h b/reactos/subsys/system/explorer/taskbar/taskbar.h index 144b9a52697..c9d84a8ea67 100644 --- a/reactos/subsys/system/explorer/taskbar/taskbar.h +++ b/reactos/subsys/system/explorer/taskbar/taskbar.h @@ -39,6 +39,13 @@ #define WM_SHELLHOOK_NOTIFY (WM_APP+0x10) +#define CLASSNAME_EXPLORERBAR _T("Shell_TrayWnd") +#define TITLE_EXPLORERBAR _T("DesktopBar") + +#define CLASSNAME_TASKBAR _T("MSTaskSwWClass") +#define TITLE_TASKBAR _T("Running Applications") + + struct DesktopBar : public Window { typedef Window super; diff --git a/reactos/subsys/system/explorer/utility/utility.h b/reactos/subsys/system/explorer/utility/utility.h index 4c1cb97c90a..78b522585b9 100644 --- a/reactos/subsys/system/explorer/utility/utility.h +++ b/reactos/subsys/system/explorer/utility/utility.h @@ -97,6 +97,15 @@ protected: }; +struct ClientRect : public RECT +{ + ClientRect(HWND hwnd) + { + GetClientRect(hwnd, this); + } +}; + + struct FullScreenParameters { FullScreenParameters() : _mode(FALSE) diff --git a/reactos/subsys/system/explorer/utility/window.cpp b/reactos/subsys/system/explorer/utility/window.cpp index 615bf172abf..9cae142343f 100644 --- a/reactos/subsys/system/explorer/utility/window.cpp +++ b/reactos/subsys/system/explorer/utility/window.cpp @@ -32,12 +32,14 @@ #include "../globals.h" -WindowClass::WindowClass(LPCTSTR classname, WNDPROC wndproc) +WindowClass::WindowClass(LPCTSTR classname, UINT style_, WNDPROC wndproc) { memset(this, 0, sizeof(WNDCLASSEX)); cbSize = sizeof(WNDCLASSEX); + style = style_; hInstance = g_Globals._hInstance; + hCursor = LoadCursor(0, IDC_ARROW); lpszClassName = classname; lpfnWndProc = wndproc; @@ -235,8 +237,7 @@ LRESULT ChildWindow::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam) case WM_PAINT: { PAINTSTRUCT ps; HBRUSH lastBrush; - RECT rt; - GetClientRect(_hwnd, &rt); + ClientRect rt(_hwnd); BeginPaint(_hwnd, &ps); rt.left = _split_pos-SPLIT_WIDTH/2; rt.right = _split_pos+SPLIT_WIDTH/2+1; @@ -274,10 +275,9 @@ LRESULT ChildWindow::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam) break;} case WM_LBUTTONDOWN: { - RECT rt; int x = LOWORD(lparam); - GetClientRect(_hwnd, &rt); + ClientRect rt(_hwnd); if (x>=_split_pos-SPLIT_WIDTH/2 && x<_split_pos+SPLIT_WIDTH/2+1) { _last_split = _split_pos; @@ -295,7 +295,7 @@ LRESULT ChildWindow::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam) if (wparam == VK_ESCAPE) if (GetCapture() == _hwnd) { _split_pos = _last_split; - RECT rt; GetClientRect(_hwnd, &rt); + ClientRect rt(_hwnd); resize_children(rt.right, rt.bottom); _last_split = -1; ReleaseCapture(); @@ -307,8 +307,7 @@ LRESULT ChildWindow::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam) if (GetCapture() == _hwnd) { int x = LOWORD(lparam); - RECT rt; - GetClientRect(_hwnd, &rt); + ClientRect rt(_hwnd); if (x>=0 && x struct WindowCreatorInfo struct WindowClass : public WNDCLASSEX { - WindowClass(LPCTSTR classname, WNDPROC wndproc=Window::WindowWndProc); + WindowClass(LPCTSTR classname, UINT style=0, WNDPROC wndproc=Window::WindowWndProc); ATOM Register() {