From 8a0662310164d7aff1ef847ef158f38fffbce238 Mon Sep 17 00:00:00 2001 From: gho tik Date: Tue, 14 Jul 2015 12:41:06 -0400 Subject: [PATCH] v2_03_29_src Former-commit-id: 049d5d6551dc7611af43f2612f6eb46a55631a48 --- Include/dxwnd.h | 1 + build/dxwnd.dll | 2 +- build/dxwnd.exe | 4 +- build/exports/Corsairs.dxw | 31 ++++ build/exports/Drome Racers.dxw | 31 ++++ build/exports/Echelon.dxw | 13 +- build/exports/NetStorm - Islands at War.dxw | 2 +- build/exports/O.D.T. Escape Or Die Trying.dxw | 6 +- build/exports/O.R.B. Offword Rescue Base.dxw | 6 +- build/exports/Panzer Dragoon.dxw | 15 +- build/exports/Panzer General 3D Assault.dxw | 11 +- build/exports/Populous 3 (GOG - D3D).dxw | 11 +- build/exports/Praetorians.dxw | 11 +- build/exports/Prince of Persia 3D Demo.dxw | 31 ++++ build/exports/Project Eden.dxw | 7 +- build/exports/Psychoballs.dxw | 31 ++++ build/exports/Rift Space.dxw | 31 ++++ build/exports/Robocop.dxw | 31 ++++ build/exports/Strength & Honour.dxw | 31 ++++ build/exports/The Hobbit(TM) Demo.dxw | 31 ++++ build/exports/The Hulk Demo.dxw | 31 ++++ build/exports/dxwnd.ini | 5 + build/readme-relnotes.txt | 6 +- dll/dwhide.cpp | 55 ++++++++ dll/dxhook.cpp | 8 ++ dll/dxwnd.cpp | 2 +- dll/dxwnd.vs2008.suo | Bin 369568 -> 377856 bytes dll/hd3d7.cpp | 20 ++- host/CoolUtils.cpp | 132 ++++++++++++++++++ host/CoolUtils.h | 11 ++ host/TabWindow.cpp | 1 + host/TargetDlg.cpp | 1 + host/TargetDlg.h | 1 + host/dxwndhost.rc | Bin 101036 -> 101642 bytes host/dxwndhost.vs2008.suo | Bin 239616 -> 239104 bytes host/dxwndhost.vs2008.vcproj | 8 ++ host/dxwndhostView.cpp | 17 ++- host/dxwndhostView.h | 2 + host/resource | Bin 35226 -> 35600 bytes 39 files changed, 606 insertions(+), 31 deletions(-) create mode 100644 build/exports/Corsairs.dxw create mode 100644 build/exports/Drome Racers.dxw create mode 100644 build/exports/Prince of Persia 3D Demo.dxw create mode 100644 build/exports/Psychoballs.dxw create mode 100644 build/exports/Rift Space.dxw create mode 100644 build/exports/Robocop.dxw create mode 100644 build/exports/Strength & Honour.dxw create mode 100644 build/exports/The Hobbit(TM) Demo.dxw create mode 100644 build/exports/The Hulk Demo.dxw create mode 100644 build/exports/dxwnd.ini create mode 100644 host/CoolUtils.cpp create mode 100644 host/CoolUtils.h diff --git a/Include/dxwnd.h b/Include/dxwnd.h index 95d7871..d97d604 100644 --- a/Include/dxwnd.h +++ b/Include/dxwnd.h @@ -191,6 +191,7 @@ #define DISABLEMAXWINMODE 0x00000080 // invoke ddraw SetAppCompatData(12,0) to set DisableMaxWindowedMode #define FIXPITCH 0x00000100 // Fixes surface filling made with no concern to actual pitch value #define POWER2WIDTH 0x00000200 // Fixes ..... +#define HIDETASKBAR 0x00000400 // Hides taskbar & start menu during game execution // logging Tflags DWORD: #define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general diff --git a/build/dxwnd.dll b/build/dxwnd.dll index 3256573..9fa17b7 100644 --- a/build/dxwnd.dll +++ b/build/dxwnd.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bd9f3a8d1c620b34bb5d445bab38ed6510a486f2f3bdbde661a4a8d3d3c2052f +oid sha256:427b51e427648a3f526882f2ed47eb400830ad367e5484f9fce47a94aab837b9 size 578048 diff --git a/build/dxwnd.exe b/build/dxwnd.exe index 9003103..30a5850 100644 --- a/build/dxwnd.exe +++ b/build/dxwnd.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5be9b2e6e65b9ed2d920418acc46bbfb48166515b1ad5d47f5c17854d73c5041 -size 540672 +oid sha256:e15db53d932535d67b361f33febb9c9a52b3c5d3c0552f1b4f857fa0f4ac868c +size 541184 diff --git a/build/exports/Corsairs.dxw b/build/exports/Corsairs.dxw new file mode 100644 index 0000000..6dcee05 --- /dev/null +++ b/build/exports/Corsairs.dxw @@ -0,0 +1,31 @@ +[target] +title0=Corsairs +path0=D:\Games\CORSAIRS\corsairs.exe +launchpath0= +module0= +opengllib0= +notes0= +ver0=0 +coord0=0 +flag0=136314914 +flagg0=1207959552 +flagh0=20 +flagi0=134217732 +flagj0=4224 +flagk0=0 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 +swapeffect0=0 diff --git a/build/exports/Drome Racers.dxw b/build/exports/Drome Racers.dxw new file mode 100644 index 0000000..9ef91b1 --- /dev/null +++ b/build/exports/Drome Racers.dxw @@ -0,0 +1,31 @@ +[target] +title0=Drome Racers +path0=D:\Games\LEGO Interactive\Drome Racers\Drome Racers.exe +launchpath0= +module0= +opengllib0= +notes0= +ver0=0 +coord0=0 +flag0=144711714 +flagg0=1207959552 +flagh0=20 +flagi0=138412036 +flagj0=4224 +flagk0=0 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 +swapeffect0=0 diff --git a/build/exports/Echelon.dxw b/build/exports/Echelon.dxw index 956cf80..f978d4a 100644 --- a/build/exports/Echelon.dxw +++ b/build/exports/Echelon.dxw @@ -3,12 +3,12 @@ title0=Echelon path0=D:\Games\echelon\Game.exe module0= opengllib0= -ver0=0 +ver0=7 coord0=0 -flag0=151011328 -flagg0=134217728 +flag0=134234114 +flagg0=1207959552 flagh0=20 -flagi0=4 +flagi0=4194308 tflag0=0 initx0=0 inity0=0 @@ -24,3 +24,8 @@ maxfps0=0 initts0=0 winver0=0 maxres0=-1 +launchpath0= +notes0= +flagj0=128 +flagk0=0 +swapeffect0=0 diff --git a/build/exports/NetStorm - Islands at War.dxw b/build/exports/NetStorm - Islands at War.dxw index ab4258d..5b71ca4 100644 --- a/build/exports/NetStorm - Islands at War.dxw +++ b/build/exports/NetStorm - Islands at War.dxw @@ -6,7 +6,7 @@ opengllib0= ver0=0 coord0=0 flag0=679608354 -flagg0=1745879296 +flagg0=1209008384 flagh0=20 flagi0=4194308 tflag0=0 diff --git a/build/exports/O.D.T. Escape Or Die Trying.dxw b/build/exports/O.D.T. Escape Or Die Trying.dxw index 508f20b..1902c1c 100644 --- a/build/exports/O.D.T. Escape Or Die Trying.dxw +++ b/build/exports/O.D.T. Escape Or Die Trying.dxw @@ -6,7 +6,7 @@ module0= opengllib0= ver0=0 coord0=0 -flag0=1207959648 +flag0=1207959650 flagg0=1207959552 flagh0=20 flagi0=205520900 @@ -25,3 +25,7 @@ maxfps0=0 initts0=0 winver0=0 maxres0=-1 +notes0= +flagj0=128 +flagk0=0 +swapeffect0=0 diff --git a/build/exports/O.R.B. Offword Rescue Base.dxw b/build/exports/O.R.B. Offword Rescue Base.dxw index 62d09dd..d5da232 100644 --- a/build/exports/O.R.B. Offword Rescue Base.dxw +++ b/build/exports/O.R.B. Offword Rescue Base.dxw @@ -5,7 +5,7 @@ module0= opengllib0= ver0=0 coord0=0 -flag0=134234144 +flag0=134234146 flagg0=1207959552 flagh0=20 flagi0=4194308 @@ -25,3 +25,7 @@ initts0=0 winver0=0 maxres0=-1 launchpath0= +notes0= +flagj0=128 +flagk0=0 +swapeffect0=0 diff --git a/build/exports/Panzer Dragoon.dxw b/build/exports/Panzer Dragoon.dxw index f8d0ef4..d204333 100644 --- a/build/exports/Panzer Dragoon.dxw +++ b/build/exports/Panzer Dragoon.dxw @@ -5,11 +5,11 @@ module0= opengllib0= ver0=0 coord0=0 -flag0=134217762 -flagg0=1207959552 +flag0=681574435 +flagg0=1744830464 flagh0=20 -flagi0=4 -tflag0=67 +flagi0=138412036 +tflag0=0 initx0=0 inity0=0 minx0=0 @@ -22,3 +22,10 @@ sizx0=800 sizy0=600 maxfps0=0 initts0=0 +launchpath0= +notes0= +flagj0=4224 +flagk0=0 +winver0=0 +maxres0=-1 +swapeffect0=0 diff --git a/build/exports/Panzer General 3D Assault.dxw b/build/exports/Panzer General 3D Assault.dxw index 072af26..b86849d 100644 --- a/build/exports/Panzer General 3D Assault.dxw +++ b/build/exports/Panzer General 3D Assault.dxw @@ -5,11 +5,11 @@ module0=PG3Draw opengllib0= ver0=0 coord0=0 -flag0=696254496 +flag0=679477282 flagg0=1207959568 flagh0=65556 -flagi0=4 -tflag0=6210 +flagi0=4194308 +tflag0=-2147477245 initx0=0 inity0=0 minx0=0 @@ -24,3 +24,8 @@ maxfps0=0 initts0=0 winver0=0 maxres0=-1 +launchpath0=D:\Games\Panzer General 3D\PG3.EXE +notes0= +flagj0=128 +flagk0=0 +swapeffect0=0 diff --git a/build/exports/Populous 3 (GOG - D3D).dxw b/build/exports/Populous 3 (GOG - D3D).dxw index 3bfd24c..004cccc 100644 --- a/build/exports/Populous 3 (GOG - D3D).dxw +++ b/build/exports/Populous 3 (GOG - D3D).dxw @@ -5,10 +5,10 @@ module0= opengllib0= ver0=0 coord0=0 -flag0=671105572 -flagg0=134217744 +flag0=671105062 +flagg0=1207959568 flagh0=65556 -flagi0=4 +flagi0=4194308 tflag0=6146 initx0=0 inity0=0 @@ -24,3 +24,8 @@ maxfps0=0 initts0=0 winver0=0 maxres0=-1 +launchpath0= +notes0= +flagj0=128 +flagk0=0 +swapeffect0=0 diff --git a/build/exports/Praetorians.dxw b/build/exports/Praetorians.dxw index a07422a..95ce8ec 100644 --- a/build/exports/Praetorians.dxw +++ b/build/exports/Praetorians.dxw @@ -5,10 +5,10 @@ module0= opengllib0= ver0=0 coord0=0 -flag0=134217760 +flag0=134217762 flagg0=1207959552 flagh0=20 -flagi0=0 +flagi0=4194304 tflag0=259 initx0=0 inity0=0 @@ -22,3 +22,10 @@ sizx0=800 sizy0=600 maxfps0=0 initts0=0 +launchpath0= +notes0= +flagj0=128 +flagk0=0 +winver0=0 +maxres0=0 +swapeffect0=0 diff --git a/build/exports/Prince of Persia 3D Demo.dxw b/build/exports/Prince of Persia 3D Demo.dxw new file mode 100644 index 0000000..6bfc624 --- /dev/null +++ b/build/exports/Prince of Persia 3D Demo.dxw @@ -0,0 +1,31 @@ +[target] +title0=Prince of Persia 3D Demo +path0=D:\Games\Prince of Persia 3D Demo\PoP3DDemo.exe +launchpath0= +module0= +opengllib0= +notes0= +ver0=0 +coord0=0 +flag0=136331298 +flagg0=1207959552 +flagh0=20 +flagi0=136314885 +flagj0=4224 +flagk0=0 +tflag0=-2147477245 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 +swapeffect0=0 diff --git a/build/exports/Project Eden.dxw b/build/exports/Project Eden.dxw index dd04a6e..f529a55 100644 --- a/build/exports/Project Eden.dxw +++ b/build/exports/Project Eden.dxw @@ -8,7 +8,7 @@ coord0=0 flag0=134217763 flagg0=1207959552 flagh0=20 -flagi0=4 +flagi0=4194308 tflag0=64 initx0=0 inity0=0 @@ -24,3 +24,8 @@ maxfps0=0 initts0=0 winver0=0 maxres0=-1 +launchpath0= +notes0= +flagj0=128 +flagk0=0 +swapeffect0=0 diff --git a/build/exports/Psychoballs.dxw b/build/exports/Psychoballs.dxw new file mode 100644 index 0000000..b121f0d --- /dev/null +++ b/build/exports/Psychoballs.dxw @@ -0,0 +1,31 @@ +[target] +title0=Psychoballs +path0=D:\Games\Psychoballs\PsychoBalls.exe +launchpath0= +module0= +opengllib0= +notes0= +ver0=0 +coord0=0 +flag0=136314914 +flagg0=1207959552 +flagh0=20 +flagi0=134217732 +flagj0=4224 +flagk0=0 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 +swapeffect0=0 diff --git a/build/exports/Rift Space.dxw b/build/exports/Rift Space.dxw new file mode 100644 index 0000000..36e6a02 --- /dev/null +++ b/build/exports/Rift Space.dxw @@ -0,0 +1,31 @@ +[target] +title0=Rift Space +path0=D:\Games\RiftSpace\RiftSpace.EXE +launchpath0= +module0= +opengllib0= +notes0= +ver0=0 +coord0=0 +flag0=671105062 +flagg0=1207959552 +flagh0=20 +flagi0=138412036 +flagj0=4224 +flagk0=0 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 +swapeffect0=0 diff --git a/build/exports/Robocop.dxw b/build/exports/Robocop.dxw new file mode 100644 index 0000000..24f76bc --- /dev/null +++ b/build/exports/Robocop.dxw @@ -0,0 +1,31 @@ +[target] +title0=Robocop +path0=D:\Games\Robocop\Robocop.exe +launchpath0= +module0= +opengllib0= +notes0= +ver0=0 +coord0=0 +flag0=136314914 +flagg0=1207959552 +flagh0=20 +flagi0=138412036 +flagj0=4224 +flagk0=0 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 +swapeffect0=0 diff --git a/build/exports/Strength & Honour.dxw b/build/exports/Strength & Honour.dxw new file mode 100644 index 0000000..af97b2a --- /dev/null +++ b/build/exports/Strength & Honour.dxw @@ -0,0 +1,31 @@ +[target] +title0=Strength & Honour +path0=D:\Program Files (x86)\Magitech\SNH\Strength & Honour.exe +launchpath0= +module0= +opengllib0= +notes0= +ver0=0 +coord0=0 +flag0=681574434 +flagg0=1744961536 +flagh0=65554 +flagi0=138412036 +flagj0=528576 +flagk0=0 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=0 +sizy0=0 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 +swapeffect0=0 diff --git a/build/exports/The Hobbit(TM) Demo.dxw b/build/exports/The Hobbit(TM) Demo.dxw new file mode 100644 index 0000000..f547b03 --- /dev/null +++ b/build/exports/The Hobbit(TM) Demo.dxw @@ -0,0 +1,31 @@ +[target] +title0=The Hobbit(TM) Demo +path0=D:\Games\The Hobbit(TM) Demo\MeridianDemo.exe +launchpath0= +module0= +opengllib0= +notes0= +ver0=8 +coord0=0 +flag0=134217762 +flagg0=1207959552 +flagh0=20 +flagi0=138412036 +flagj0=4224 +flagk0=0 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 +swapeffect0=0 diff --git a/build/exports/The Hulk Demo.dxw b/build/exports/The Hulk Demo.dxw new file mode 100644 index 0000000..fa8c3df --- /dev/null +++ b/build/exports/The Hulk Demo.dxw @@ -0,0 +1,31 @@ +[target] +title0=The Hulk Demo +path0=D:\Games\The Hulk Demo\hulk_demo.exe +launchpath0= +module0= +opengllib0= +notes0= +ver0=8 +coord0=0 +flag0=679493670 +flagg0=1209008128 +flagh0=20 +flagi0=138412036 +flagj0=4224 +flagk0=0 +tflag0=-2147477241 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 +swapeffect0=0 diff --git a/build/exports/dxwnd.ini b/build/exports/dxwnd.ini new file mode 100644 index 0000000..e334ef2 --- /dev/null +++ b/build/exports/dxwnd.ini @@ -0,0 +1,5 @@ +[window] +posx=1541 +posy=587 +sizx=320 +sizy=200 diff --git a/build/readme-relnotes.txt b/build/readme-relnotes.txt index 4819f8b..d81f782 100644 --- a/build/readme-relnotes.txt +++ b/build/readme-relnotes.txt @@ -846,4 +846,8 @@ fix: cleaned up some opengl hooking code. Mind possible regressions .... v2.03.28: add: added "Lock / Unlock pitch fix" flag to compensate for pitch change in emulation mode. Fixes "Snowboard racer" slanted graphic add: added "Width not power of 2 fix" flag to compensate for pitch change in emulation mode. Fixes "Microsoft Midtown Madness" slanted graphic -add: debug flag "Highlight Locked surfaces" to highlight service surfaces that are Lock-ed and Unlock-ed. \ No newline at end of file +add: debug flag "Highlight Locked surfaces" to highlight service surfaces that are Lock-ed and Unlock-ed. + +v2.03.29: +fix: wrong d3d7 hook, now "Echelon" works again. +add: "hide taskbar" option. A little experimental, so far. If the game crashes, the taskbar may not be reactivated: use menu commands to recover. \ No newline at end of file diff --git a/dll/dwhide.cpp b/dll/dwhide.cpp index 93438e4..7ab3af9 100644 --- a/dll/dwhide.cpp +++ b/dll/dwhide.cpp @@ -3,6 +3,53 @@ #include #include "dxwnd.h" #include "dxwcore.hpp" +#include "syslibs.h" +#include "dxhelper.h" + +/**************************************************************************** + * Function Name : gShowHideTaskBar() * + * Parameters : BOOL bHide (flag to toggle Show/Hide of Taskbar) * + * Return type : void * + * Purpose : Function is used to Show/Hide the TaskBar * + * Author : Ashutosh R. Bhatikar (ARB) * + * Date written : 20th December 2000 * + * Modification History : * + * Date of modification Reason * + * 25th December 2000 Added methods to Show/Hide menu * + ****************************************************************************/ + +void gShowHideTaskBar(BOOL bHide /*=FALSE*/) +{ + RECT rectWorkArea; + RECT rectTaskBar; + static HWND pWnd = NULL; + static HWND pStart = NULL; + + if(!pWnd) { + pWnd = FindWindow("Shell_TrayWnd", ""); + // WinXP find + pStart = FindWindowEx(pWnd, NULL, "Button", NULL); + // if unsuccessful, do a Win7/8 find + if(!pStart) pStart = FindWindowEx((*pGetDesktopWindow)(), NULL, "Button", "Start"); + } + + (*pSystemParametersInfoA)(SPI_GETWORKAREA,0, (LPVOID)&rectWorkArea, 0); + (*pGetWindowRect)(pWnd, &rectTaskBar); + if( bHide ){ + // Code to Hide the System Task Bar + rectWorkArea.bottom += (rectTaskBar.bottom - rectTaskBar.top); + (*pSystemParametersInfoA)(SPI_SETWORKAREA, 0, (LPVOID)&rectWorkArea, 0); + ShowWindow(pWnd, SW_HIDE); + ShowWindow(pStart, SW_HIDE); + } + else{ + // Code to Show the System Task Bar + rectWorkArea.bottom -= (rectTaskBar.bottom - rectTaskBar.top); + (*pSystemParametersInfoA)(SPI_SETWORKAREA, 0, (LPVOID)&rectWorkArea, 0); + ShowWindow(pWnd, SW_SHOW); + ShowWindow(pStart, SW_SHOW); + } +} static bool quit = false; @@ -83,6 +130,14 @@ void dxwCore::HideDesktop(HWND hwnd) return; } + if(dxw.dwFlags6 & HIDETASKBAR){ + wDesktop.left = 0; + wDesktop.top = 0; + wDesktop.right = (*pGetSystemMetrics)(SM_CXSCREEN); + wDesktop.bottom = (*pGetSystemMetrics)(SM_CYSCREEN); + gShowHideTaskBar(TRUE); + } + // this is tricky: if you create a window with zero style, the manager seems to apply a default // overlapped window style. The only way I got to be sure that the style is exactly nothing // at all is to repeat the command by a SetWindowLong(hwnd, GWL_STYLE, 0) that sets again zero diff --git a/dll/dxhook.cpp b/dll/dxhook.cpp index e1c2413..382ca2b 100644 --- a/dll/dxhook.cpp +++ b/dll/dxhook.cpp @@ -1055,6 +1055,14 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp if (dxw.dwFlags1 & CLIPCURSOR) dxw.EraseClipCursor(); if (dxw.dwFlags1 & ENABLECLIPPING) (*pClipCursor)(NULL); break; + case WM_QUIT: + case WM_DESTROY: + case WM_CLOSE: + if(dxw.dwFlags6 & HIDETASKBAR){ + extern void gShowHideTaskBar(BOOL); + gShowHideTaskBar(FALSE); + } + break; // commented out: WM_CLOSE just issue a request to close the window, not the process! It should be WM_QUIT.... //case WM_CLOSE: // OutTraceDW("WindowProc: WM_CLOSE - terminating process\n"); diff --git a/dll/dxwnd.cpp b/dll/dxwnd.cpp index eb3ca8f..23b0f63 100644 --- a/dll/dxwnd.cpp +++ b/dll/dxwnd.cpp @@ -27,7 +27,7 @@ along with this program. If not, see . #include "TlHelp32.h" -#define VERSION "2.03.28" +#define VERSION "2.03.29" #define DDTHREADLOCK 1 //#define LOCKTHREADS diff --git a/dll/dxwnd.vs2008.suo b/dll/dxwnd.vs2008.suo index 60e1a664c95eab491cdfb9e229a8e07048153e85..d1b1b76490bb28d5cd36a77c5320de8d64ed046e 100644 GIT binary patch delta 13284 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 N7<+YFXKhu|e*wO|eXali delta 5888 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 diff --git a/dll/hd3d7.cpp b/dll/hd3d7.cpp index 49582d5..2d42224 100644 --- a/dll/hd3d7.cpp +++ b/dll/hd3d7.cpp @@ -59,6 +59,7 @@ HRESULT WINAPI extEnumZBufferFormats(void *, REFCLSID, LPD3DENUMPIXELFORMATSCALL // Direct3DDevice-n interfaces +typedef HRESULT (WINAPI *QueryInterfaceD3D_Type)(void *, REFIID, LPVOID *); typedef HRESULT (WINAPI *D3DInitialize_Type)(void *, LPDIRECT3D , LPGUID, LPD3DDEVICEDESC); typedef HRESULT (WINAPI *D3DGetCaps_Type)(void *, LPD3DDEVICEDESC ,LPD3DDEVICEDESC); typedef HRESULT (WINAPI *D3DGetCaps3_Type)(void *, LPD3DDEVICEDESC, LPD3DDEVICEDESC); @@ -79,6 +80,7 @@ typedef HRESULT (WINAPI *SetTexture7_Type)(void *, DWORD, LPDIRECTDRAWSURFACE7); typedef HRESULT (WINAPI *SwapTextureHandles_Type)(void *, LPDIRECT3DTEXTURE, LPDIRECT3DTEXTURE); typedef HRESULT (WINAPI *SwapTextureHandles2_Type)(void *, LPDIRECT3DTEXTURE2, LPDIRECT3DTEXTURE2); +QueryInterfaceD3_Type pQueryInterfaceD3D = NULL; D3DInitialize_Type pD3DInitialize = NULL; D3DGetCaps_Type pD3DGetCaps = NULL; D3DGetCaps3_Type pGetCaps3 = NULL; @@ -168,6 +170,7 @@ HRESULT WINAPI extGetViewport(void *, LPD3DVIEWPORT); HRESULT WINAPI extSetMaterial(void *, LPD3DMATERIAL); HRESULT WINAPI extGetMaterial(void *, LPD3DMATERIAL); HRESULT WINAPI extQueryInterfaceD3(void *, REFIID, LPVOID *); +HRESULT WINAPI extQueryInterfaceD3D(void *, REFIID, LPVOID *); HRESULT WINAPI extD3DInitialize(void *, LPDIRECT3D , LPGUID, LPD3DDEVICEDESC); HRESULT WINAPI extD3DGetCaps(void *, LPD3DDEVICEDESC ,LPD3DDEVICEDESC); @@ -410,7 +413,6 @@ void HookDirect3DSession(LPDIRECTDRAW *lplpdd, int d3dversion) } } - void HookDirect3DDevice(void **lpd3ddev, int d3dversion) { OutTraceD3D("HookDirect3DDevice: d3ddev=%x d3dversion=%d\n", lpd3ddev, d3dversion); @@ -418,7 +420,7 @@ void HookDirect3DDevice(void **lpd3ddev, int d3dversion) switch(d3dversion){ case 1: - SetHook((void *)(**(DWORD **)lpd3ddev + 0), extQueryInterfaceD3, (void **)&pQueryInterfaceD3, "QueryInterface(D3D)"); + //SetHook((void *)(**(DWORD **)lpd3ddev + 0), extQueryInterfaceD3D, (void **)&pQueryInterfaceD3D, "QueryInterface(D3D)"); //SetHook((void *)(**(DWORD **)lpd3ddev + 16), extGetCaps1, (void **)&pGetCaps1, "GetCaps(1)"); SetHook((void *)(**(DWORD **)lpd3ddev + 20), extSwapTextureHandles, (void **)&pSwapTextureHandles, "SwapTextureHandles(1)"); SetHook((void *)(**(DWORD **)lpd3ddev + 36), extAddViewport1, (void **)&pAddViewport1, "AddViewport(1)"); @@ -428,7 +430,7 @@ void HookDirect3DDevice(void **lpd3ddev, int d3dversion) SetHook((void *)(**(DWORD **)lpd3ddev + 80), extEndScene1, (void **)&pEndScene1, "EndScene(1)"); break; case 2: - SetHook((void *)(**(DWORD **)lpd3ddev + 0), extQueryInterfaceD3, (void **)&pQueryInterfaceD3, "QueryInterface(D3D)"); + //SetHook((void *)(**(DWORD **)lpd3ddev + 0), extQueryInterfaceD3D, (void **)&pQueryInterfaceD3D, "QueryInterface(D3D)"); //SetHook((void *)(**(DWORD **)lpd3ddev + 12), extGetCaps2, (void **)&pGetCaps2, "GetCaps(2)"); SetHook((void *)(**(DWORD **)lpd3ddev + 16), extSwapTextureHandles, (void **)&pSwapTextureHandles, "SwapTextureHandles(1)"); SetHook((void *)(**(DWORD **)lpd3ddev + 24), extAddViewport2, (void **)&pAddViewport2, "AddViewport(2)"); @@ -446,7 +448,7 @@ void HookDirect3DDevice(void **lpd3ddev, int d3dversion) } break; case 3: - SetHook((void *)(**(DWORD **)lpd3ddev + 0), extQueryInterfaceD3, (void **)&pQueryInterfaceD3, "QueryInterface(D3D)"); + //SetHook((void *)(**(DWORD **)lpd3ddev + 0), extQueryInterfaceD3D, (void **)&pQueryInterfaceD3D, "QueryInterface(D3D)"); SetHook((void *)(**(DWORD **)lpd3ddev + 12), extGetCaps3, (void **)&pGetCaps3, "GetCaps(3)"); SetHook((void *)(**(DWORD **)lpd3ddev + 20), extAddViewport3, (void **)&pAddViewport3, "AddViewport(3)"); SetHook((void *)(**(DWORD **)lpd3ddev + 36), extBeginScene3, (void **)&pBeginScene3, "BeginScene(3)"); @@ -463,7 +465,7 @@ void HookDirect3DDevice(void **lpd3ddev, int d3dversion) } break; case 7: - SetHook((void *)(**(DWORD **)lpd3ddev + 0), extQueryInterfaceD3, (void **)&pQueryInterfaceD3, "QueryInterface(D3D)"); + //SetHook((void *)(**(DWORD **)lpd3ddev + 0), extQueryInterfaceD3D, (void **)&pQueryInterfaceD3D, "QueryInterface(D3D)"); //SetHook((void *)(**(DWORD **)lpd3ddev + 20), extBeginScene7, (void **)&pBeginScene7, "BeginScene(7)"); //SetHook((void *)(**(DWORD **)lpd3ddev + 24), extEndScene7, (void **)&pEndScene7, "EndScene(7)"); //SetHook((void *)(**(DWORD **)lpd3ddev + 52), extSetViewport7, (void **)&pSetViewport7, "SetViewport(7)"); @@ -642,6 +644,14 @@ HRESULT WINAPI extQueryInterfaceD3(void *lpd3d, REFIID riid, LPVOID *ppvObj) return res; } +HRESULT WINAPI extQueryInterfaceD3D(void *lpd3ddev, REFIID riid, LPVOID *ppvObj) +{ + HRESULT res; + OutTraceD3D("QueryInterface(D3D): d3ddev=%x REFIID=%x obj=%x\n", lpd3ddev, riid.Data1, ppvObj); + res=(*pQueryInterfaceD3)(lpd3ddev, riid, ppvObj); + return res; +} + HRESULT WINAPI extInitialize(void *lpd3d) { HRESULT res; diff --git a/host/CoolUtils.cpp b/host/CoolUtils.cpp new file mode 100644 index 0000000..d0a330a --- /dev/null +++ b/host/CoolUtils.cpp @@ -0,0 +1,132 @@ +#include "stdafx.h" +#include "CoolUtils.h" + +/**************************************************************************** + * Function Name : gShowHideTaskBar() * + * Parameters : BOOL bHide (flag to toggle Show/Hide of Taskbar) * + * Return type : void * + * Purpose : Function is used to Show/Hide the TaskBar * + * Author : Ashutosh R. Bhatikar (ARB) * + * Date written : 20th December 2000 * + * Modification History : * + * Date of modification Reason * + * 25th December 2000 Added methods to Show/Hide menu * + ****************************************************************************/ + +void gShowHideTaskBar(BOOL bHide /*=FALSE*/) +{ + CRect rectWorkArea = CRect(0,0,0,0); + CRect rectTaskBar = CRect(0,0,0,0); + static HMENU hMenu = NULL; + + CWnd *pWnd = CWnd::FindWindow("Shell_TrayWnd", ""); + //CWnd *pDesktopWnd = CWnd::GetDesktopWindow(); + CWnd *pStart; + + if( bHide ) + { + // Code to Hide the System Task Bar + SystemParametersInfo(SPI_GETWORKAREA, + 0, + (LPVOID)&rectWorkArea, + 0); + + if( pWnd ) + { + pWnd->GetWindowRect(rectTaskBar); + rectWorkArea.bottom += rectTaskBar.Height(); + SystemParametersInfo(SPI_SETWORKAREA, + 0, + (LPVOID)&rectWorkArea, + 0); + + pWnd->ShowWindow(SW_HIDE); + + //This will retrieve the Handle of Start Button using the above + // handle and class name of start Button. + pStart = pWnd->FindWindow("Button", NULL); + pStart->ShowWindow(SW_HIDE); + } + } + else + { + // Code to Show the System Task Bar + SystemParametersInfo(SPI_GETWORKAREA, + 0, + (LPVOID)&rectWorkArea, + 0); + if( pWnd ) + { + pWnd->GetWindowRect(rectTaskBar); + rectWorkArea.bottom -= rectTaskBar.Height(); + SystemParametersInfo(SPI_SETWORKAREA, + 0, + (LPVOID)&rectWorkArea, + 0); + + pWnd->ShowWindow(SW_SHOW); + + //This will retrieve the Handle of Start Button using the above + // handle and class name of start Button. + pStart = pWnd->FindWindow("Button", NULL); + pStart->ShowWindow(SW_SHOW); + } + } +} + +/**************************************************************************** + * Function Name : gHideMenu() * + * Parameters : CWnd* pWnd (Window associated with the menu) * + * Return type : HMENU * + * Purpose : Function hides the menu associated with pWnd * + * Author : Ashutosh R. Bhatikar (ARB) * + * Date written : 25nd December 2000 * + * Modification History : * + * Date of modification Reason * + ****************************************************************************/ + +HMENU gHideMenu(/*in*/CWnd* pWnd) +{ + HMENU hMenu = ::GetMenu(pWnd->GetSafeHwnd()); + if (hMenu != NULL) + { + // Invalidate before SetMenu since we are going to replace + // the frame's client area anyway + pWnd->Invalidate(); + pWnd->SetMenu(NULL); + if( pWnd->IsKindOf(RUNTIME_CLASS(CFrameWnd)) ) + { + CFrameWnd* pFrameWnd = (CFrameWnd*)pWnd; + // avoid any idle menu processing + pFrameWnd->m_nIdleFlags &= ~CFrameWnd::idleMenu; + } + return hMenu; + } + return NULL; +} + +/**************************************************************************** + * Function Name : gShowMenuBack() * + * Parameters : HMENU hMenu (Handle of the menu which was hidden) * + * CWnd* pWnd (Window associated with the menu) * + * Return type : BOOL * + * Purpose : Function shows back the menu associated with pWnd * + * Author : Ashutosh R. Bhatikar (ARB) * + * Date written : 25nd December 2000 * + * Modification History : * + * Date of modification Reason * + ****************************************************************************/ + +BOOL gShowMenuBack(/*in*/HMENU hMenu, /*in*/CWnd* pWnd) +{ + // put the menu back in place if it was removed before + if (hMenu != NULL) + { + // Invalidate before SetMenu since we are going to replace + // the frame's client area anyway + pWnd->Invalidate(); + ::SetMenu(pWnd->GetSafeHwnd(), hMenu); + return TRUE; + } + return FALSE; +} diff --git a/host/CoolUtils.h b/host/CoolUtils.h new file mode 100644 index 0000000..9a4644f --- /dev/null +++ b/host/CoolUtils.h @@ -0,0 +1,11 @@ +#ifndef __COOLUTILS_H +#define __COOLUTILS_H +#include "stdafx.h" + +void gShowHideTaskBar(/*in*/BOOL bHide = FALSE); + +HMENU gHideMenu(/*in*/CWnd* pWnd); + +BOOL gShowMenuBack(/*in*/HMENU hMenu, /*in*/CWnd* pWnd); + +#endif \ No newline at end of file diff --git a/host/TabWindow.cpp b/host/TabWindow.cpp index 233f0ea..94ef8fa 100644 --- a/host/TabWindow.cpp +++ b/host/TabWindow.cpp @@ -44,6 +44,7 @@ void CTabWindow::DoDataExchange(CDataExchange* pDX) DDX_Check(pDX, IDC_FIXD3DFRAME, cTarget->m_FixD3DFrame); DDX_Check(pDX, IDC_NOWINDOWMOVE, cTarget->m_NoWindowMove); DDX_Check(pDX, IDC_HIDEDESKTOP, cTarget->m_HideDesktop); + DDX_Check(pDX, IDC_HIDETASKBAR, cTarget->m_HideTaskbar); DDX_Check(pDX, IDC_UNLOCKZORDER, cTarget->m_UnlockZOrder); DDX_Check(pDX, IDC_NODESTROYWINDOW, cTarget->m_NoDestroyWindow); diff --git a/host/TargetDlg.cpp b/host/TargetDlg.cpp index a92a1ba..631ddf4 100644 --- a/host/TargetDlg.cpp +++ b/host/TargetDlg.cpp @@ -59,6 +59,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/) m_ReturnNullRef = FALSE; m_NoD3DReset = FALSE; m_HideDesktop = FALSE; + m_HideTaskbar = FALSE; m_UnlockZOrder = FALSE; m_NoDestroyWindow = FALSE; m_LockSysColors = FALSE; diff --git a/host/TargetDlg.h b/host/TargetDlg.h index 5b6d793..f8d8aaa 100644 --- a/host/TargetDlg.h +++ b/host/TargetDlg.h @@ -186,6 +186,7 @@ public: BOOL m_ReturnNullRef; BOOL m_NoD3DReset; BOOL m_HideDesktop; + BOOL m_HideTaskbar; BOOL m_UnlockZOrder; BOOL m_NoDestroyWindow; BOOL m_LockSysColors; diff --git a/host/dxwndhost.rc b/host/dxwndhost.rc index 9cef16ad0a656d2d644606c8f8af44112320dbff..80e4ae9eda1afd8b013da6a8a39566c421d5cb25 100644 GIT binary patch delta 204 zcmZ28m91+Q+lE`boFxp248;uD3`x@!lNg1kU(jLXn4H65#p=P3$&fO6Bah)^0S%tX zaa9t@rgE|VE~joE`4G8pn1$|nm->0_u02CDO)+$bYHd7Z4(WCsqu z&8K*GU7394nb_nzdv!J+d&I-SYs6r{V8NinV8~#^U_4nc*nG0yA~t>nh7g#WfOOI1 khhIgxLx6S%Gk7xq-7tCLh)C)KOGyp6BF#s|EGm}w&HM3IW4g`}BB6I6 C`4D9Q diff --git a/host/dxwndhost.vs2008.suo b/host/dxwndhost.vs2008.suo index 8b0b82153456c98d9104f27e950df1c2c12acbdb..f7667b21744692cbc2c7c44ba1a9d6817604f996 100644 GIT binary patch delta 3575 zcmY+G4Nz3q702JXcUe9~1SBAvby)#dC1ypW;0K`uKcYYpXeYI;u8!KoaV%0hMVpZg zDm582$Wsor>O350W0MIClX^D+OYkrA`n zSv2Z|Tb)Og>1|32m&EP?^MYfJ=|4nqaVwlqY#2t&SXuw?9cE+v3Vt7c82_P~Xc#~> zr;_}nlJK>}25>?&m53TG5#E-x8&tGmel=+)IKtbLKh@}c6MW|WG_R(pa5(MH0NcXb z)0czOsG>TOM$1KY(#yv1ml?gA#v0pwSC4gcXs!NVO&?FeR%mbC^G9?9C++G@Y@BQ&{T=Wsv}oXU0`hM_3T&*s9dFa#KE1CQ-F4v~pybwL0h#;GFn#(A&3>J%&i zGnhkfPeTOI3PYf$hlbNp#fAUCh0o8VVVt$0+$?>GCiOj<)X-V#LGm!T@!T0GLw~JK zvXd@C8{pto<;J8&m4}`y5M$R|hHk)9S0Ep+UxL|qCx?db8HOY~w-4gvFWWvN|y7XlEv2Qg@UN@#Oex@lDu*cG2c9fTf% z1FbJ;T!9tZZ~KR#9`O2e;Klv|NW-=%D$TBX45#ApK_7L@|2d84_ScY(Z7+ilt1m*j zT^gqX(7uA2O;C||wBl93EUTG`rDq@!yDveu{o{01u16zWDiVzkI;s5qR+x#^U(jOS z&Q$66PPX!ymPNH?Q*EJKm4syjP=o_H%7=$vR4%jh2z4hzdF{GFRRKLkDn{YS@2KZ- ze9abbwa0(&W&AgQ*GARFpt)wZK+Db_h-@GTt29JGSIrE0zJdZqN8UPq`sS~ z6EyT=mey0FuF+9Id+JQcp%q#q)ZG2oC~cCQx=pulq5j9|ND4MDqqUr!r#yHgR%fI2 zBVAw@xb283?b=9s9T-i+ z(QewF8Xct7sM6F{owgF75J$K5a(ww0x)|$c(z08%RAke8Ft)Pa4!L5TuG9G7BBhrv zhY}@t0X*^f#{ZpJa~xCW2Mf)BJGCj9jygUcCy-J|(@1F~W^+l?No;u}W-iiGB)0F8 zn7K)1B(_=-GcT!*#P&Ri8QTv@KGLsA#F~r@a`uwg+DIHYkJL_LJ4#}QvWPVZYZmq-v0cJiCkQMgxKCsMM#|yD8IWLac|o^Fqqml_=-dWfhJk&2 z#MbLqp{GG#o&b9Ei)cS=(g~EKTPYVj*_0K5Of|*!G*kNY?AE1#fBg(RP295%Y4Nwx zAR*(3u%p6w^v8sKJTC60u!u0um0RN9muCsFhZ6UdFha(Ew84{L7{damlK-^?PNq*V zuSLgB?LkkAJ_*ZkPC%!af!uWaVT(?HCXSp-VLWRE63$hmkS(u03?-GXN zSf{YJgn22hTUg&XcGW@o$u=mE{eMc}kTCApC&JRB#>T^cXON#s&soAs$G zamt0&3FEFZKJ@SN+9pd7li#x7_VTxuwM$xCe|pdX&eg*+dYo$5%!9( zCwcs@3jE!;z&C__AdHWNUSaoz@kstHESau1JP@Ah6!O_T!Z<&&gv}9_LoAlenka81}PVT*_j3d@cjn*}bLLq1!%F!mPC2`rw@$L+& z!MY5y?IrDc6_{mj`)uDqovEBqLA^>DJAk)!=)NfPd{;hy>|OSLADp6VYb9McMyuxw zpMCI{&I5FeC_jI?lQ7uA$DO68IgO=MQ|158JltmKItLHMtj_g0-=eg+Y2c0)oeRa7 uRjz8C#f1LlG*@nY+6-*X#PTk^5G|8W{~G1AohNj%!gcY=XVZls0RIJ``{kto delta 3197 zcmcImeN0=|6@Ta6XY*MC1{^{h$8{;O2vB2;3zQJ^5k?Y1sONND)kO%_d2+D$asc{U}{ znn>xiyr6#z31J)Y+7J0ZTz5W?6|P?^iO4^Q}ux%T~QPxUTol-#dM-7 zzB2gLcZ`Z6T8!oDR%%50j3*f`^np22o%AXsK_(5jMVDyFcL?VR8j`%zs8o$ zRUA&)X#`y>F(!*#Pr1O>7!?3TIYXKs5Hced(>g(%%iIzPq#p)Wmni<7@d^w_j+m}+ zEUsh@F<`dy{Yrf#V*VpQG;$xcYpi@H+GfBMIW>0b z``PD7wU~wqdY>Q+6Gre!2IpWGW^>pCm*f@>KeOV*X7GmXz@SWm3vNL$A7;zl#H)

!U=+xaFYUv>Lysm(NeHrbpUdu#|<+OJjK1z+X&MTEQCE#EDK-G*=zuy6nvdOrm_YKh#8-U%?`^j@ANeI6Lgz{N{omgYXV48bj6 zmDU}w2$KU~VbanJOC@-=RPP@FBMG`;DG6OJut-Y?mOyHG5CYNBt72Lc<-y}% zleR&KCg5TK+;Z3fvk({l5~2p2?}HpHE@U=2QUC`4=k{_H)d_eet}_bJHRw-a<>D`A z?Q&`Y8bD0%OT@%Ucv=J=rK#V8C>fq4!x)+bHTV(DXPJWfc<=A27rPgjNp?=b00?J? z6|Lu?HvB#$OYOW)x4`N`*9;V6?EqJq3Ak>@f3z7=O-=_5iC6zNFiF zkwp!n^<}rX>a@y<0Ba_jH*`8ZtSPS1&GaSGLu`cqF%z0*Su^@v&@S71+0Ztr&FVbo zUZsdH=kR>2USRg{1(uGj-8^?SaB_Ho9pobI-DFH&W=~;#0w?2(EV_;|$U+q6T|kZ+ zxd-jrA?tTpJe9*me3Z z<#RiRXIi7?d2O(hQ+eyFHZ%` z@UgWIBvhsDGS7X6Yb}L}eJfnnd-}6`h46P;uK&+fm=RCk>eF&}s4{rpoEZLQoQ2ZuQQ#;5auegmWY zDN*}dhja|{^-P>oOXTxGK5G#3&zjME3@!`r52(=xZ8+rN_SlJ8FR3Qgf24gQ&NXl+ zzOt9+=^X`n*_Okncp;#xgFEnTIu`|huJ6qdf5ZsiBWHH4Zcuza#Qo5?`fd0P9q|^# zlZPG?+93;m^ed_*+96vEPF0NyOd+dosTC(aXE8Fls|P0a*}vBv7n+rh2>rYz+f9*J n2_BWZ_*ES%H2BYD8r#|r`=mC?bC}q3X!EM2Z!F&5d&7SKG + + @@ -474,6 +478,10 @@ RelativePath=".\cdib.h" > + + diff --git a/host/dxwndhostView.cpp b/host/dxwndhostView.cpp index 5d019af..c3dab67 100644 --- a/host/dxwndhostView.cpp +++ b/host/dxwndhostView.cpp @@ -4,6 +4,7 @@ #include "stdafx.h" #include "shlwapi.h" #include "TlHelp32.h" +#include "CoolUtils.h" #include "dxwndhost.h" @@ -103,7 +104,9 @@ BEGIN_MESSAGE_MAP(CDxwndhostView, CListView) ON_COMMAND(ID_WINDOW_MINIMIZE, OnWindowMinimize) ON_COMMAND(ID_WINDOW_RESTORE, OnWindowRestore) ON_COMMAND(ID_WINDOW_CLOSE, OnWindowClose) - ON_COMMAND(ID_ADD, OnAdd) + ON_COMMAND(ID_WINDOW_MINIMIZE, OnWindowMinimize) + ON_COMMAND(ID_TASKBAR_HIDE, OnTaskbarHide) + ON_COMMAND(ID_TASKBAR_SHOW, OnTaskbarShow) ON_COMMAND(ID_MODIFY, OnModify) ON_COMMAND(ID_PEXPORT, OnExport) ON_COMMAND(ID_PKILL, OnProcessKill) @@ -288,6 +291,7 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg) if(dlg->m_ReturnNullRef) t->flags4 |= RETURNNULLREF; if(dlg->m_NoD3DReset) t->flags4 |= NOD3DRESET; if(dlg->m_HideDesktop) t->flags4 |= HIDEDESKTOP; + if(dlg->m_HideTaskbar) t->flags6 |= HIDETASKBAR; if(dlg->m_UnlockZOrder) t->flags5 |= UNLOCKZORDER; if(dlg->m_NoDestroyWindow) t->flags6 |= NODESTROYWINDOW; if(dlg->m_LockSysColors) t->flags3 |= LOCKSYSCOLORS; @@ -495,6 +499,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg) dlg->m_ReturnNullRef = t->flags4 & RETURNNULLREF ? 1 : 0; dlg->m_NoD3DReset = t->flags4 & NOD3DRESET ? 1 : 0; dlg->m_HideDesktop = t->flags4 & HIDEDESKTOP ? 1 : 0; + dlg->m_HideTaskbar = t->flags6 & HIDETASKBAR ? 1 : 0; dlg->m_UnlockZOrder = t->flags5 & UNLOCKZORDER ? 1 : 0; dlg->m_NoDestroyWindow = t->flags6 & NODESTROYWINDOW ? 1 : 0; dlg->m_LockSysColors = t->flags3 & LOCKSYSCOLORS ? 1 : 0; @@ -1401,6 +1406,16 @@ void CDxwndhostView::OnWindowClose() ::PostMessage(find_main_window(DxWndStatus.dwPid), WM_SYSCOMMAND, SC_CLOSE, 0); } +void CDxwndhostView::OnTaskbarHide() +{ + gShowHideTaskBar(TRUE); +} + +void CDxwndhostView::OnTaskbarShow() +{ + gShowHideTaskBar(FALSE); +} + void CDxwndhostView::OnKill() { CTargetDlg dlg; diff --git a/host/dxwndhostView.h b/host/dxwndhostView.h index a6b306d..83247f7 100644 --- a/host/dxwndhostView.h +++ b/host/dxwndhostView.h @@ -73,6 +73,8 @@ protected: afx_msg void OnWindowRestore(); afx_msg void OnWindowMinimize(); afx_msg void OnWindowClose(); + afx_msg void OnTaskbarHide(); + afx_msg void OnTaskbarShow(); afx_msg void OnSort(); afx_msg void OnViewLog(); afx_msg void OnDeleteLog(); diff --git a/host/resource b/host/resource index 6e962ac0c05941883ff479e509f9df8a66ae0a80..abcc3ae0aa8240c6369485a69d2adc5e6005d163 100644 GIT binary patch delta 145 zcmbO=nQ6i_rVU3@CV${#nan4}!5zZj$Pmon&EUk~I9V`MeR4nw%j7GLQk##Y%n_V? zAcbwRUM3fsBGt(ka@i*D>5!P*P{79x)W{IT5YOPj;5oU_PI0mTBO6#g$w6lFxeP8| Xn0zo$h5uy1Y>4hhvJ#sU%B+L|s!%Ji delta 23 fcmbO*jcL|orVU3@HY=pg5uE&?LTdAeas^=kfB*`2