diff --git a/reactos/subsys/system/explorer/Jamfile b/reactos/subsys/system/explorer/Jamfile index 127ec3898f4..640bd6f75f3 100644 --- a/reactos/subsys/system/explorer/Jamfile +++ b/reactos/subsys/system/explorer/Jamfile @@ -43,7 +43,7 @@ exe explorer : dialogs/searchprogram.cpp dialogs/settings.cpp i386-stub-win32.c - : WIN32 _WIN32_IE=0x0600 _WIN32_WINNT=0x0501 + : WIN32 _WIN32_IE=0x0600 _WIN32_WINNT=0x0501 WINVER=0x0500 -I$(INCLUDE) #nur für GCC: -fexceptions -Wall gdi32 @@ -52,6 +52,7 @@ exe explorer : uuid wsock32 oleaut32 + msimg32 # expat notifyhook.dll libexpat.dll diff --git a/reactos/subsys/system/explorer/Makefile b/reactos/subsys/system/explorer/Makefile index de556985380..fe3dcde0c0b 100644 --- a/reactos/subsys/system/explorer/Makefile +++ b/reactos/subsys/system/explorer/Makefile @@ -10,13 +10,14 @@ TARGET_APPTYPE := windows TARGET_NAME := explorer TARGET_INSTALLDIR := . TARGET_CFLAGS := \ - -D__USE_W32API -DWIN32 -D_ROS_ -D_WIN32_IE=0x0600 \ - -D_WIN32_WINNT=0x0501 -DUNICODE -fexceptions -Wall + -D__USE_W32API -DWIN32 -D_ROS_ \ + -D_WIN32_IE=0x0600 -D_WIN32_WINNT=0x0501 -DWINVER=0x0500 \ + -DUNICODE -fexceptions -Wall TARGET_CPPFLAGS := $(TARGET_CFLAGS) TARGET_RCFLAGS := -D__USE_W32API -DWIN32 -D_ROS_ -D__WINDRES__ TARGET_SDKLIBS := \ gdi32.a comctl32.a ole32.a oleaut32.a shell32.a libexpat.a \ - notifyhook.a ws2_32.a + notifyhook.a ws2_32.a msimg32.a TARGET_GCCLIBS := stdc++ uuid TARGET_OBJECTS := \ explorer.o \ diff --git a/reactos/subsys/system/explorer/Makefile.MinGW b/reactos/subsys/system/explorer/Makefile.MinGW index a547d0935fc..96def265ac7 100644 --- a/reactos/subsys/system/explorer/Makefile.MinGW +++ b/reactos/subsys/system/explorer/Makefile.MinGW @@ -8,7 +8,7 @@ CC = gcc CXX = g++ LINK = g++ -CFLAGS = -DWIN32 -D_WIN32_IE=0x0600 -D_WIN32_WINNT=0x0501 -fexceptions -Wall -I. +CFLAGS = -DWIN32 -D_WIN32_IE=0x0600 -D_WIN32_WINNT=0x0501 -DWINVER=0x0500 -fexceptions -Wall -I. RCFLAGS = -DWIN32 -D__WINDRES__ LFLAGS = -Wl,--subsystem,windows @@ -75,7 +75,7 @@ OBJECTS = \ i386-stub-win32.o \ xmlstorage.o -LIBS = gdi32 comctl32 ole32 uuid +LIBS = gdi32 comctl32 msimg32 ole32 uuid DELAYIMPORTS = oleaut32 wsock32 all: $(TARGET) diff --git a/reactos/subsys/system/explorer/Makefile.PCH b/reactos/subsys/system/explorer/Makefile.PCH index c28b0158c94..71a048d8ea8 100644 --- a/reactos/subsys/system/explorer/Makefile.PCH +++ b/reactos/subsys/system/explorer/Makefile.PCH @@ -10,7 +10,7 @@ CC = gcc CXX = g++ LINK = g++ -CFLAGS = -DWIN32 -D_WIN32_IE=0x0600 -D_WIN32_WINNT=0x0501 -fexceptions -Wall -I. +CFLAGS = -DWIN32 -D_WIN32_IE=0x0600 -D_WIN32_WINNT=0x0501 -DWINVER=0x0500 -fexceptions -Wall -I. RCFLAGS = -DWIN32 -D__WINDRES__ LFLAGS = -Wl,--subsystem,windows @@ -77,7 +77,7 @@ OBJECTS = \ i386-stub-win32.o \ xmlstorage.o -LIBS = gdi32 comctl32 ole32 uuid +LIBS = gdi32 comctl32 msimg32 ole32 uuid DELAYIMPORTS = oleaut32 wsock32 all: precomp.h.gch $(TARGET) diff --git a/reactos/subsys/system/explorer/Makefile.Wine b/reactos/subsys/system/explorer/Makefile.Wine index 464ada9b625..39d0deb4d48 100644 --- a/reactos/subsys/system/explorer/Makefile.Wine +++ b/reactos/subsys/system/explorer/Makefile.Wine @@ -4,8 +4,8 @@ SRCDIR = . MODULE = explorer.exe APPMODE = gui -IMPORTS = shell32 comctl32 ole32 user32 gdi32 kernel32 advapi32 oleaut32 -EXTRADEFS = -D__WINE__ -D_WIN32_IE=0x0600 -D_WIN32_WINNT=0x0501 -D__MINGW32__ +IMPORTS = shell32 comctl32 msimg32 ole32 user32 gdi32 kernel32 advapi32 oleaut32 +EXTRADEFS = -D__WINE__ -D_WIN32_IE=0x0600 -D_WIN32_WINNT=0x0501 -DWINVER=0x0500 -D__MINGW32__ EXTRA_OBJS = notifyhook.dll libexpat.dll EXTRALIBS = $(LIBUUID) diff --git a/reactos/subsys/system/explorer/doc/changes.txt b/reactos/subsys/system/explorer/doc/changes.txt index e9cebcfc457..c87c89d3ae8 100644 --- a/reactos/subsys/system/explorer/doc/changes.txt +++ b/reactos/subsys/system/explorer/doc/changes.txt @@ -1,4 +1,4 @@ -You will find only major changes in this file. +0You will find only major changes in this file. Small bug fixes and developments steps are not listet here. If you search for more information, look into the CVS repository. @@ -91,3 +91,4 @@ If you search for more information, look into the CVS repository. 23.09.2004 m. fuchs configuration dialog to choose between MDI and SDI mode with persistent storage 20.11.2004 m. fuchs display notification icon change times notification area button to toggle hidden icons +21.11.2004 m. fuchs alpha-blend hidden notification icons diff --git a/reactos/subsys/system/explorer/taskbar/traynotify.cpp b/reactos/subsys/system/explorer/taskbar/traynotify.cpp index 532baebfaff..011ea1aba23 100644 --- a/reactos/subsys/system/explorer/taskbar/traynotify.cpp +++ b/reactos/subsys/system/explorer/taskbar/traynotify.cpp @@ -635,6 +635,10 @@ void NotifyArea::UpdateIcons() UpdateWindow(_hwnd); } +#ifdef _MSC_VER +#pragma comment(lib, "msimg32") // for AlphaBlend() +#endif + void NotifyArea::Paint() { BufferedPaintCanvas canvas(_hwnd); @@ -654,8 +658,18 @@ void NotifyArea::Paint() x += NOTIFYICON_DIST; } + MemCanvas mem_dc; + SelectedBitmap bmp(mem_dc, CreateCompatibleBitmap(canvas, NOTIFYICON_SIZE, NOTIFYICON_SIZE)); + RECT rect = {0, 0, NOTIFYICON_SIZE, NOTIFYICON_SIZE}; + BLENDFUNCTION blend = {AC_SRC_OVER, 0, 128, 0}; + for(NotifyIconSet::const_iterator it=_sorted_icons.begin(); it!=_sorted_icons.end(); ++it) { - DrawIconEx(canvas, x, y, it->_hIcon, NOTIFYICON_SIZE, NOTIFYICON_SIZE, 0, 0, DI_NORMAL); + if (it->_dwState & NIS_HIDDEN) { + FillRect(mem_dc, &rect, GetSysColorBrush(COLOR_BTNFACE)); + DrawIconEx(mem_dc, 0, 0, it->_hIcon, NOTIFYICON_SIZE, NOTIFYICON_SIZE, 0, 0, DI_NORMAL); + AlphaBlend(canvas, x, y, NOTIFYICON_SIZE, NOTIFYICON_SIZE, mem_dc, 0, 0, NOTIFYICON_SIZE, NOTIFYICON_SIZE, blend); + } else + DrawIconEx(canvas, x, y, it->_hIcon, NOTIFYICON_SIZE, NOTIFYICON_SIZE, 0, 0, DI_NORMAL); x += NOTIFYICON_DIST; }