mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 07:02:56 +00:00
optimized screen update
svn path=/trunk/; revision=7420
This commit is contained in:
parent
d36decca0d
commit
955c62bf6a
5 changed files with 44 additions and 27 deletions
|
@ -174,7 +174,7 @@ LRESULT DesktopWindow::Init(LPCREATESTRUCT pcs)
|
||||||
|
|
||||||
if (SUCCEEDED(hr)) {
|
if (SUCCEEDED(hr)) {
|
||||||
// subclass shellview window
|
// subclass shellview window
|
||||||
DesktopShellView* pShellView = new DesktopShellView(hWndView, _pShellView);
|
new DesktopShellView(hWndView, _pShellView);
|
||||||
|
|
||||||
_pShellView->UIActivate(SVUIA_ACTIVATE_FOCUS);
|
_pShellView->UIActivate(SVUIA_ACTIVATE_FOCUS);
|
||||||
|
|
||||||
|
|
|
@ -343,7 +343,7 @@ LRESULT FileChildWindow::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
|
||||||
Pane* pane = GetFocus()==_left_hwnd? _left: _right;
|
Pane* pane = GetFocus()==_left_hwnd? _left: _right;
|
||||||
|
|
||||||
switch(LOWORD(wparam)) {
|
switch(LOWORD(wparam)) {
|
||||||
case ID_WINDOW_NEW: {CONTEXT("PM_DISPATCH_COMMAND ID_WINDOW_NEW");
|
case ID_WINDOW_NEW: {CONTEXT("FileChildWindow PM_DISPATCH_COMMAND ID_WINDOW_NEW");
|
||||||
if (_root._entry->_etype == ET_SHELL)
|
if (_root._entry->_etype == ET_SHELL)
|
||||||
FileChildWindow::create(GetParent(_hwnd)/*_hmdiclient*/, ShellChildWndInfo(_path,DesktopFolderPath()));
|
FileChildWindow::create(GetParent(_hwnd)/*_hmdiclient*/, ShellChildWndInfo(_path,DesktopFolderPath()));
|
||||||
else
|
else
|
||||||
|
|
|
@ -402,6 +402,17 @@ LRESULT ShellBrowserChild::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
|
||||||
case WM_GETISHELLBROWSER: // for Registry Explorer Plugin
|
case WM_GETISHELLBROWSER: // for Registry Explorer Plugin
|
||||||
return (LRESULT)static_cast<IShellBrowser*>(this);
|
return (LRESULT)static_cast<IShellBrowser*>(this);
|
||||||
|
|
||||||
|
case PM_DISPATCH_COMMAND: {
|
||||||
|
switch(LOWORD(wparam)) {
|
||||||
|
case ID_WINDOW_NEW: {CONTEXT("ShellBrowserChild PM_DISPATCH_COMMAND ID_WINDOW_NEW");
|
||||||
|
ShellBrowserChild::create(GetParent(_hwnd)/*_hmdiclient*/, _create_info);
|
||||||
|
break;}
|
||||||
|
|
||||||
|
default:
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
return TRUE;}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return super::WndProc(nmsg, wparam, lparam);
|
return super::WndProc(nmsg, wparam, lparam);
|
||||||
}
|
}
|
||||||
|
|
|
@ -220,9 +220,10 @@ void StartMenu::AddShellEntries(const ShellDirectory& dir, int max, bool subfold
|
||||||
LRESULT StartMenu::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
|
LRESULT StartMenu::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
|
||||||
{
|
{
|
||||||
switch(nmsg) {
|
switch(nmsg) {
|
||||||
case WM_PAINT:
|
case WM_PAINT: {
|
||||||
Paint(PaintCanvas(_hwnd));
|
PaintCanvas canvas(_hwnd);
|
||||||
break;
|
Paint(canvas);
|
||||||
|
break;}
|
||||||
|
|
||||||
case WM_SIZE:
|
case WM_SIZE:
|
||||||
ResizeButtons(LOWORD(lparam)-_border_left);
|
ResizeButtons(LOWORD(lparam)-_border_left);
|
||||||
|
@ -344,9 +345,9 @@ LRESULT StartMenu::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void StartMenu::Paint(HDC hdc)
|
void StartMenu::Paint(PaintCanvas& canvas)
|
||||||
{
|
{
|
||||||
DrawFloatingButton(hdc);
|
DrawFloatingButton(canvas);
|
||||||
|
|
||||||
#ifdef _LIGHT_STARTMENU
|
#ifdef _LIGHT_STARTMENU
|
||||||
ClientRect clnt(_hwnd);
|
ClientRect clnt(_hwnd);
|
||||||
|
@ -354,25 +355,29 @@ void StartMenu::Paint(HDC hdc)
|
||||||
|
|
||||||
int sep_width = rect.right-rect.left - 4;
|
int sep_width = rect.right-rect.left - 4;
|
||||||
|
|
||||||
FontSelection font(hdc, GetStockFont(DEFAULT_GUI_FONT));
|
FontSelection font(canvas, GetStockFont(DEFAULT_GUI_FONT));
|
||||||
BkMode bk_mode(hdc, TRANSPARENT);
|
BkMode bk_mode(canvas, TRANSPARENT);
|
||||||
|
|
||||||
for(SMBtnList::const_iterator it=_buttons.begin(); it!=_buttons.end(); ++it) {
|
for(SMBtnList::const_iterator it=_buttons.begin(); it!=_buttons.end(); ++it) {
|
||||||
const SMBtnInfo& info = *it;
|
const SMBtnInfo& info = *it;
|
||||||
|
|
||||||
|
if (rect.top > canvas.rcPaint.bottom)
|
||||||
|
break;
|
||||||
|
|
||||||
if (info._id == -1) { // a separator?
|
if (info._id == -1) { // a separator?
|
||||||
rect.bottom = rect.top + STARTMENU_SEP_HEIGHT;
|
rect.bottom = rect.top + STARTMENU_SEP_HEIGHT;
|
||||||
|
|
||||||
BrushSelection brush_sel(hdc, GetSysColorBrush(COLOR_BTNSHADOW));
|
BrushSelection brush_sel(canvas, GetSysColorBrush(COLOR_BTNSHADOW));
|
||||||
PatBlt(hdc, rect.left+2, rect.top+STARTMENU_SEP_HEIGHT/2-1, sep_width, 1, PATCOPY);
|
PatBlt(canvas, rect.left+2, rect.top+STARTMENU_SEP_HEIGHT/2-1, sep_width, 1, PATCOPY);
|
||||||
|
|
||||||
SelectBrush(hdc, GetSysColorBrush(COLOR_BTNHIGHLIGHT));
|
SelectBrush(canvas, GetSysColorBrush(COLOR_BTNHIGHLIGHT));
|
||||||
PatBlt(hdc, rect.left+2, rect.top+STARTMENU_SEP_HEIGHT/2, sep_width, 1, PATCOPY);
|
PatBlt(canvas, rect.left+2, rect.top+STARTMENU_SEP_HEIGHT/2, sep_width, 1, PATCOPY);
|
||||||
} else {
|
} else {
|
||||||
rect.bottom = rect.top + STARTMENU_LINE_HEIGHT;
|
rect.bottom = rect.top + STARTMENU_LINE_HEIGHT;
|
||||||
|
|
||||||
DrawStartMenuButton(hdc, rect, info._title, info._hIcon,
|
if (rect.top >= canvas.rcPaint.top)
|
||||||
info._hasSubmenu, info._enabled, info._id==_selected_id, false);
|
DrawStartMenuButton(canvas, rect, info._title, info._hIcon,
|
||||||
|
info._hasSubmenu, info._enabled, info._id==_selected_id, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
rect.top = rect.bottom;
|
rect.top = rect.bottom;
|
||||||
|
@ -1143,9 +1148,10 @@ void StartMenuRoot::AddEntries()
|
||||||
LRESULT StartMenuRoot::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
|
LRESULT StartMenuRoot::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
|
||||||
{
|
{
|
||||||
switch(nmsg) {
|
switch(nmsg) {
|
||||||
case WM_PAINT:
|
case WM_PAINT: {
|
||||||
Paint(PaintCanvas(_hwnd));
|
PaintCanvas canvas(_hwnd);
|
||||||
break;
|
Paint(canvas);
|
||||||
|
break;}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return super::WndProc(nmsg, wparam, lparam);
|
return super::WndProc(nmsg, wparam, lparam);
|
||||||
|
@ -1154,7 +1160,7 @@ LRESULT StartMenuRoot::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void StartMenuRoot::Paint(HDC hdc)
|
void StartMenuRoot::Paint(PaintCanvas& canvas)
|
||||||
{
|
{
|
||||||
int clr_bits;
|
int clr_bits;
|
||||||
{WindowCanvas dc(_hwnd); clr_bits=GetDeviceCaps(dc, BITSPIXEL);}
|
{WindowCanvas dc(_hwnd); clr_bits=GetDeviceCaps(dc, BITSPIXEL);}
|
||||||
|
@ -1169,22 +1175,22 @@ void StartMenuRoot::Paint(HDC hdc)
|
||||||
|
|
||||||
RECT rect = {0, 0, _logo_size.cx-1, clnt.bottom-h};
|
RECT rect = {0, 0, _logo_size.cx-1, clnt.bottom-h};
|
||||||
HBRUSH hbr = CreateSolidBrush(logo256? RGB(166,202,240): RGB(255,255,255)); // same color as the background color in the logo bitmap
|
HBRUSH hbr = CreateSolidBrush(logo256? RGB(166,202,240): RGB(255,255,255)); // same color as the background color in the logo bitmap
|
||||||
FillRect(hdc, &rect, hbr);
|
FillRect(canvas, &rect, hbr);
|
||||||
DeleteObject(hbr);
|
DeleteObject(hbr);
|
||||||
//PatBlt(hdc, _logo_size.cx-1, 0, 1, clnt.bottom-h, WHITENESS);
|
//PatBlt(canvas, _logo_size.cx-1, 0, 1, clnt.bottom-h, WHITENESS);
|
||||||
PatBlt(hdc, _logo_size.cx-1, 0, 1, clnt.bottom-h, WHITENESS);
|
PatBlt(canvas, _logo_size.cx-1, 0, 1, clnt.bottom-h, WHITENESS);
|
||||||
|
|
||||||
BitBlt(hdc, 0, clnt.bottom-h, _logo_size.cx, h, mem_dc, 0, 0, SRCCOPY);
|
BitBlt(canvas, 0, clnt.bottom-h, _logo_size.cx, h, mem_dc, 0, 0, SRCCOPY);
|
||||||
|
|
||||||
if (!logo256) {
|
if (!logo256) {
|
||||||
rect.left = rect.right++;
|
rect.left = rect.right++;
|
||||||
rect.bottom = clnt.bottom;
|
rect.bottom = clnt.bottom;
|
||||||
HBRUSH hbr_border = GetStockBrush(GRAY_BRUSH); //CreateSolidBrush(RGB(71,88,85));
|
HBRUSH hbr_border = GetStockBrush(GRAY_BRUSH); //CreateSolidBrush(RGB(71,88,85));
|
||||||
FillRect(hdc, &rect, hbr_border);
|
FillRect(canvas, &rect, hbr_border);
|
||||||
//DeleteObject(hbr_border);
|
//DeleteObject(hbr_border);
|
||||||
}
|
}
|
||||||
|
|
||||||
super::Paint(hdc);
|
super::Paint(canvas);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -272,7 +272,7 @@ protected:
|
||||||
void DrawFloatingButton(HDC hdc);
|
void DrawFloatingButton(HDC hdc);
|
||||||
void GetFloatingButonRect(LPRECT prect);
|
void GetFloatingButonRect(LPRECT prect);
|
||||||
|
|
||||||
void Paint(HDC hdc);
|
void Paint(PaintCanvas& canvas);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -339,7 +339,7 @@ protected:
|
||||||
SIZE _logo_size;
|
SIZE _logo_size;
|
||||||
|
|
||||||
void AddEntries();
|
void AddEntries();
|
||||||
void Paint(HDC hdc);
|
void Paint(PaintCanvas& canvas);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue