From 3fc3334d07dad21b8908f3a3e601539102b1df58 Mon Sep 17 00:00:00 2001 From: gho tik Date: Mon, 2 Dec 2013 11:17:07 -0500 Subject: [PATCH] v2_02_12_src Former-commit-id: 32d62dd2b268ffa71f32be2aca3d12f26bde49db --- Doc/dxwnd_manual.odt | Bin 0 -> 141156 bytes Include/DShow.h | 87 +++++++ Include/dxwnd.h | 4 + build/dxwnd.dll | 4 +- build/dxwnd.exe | 4 +- build/dxwnd.sample.ini | 50 ++-- build/readme-relnotes.txt | 6 + dll/Thumbs.db | Bin 0 -> 14848 bytes dll/dderr.c | 138 ++++++++++ dll/dxhook.cpp | 92 ++++++- dll/dxhook.h | 13 +- dll/dxwbanner.bmp | Bin 0 -> 19926 bytes dll/dxwcore.cpp | 41 +++ dll/dxwcore.hpp | 1 + dll/dxwnd.aps | Bin 0 -> 37684 bytes dll/dxwnd.cpp | 2 +- dll/dxwnd.rc | 70 +++++ dll/dxwnd.vs2005.vcproj | 398 ----------------------------- dll/dxwnd.vs2008.suo | Bin 105984 -> 116224 bytes dll/dxwnd.vs2008.vcproj | 16 ++ dll/hddraw.cpp | 4 +- dll/imelib.cpp | 81 ++++++ dll/resource.h | 17 ++ dll/syslibs.cpp | 37 ++- dll/syslibs.h | 27 ++ host/Resource.h | 21 +- host/TabCompat.cpp | 68 +++++ host/TabCompat.h | 50 ++++ host/TabDirectX.cpp | 63 +++++ host/TabDirectX.h | 47 ++++ host/TabGDI.cpp | 41 +++ host/TabGDI.h | 47 ++++ host/TabLogs.cpp | 47 ++++ host/TabLogs.h | 47 ++++ host/TabMouse.cpp | 49 ++++ host/TabMouse.h | 49 ++++ host/TabOpenGL.cpp | 48 ++++ host/TabOpenGL.h | 48 ++++ host/TabProgram.cpp | 63 +++++ host/TabProgram.h | 45 ++++ host/TabTiming.cpp | 69 +++++ host/TabTiming.h | 48 ++++ host/TabWindow.cpp | 64 +++++ host/TabWindow.h | 48 ++++ host/TargetDlg.cpp | 410 ++--------------------------- host/TargetDlg.h | 48 +--- host/dxTabCtrl.cpp | 131 ++++++++++ host/dxTabCtrl.h | 56 ++++ host/dxwndhost.aps | Bin 142488 -> 146600 bytes host/dxwndhost.rc | 397 ++++++++++++++++++++--------- host/dxwndhost.vs2005.sln | 20 -- host/dxwndhost.vs2005.suo | Bin 19968 -> 0 bytes host/dxwndhost.vs2005.vcproj | 482 ----------------------------------- host/dxwndhost.vs2008.suo | Bin 76288 -> 166400 bytes host/dxwndhost.vs2008.vcproj | 80 ++++++ host/dxwndhostView.cpp | 12 + makebuild.bat | 17 ++ 57 files changed, 2206 insertions(+), 1501 deletions(-) create mode 100644 Doc/dxwnd_manual.odt create mode 100644 Include/DShow.h create mode 100644 dll/Thumbs.db create mode 100644 dll/dderr.c create mode 100644 dll/dxwbanner.bmp create mode 100644 dll/dxwnd.aps create mode 100644 dll/dxwnd.rc delete mode 100644 dll/dxwnd.vs2005.vcproj create mode 100644 dll/imelib.cpp create mode 100644 dll/resource.h create mode 100644 host/TabCompat.cpp create mode 100644 host/TabCompat.h create mode 100644 host/TabDirectX.cpp create mode 100644 host/TabDirectX.h create mode 100644 host/TabGDI.cpp create mode 100644 host/TabGDI.h create mode 100644 host/TabLogs.cpp create mode 100644 host/TabLogs.h create mode 100644 host/TabMouse.cpp create mode 100644 host/TabMouse.h create mode 100644 host/TabOpenGL.cpp create mode 100644 host/TabOpenGL.h create mode 100644 host/TabProgram.cpp create mode 100644 host/TabProgram.h create mode 100644 host/TabTiming.cpp create mode 100644 host/TabTiming.h create mode 100644 host/TabWindow.cpp create mode 100644 host/TabWindow.h create mode 100644 host/dxTabCtrl.cpp create mode 100644 host/dxTabCtrl.h delete mode 100644 host/dxwndhost.vs2005.sln delete mode 100644 host/dxwndhost.vs2005.suo delete mode 100644 host/dxwndhost.vs2005.vcproj create mode 100644 makebuild.bat diff --git a/Doc/dxwnd_manual.odt b/Doc/dxwnd_manual.odt new file mode 100644 index 0000000000000000000000000000000000000000..680c4af9a058f2000bb4928bf9b4934427a58415 GIT binary patch literal 141156 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 z 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 n-}z<(V@PPpH=ay1FgC;$9vki$`}WK{vG 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%0A7vAq_C{2BvDn%7uL>jT(OB4-6fGR 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

pP;VC-(;FdaICacNTbnxYyJ;McNbqsY&${G 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

+oZiIH#gNv`($t-ph~VFP{BH_pBI5f; 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 literal 0 HcmV?d00001 diff --git a/Include/DShow.h b/Include/DShow.h new file mode 100644 index 0000000..5ac6f08 --- /dev/null +++ b/Include/DShow.h @@ -0,0 +1,87 @@ +//------------------------------------------------------------------------------ +// File: DShow.h +// +// Desc: DirectShow top-level include file +// +// Copyright (c) 2000-2001, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + +#ifndef __DSHOW_INCLUDED__ +#define __DSHOW_INCLUDED__ + +/////////////////////////////////////////////////////////////////////////// +// Set up constants & pragmas for the compiler +/////////////////////////////////////////////////////////////////////////// +#ifdef _MSC_VER +// disable some level-4 warnings, use #pragma warning(default:###) to re-enable +#pragma warning(disable:4100) // warning C4100: unreferenced formal parameter +#pragma warning(disable:4201) // warning C4201: nonstandard extension used : nameless struct/union +#pragma warning(disable:4511) // warning C4511: copy constructor could not be generated +#pragma warning(disable:4512) // warning C4512: assignment operator could not be generated +#pragma warning(disable:4514) // warning C4514: "unreferenced inline function has been removed" + +#if _MSC_VER>=1100 +#define AM_NOVTABLE __declspec(novtable) +#else +#define AM_NOVTABLE +#endif +#endif // MSC_VER + +/////////////////////////////////////////////////////////////////////////// +// Include standard Windows files +/////////////////////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include + +#ifndef NO_DSHOW_STRSAFE +#define NO_SHLWAPI_STRFCNS +#include +#endif + +#ifndef NUMELMS + #define NUMELMS(aa) (sizeof(aa)/sizeof((aa)[0])) +#endif + +/////////////////////////////////////////////////////////////////////////// +// Include DirectShow include files +/////////////////////////////////////////////////////////////////////////// +#include // Generated IDL header file for streams interfaces +#include // ActiveMovie video interfaces and definitions + +#ifdef DSHOW_USE_AMAUDIO +#include // ActiveMovie audio interfaces and definitions +#endif + +#include // generated from control.odl +#include // event code definitions +#include // declaration of type GUIDs and well-known clsids +#include // HRESULT status and error definitions +#include // External device control interface defines +#include // audio filter device error event codes +#include // DVD error event codes + +/////////////////////////////////////////////////////////////////////////// +// Define OLE Automation constants +/////////////////////////////////////////////////////////////////////////// +#ifndef OATRUE +#define OATRUE (-1) +#endif // OATRUE +#ifndef OAFALSE +#define OAFALSE (0) +#endif // OAFALSE + +/////////////////////////////////////////////////////////////////////////// +// Define Win64 interfaces if not already defined +/////////////////////////////////////////////////////////////////////////// + +// InterlockedExchangePointer +#ifndef InterlockedExchangePointer +#define InterlockedExchangePointer(Target, Value) \ + (PVOID)InterlockedExchange((PLONG)(Target), (LONG)(Value)) +#endif + + +#endif // __DSHOW_INCLUDED__ diff --git a/Include/dxwnd.h b/Include/dxwnd.h index 7931a6e..0ab3f87 100644 --- a/Include/dxwnd.h +++ b/Include/dxwnd.h @@ -69,6 +69,10 @@ #define FAKEVERSION 0x00400000 // pretends the platvorm is a given window version / subversion #define FULLRECTBLT 0x00800000 // blit to primary surface using NULL source & dest rect #define NOPALETTEUPDATE 0x01000000 // Do not refresh primary surface on palette updates +#define SUPPRESSIME 0x02000000 // suppress IME +#define NOBANNER 0x04000000 // suppress fancy logo & banneer effects +#define WINDOWIZE 0x08000000 // Run in a Window (default TRUE) +#define LIMITRESOURCES 0x10000000 // Limit resources to fit an old program's expectations // logging Tflags DWORD: #define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general diff --git a/build/dxwnd.dll b/build/dxwnd.dll index 5768299..fb64dee 100644 --- a/build/dxwnd.dll +++ b/build/dxwnd.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dbf061c43c802f58ed4d3d3d76595047fe9d3ce6b6fce822bdfb492e5d945845 -size 277504 +oid sha256:e57051bb941d5540bc3ff00785953fc614543989bd451522af2759f240fb2298 +size 297984 diff --git a/build/dxwnd.exe b/build/dxwnd.exe index 214197f..908d25e 100644 --- a/build/dxwnd.exe +++ b/build/dxwnd.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:752c9f62bae2b46682c477c8a72062dda4c38f33732bcd62be8b4b9324bebdb8 -size 488960 +oid sha256:deb192e6aa9d77b5a60a663c39fe0d39a6ca3c100179a9e0c71e6f11d85d18b4 +size 498688 diff --git a/build/dxwnd.sample.ini b/build/dxwnd.sample.ini index fdc3617..de2462e 100644 --- a/build/dxwnd.sample.ini +++ b/build/dxwnd.sample.ini @@ -89,7 +89,7 @@ path5=d:\Games\ALIFE\ALIFE.EXE module5= ver5=1 flag5=134217762 -flagg5=160 +flagg5=32 tflag5=2 initx5=0 inity5=0 @@ -105,9 +105,9 @@ title6=Age of Empires path6=D:\Games\Age of Empires\EMPIRES.EXE module6= ver6=0 -flag6=402653219 -flagg6=4112 -tflag6=258 +flag6=402653347 +flagg6=2166800 +tflag6=259 initx6=0 inity6=0 minx6=0 @@ -154,11 +154,11 @@ sizx8=800 sizy8=600 title9=Age of Wonders path9=D:\Games\Age of Wonders\AoW.exe -module9= +module9=VideoP.dpl vcl30.dpl ver9=0 flag9=545390594 flagg9=17 -tflag9=259 +tflag9=130 initx9=0 inity9=0 minx9=0 @@ -989,7 +989,7 @@ title58=Dream Aquarium path58=D:\Program Files\Dream Aquarium\Dream_Aquarium.scr module58= ver58=9 -flag58=671088641 +flag58=679477249 flagg58=303104 tflag58=256 initx58=0 @@ -1059,7 +1059,7 @@ module62= ver62=0 flag62=134545443 flagg62=18 -tflag62=259 +tflag62=2 initx62=0 inity62=0 minx62=0 @@ -2264,7 +2264,7 @@ title133=Resident Evil path133=D:\Games\Resident Evil\residentevil.patched.exe module133= ver133=1 -flag133=134226019 +flag133=134217827 flagg133=128 tflag133=2 initx133=0 @@ -2944,9 +2944,9 @@ title173=Tomb Raider 2 the Golden Mask path173=D:\Games\TR2 Golden Mask\T2GOLD.EXE module173= ver173=0 -flag173=704643106 -flagg173=17842176 -tflag173=259 +flag173=570687522 +flagg173=3227648 +tflag173=291 initx173=0 inity173=0 minx173=0 @@ -3065,7 +3065,7 @@ module180= ver180=0 flag180=671236130 flagg180=256 -tflag180=259 +tflag180=258 initx180=0 inity180=0 minx180=0 @@ -3080,9 +3080,9 @@ title181=Warcraft 2 Battlenet Edition path181=D:\Games\Warcraft 2\Warcraft II BNE.exe module181= ver181=0 -flag181=268452003 -flagg181=16 -tflag181=259 +flag181=24739 +flagg181=2183184 +tflag181=3 initx181=0 inity181=0 minx181=0 @@ -3201,7 +3201,7 @@ maxfps2=0 maxfps3=0 maxfps4=0 maxfps5=0 -maxfps6=10 +maxfps6=40 maxfps7=40 maxfps8=0 maxfps9=0 @@ -3982,12 +3982,12 @@ maxfps198=20 initts198=-9 title199=Urban Assault CD path199=D:\Games\Urban Assault CD\UA.EXE -module199= +module199=quartz opengllib199= ver199=0 -flag199=671236130 -flagg199=33024 -tflag199=259 +flag199=537280546 +flagg199=8388864 +tflag199=435 initx199=0 inity199=0 minx199=0 @@ -4044,9 +4044,9 @@ title202=Pandemonium 2 path202=D:\Games\Pandemonium 2\pandy.exe module202= opengllib202= -ver202=1 -flag202=134217730 -flagg202=1048577 +ver202=0 +flag202=671219714 +flagg202=1 tflag202=0 initx202=0 inity202=0 @@ -4126,7 +4126,7 @@ module206= opengllib206= ver206=0 flag206=2 -flagg206=16777248 +flagg206=32 tflag206=0 initx206=0 inity206=0 diff --git a/build/readme-relnotes.txt b/build/readme-relnotes.txt index 213aabb..1c303e9 100644 --- a/build/readme-relnotes.txt +++ b/build/readme-relnotes.txt @@ -54,3 +54,9 @@ Hooked extDirectDrawEnumerate/Ex ddraw calls to handle Hide multi-monitor option. Detected directshow activation through CoCreateInstance and hooked quartz.dll segment: now Urban Assault movies don't require "Full RECT Blit" option to be set. Updated DDSurface::Release hook + +v2.02.12 +GUI: Tabbed setup panel. More space for more future options. +DLL: (optional) splash screen +probably, some regression bugs.... + diff --git a/dll/Thumbs.db b/dll/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..dfd424f8ef2acaf049bee2c625e00fdd91203483 GIT binary patch literal 14848 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 MTA!x>Cs*K~0GgUU;Q#;t literal 0 HcmV?d00001 diff --git a/dll/dderr.c b/dll/dderr.c new file mode 100644 index 0000000..a0b8dfe --- /dev/null +++ b/dll/dderr.c @@ -0,0 +1,138 @@ +/* +* +* Function : DDError() +* +* Purpose : Traces an error (DirectDraw) +* +*/ + +void DDError(HRESULT hErr) +{ +char dderr[256]; +char string[1024]; + +switch (hErr) +{ +case DDERR_DDSCAPSCOMPLEXREQUIRED : sprintf(dderr, "DDERR_DDSCAPSCOMPLEXREQUIRED: New for DirectX 7.0. The surface requires the DDSCAPS_COMPLEX flag."); break; +case DDERR_DEVICEDOESNTOWNSURFACE : sprintf(dderr, "DDERR_DEVICEDOESNTOWNSURFACE: Surfaces created by one DirectDraw device cannot be used directly by another DirectDraw device."); break; +case DDERR_EXPIRED : sprintf(dderr, "DDERR_EXPIRED: The data has expired and is therefore no longer valid."); break; +case DDERR_INVALIDSTREAM : sprintf(dderr, "DDERR_INVALIDSTREAM: The specified stream contains invalid data."); break; +case DDERR_MOREDATA : sprintf(dderr, "DDERR_MOREDATA: There is more data available than the specified buffer size can hold."); break; +case DDERR_NEWMODE : sprintf(dderr, "DDERR_NEWMODE: New for DirectX 7.0. When IDirectDraw7::StartModeTest is called with the DDSMT_ISTESTREQUIRED flag, it may return this value to denote that some or all of the resolutions can and should be tested. IDirectDraw7::EvaluateMode returns this value to indicate that the test has switched to a new display mode."); break; +case DDERR_NODRIVERSUPPORT : sprintf(dderr, "DDERR_NODRIVERSUPPORT: New for DirectX 7.0. Testing cannot proceed because the display adapter driver does not enumerate refresh rates."); break; +case DDERR_NOFOCUSWINDOW : sprintf(dderr, "DDERR_NOFOCUSWINDOW: An attempt was made to create or set a device window without first setting the focus window."); break; +case DDERR_NOMONITORINFORMATION : sprintf(dderr, "DDERR_NOMONITORINFORMATION: New for DirectX 7.0. Testing cannot proceed because the monitor has no associated EDID data."); break; +case DDERR_NONONLOCALVIDMEM : sprintf(dderr, "DDERR_NONONLOCALVIDMEM: An attempt was made to allocate nonlocal video memory from a device that does not support nonlocal video memory."); break; +case DDERR_NOOPTIMIZEHW : sprintf(dderr, "DDERR_NOOPTIMIZEHW: The device does not support optimized surfaces."); break; +case DDERR_NOSTEREOHARDWARE : sprintf(dderr, "DDERR_NOSTEREOHARDWARE: There is no stereo hardware present or available."); break; +case DDERR_NOSURFACELEFT : sprintf(dderr, "DDERR_NOSURFACELEFT: There is no hardware present that supports stereo surfaces."); break; +case DDERR_NOTLOADED : sprintf(dderr, "DDERR_NOTLOADED: The surface is an optimized surface, but it has not yet been allocated any memory."); break; +case DDERR_OVERLAPPINGRECTS : sprintf(dderr, "DDERR_OVERLAPPINGRECTS: The source and destination rectangles are on the same surface and overlap each other."); break; +case DDERR_TESTFINISHED : sprintf(dderr, "DDERR_TESTFINISHED: New for DirectX 7.0. When returned by the IDirectDraw7::StartModeTest method, this value means that no test could be initiated because all the resolutions chosen for testing already have refresh rate information in the registry. When returned by IDirectDraw7::EvaluateMode, the value means that DirectDraw has completed a refresh rate test."); break; +case DDERR_VIDEONOTACTIVE : sprintf(dderr, "DDERR_VIDEONOTACTIVE: The video port is not active."); break; +case DDERR_ALREADYINITIALIZED : sprintf(dderr, "DDERR_ALREADYINITIALIZED: The object has already been initialized."); break; +case DDERR_CANNOTATTACHSURFACE : sprintf(dderr, "DDERR_CANNOTATTACHSURFACE: A surface cannot be attached to another requested surface."); break; +case DDERR_CANNOTDETACHSURFACE : sprintf(dderr, "DDERR_CANNOTDETACHSURFACE: A surface cannot be detached from another requested surface."); break; +case DDERR_CURRENTLYNOTAVAIL : sprintf(dderr, "DDERR_CURRENTLYNOTAVAIL: No support is currently available"); break; +case DDERR_EXCEPTION : sprintf(dderr, "DDERR_EXCEPTION: An exception was encountered while performing the requested operation."); break; +case DDERR_GENERIC : sprintf(dderr, "DDERR_GENERIC: There is an undefined error condition."); break; +case DDERR_HEIGHTALIGN : sprintf(dderr, "DDERR_HEIGHTALIGN: The height of the provided rectangle is not a multiple of the required alignment."); break; +case DDERR_INCOMPATIBLEPRIMARY : sprintf(dderr, "DDERR_INCOMPATIBLEPRIMARY: The primary surface creation request does not match the existing primary surface."); break; +case DDERR_INVALIDCAPS : sprintf(dderr, "DDERR_INVALIDCAPS: One or more of the capability bits passed to the callback function are incorrect."); break; +case DDERR_INVALIDCLIPLIST : sprintf(dderr, "DDERR_INVALIDCLIPLIST: DirectDraw does not support the provided clip list."); break; +case DDERR_INVALIDMODE : sprintf(dderr, "DDERR_INVALIDMODE: DirectDraw does not support the requested mode."); break; +case DDERR_INVALIDOBJECT : sprintf(dderr, "DDERR_INVALIDOBJECT: DirectDraw received a pointer that was an invalid DirectDraw object."); break; +case DDERR_INVALIDPARAMS : sprintf(dderr, "DDERR_INVALIDPARAMS: One or more of the parameters passed to the method are incorrect."); break; +case DDERR_INVALIDPIXELFORMAT : sprintf(dderr, "DDERR_INVALIDPIXELFORMAT: The pixel format was invalid as specified."); break; +case DDERR_INVALIDRECT : sprintf(dderr, "DDERR_INVALIDRECT: The provided rectangle was invalid."); break; +case DDERR_LOCKEDSURFACES : sprintf(dderr, "DDERR_LOCKEDSURFACES: One or more surfaces are locked, causing the failure of the requested operation."); break; +case DDERR_NO3D : sprintf(dderr, "DDERR_NO3D: No 3-D hardware or emulation is present."); break; +case DDERR_NOALPHAHW : sprintf(dderr, "DDERR_NOALPHAHW: No alpha-acceleration hardware is present or available, causing the failure of the requested operation."); break; +case DDERR_NOCLIPLIST : sprintf(dderr, "DDERR_NOCLIPLIST: No clip list is available."); break; +case DDERR_NOCOLORCONVHW : sprintf(dderr, "DDERR_NOCOLORCONVHW: No color-conversion hardware is present or available."); break; +case DDERR_NOCOOPERATIVELEVELSET : sprintf(dderr, "DDERR_NOCOOPERATIVELEVELSET: A create function was called without the IDirectDraw7::SetCooperativeLevel method."); break; +case DDERR_NOCOLORKEY : sprintf(dderr, "DDERR_NOCOLORKEY: The surface does not currently have a color key."); break; +case DDERR_NOCOLORKEYHW : sprintf(dderr, "DDERR_NOCOLORKEYHW: There is no hardware support for the destination color key."); break; +case DDERR_NODIRECTDRAWSUPPORT : sprintf(dderr, "DDERR_NODIRECTDRAWSUPPORT: DirectDraw support is not possible with the current display driver."); break; +case DDERR_NOEXCLUSIVEMODE : sprintf(dderr, "DDERR_NOEXCLUSIVEMODE: The operation requires the application to have exclusive mode, but the application does not have exclusive mode."); break; +case DDERR_NOFLIPHW : sprintf(dderr, "DDERR_NOFLIPHW: Flipping visible surfaces is not supported."); break; +case DDERR_NOGDI : sprintf(dderr, "DDERR_NOGDI: No GDI is present."); break; +case DDERR_NOMIRRORHW : sprintf(dderr, "DDERR_NOMIRRORHW: No mirroring hardware is present or available."); break; +case DDERR_NOTFOUND : sprintf(dderr, "DDERR_NOTFOUND: The requested item was not found."); break; +case DDERR_NOOVERLAYHW : sprintf(dderr, "DDERR_NOOVERLAYHW: No overlay hardware is present or available."); break; +case DDERR_NORASTEROPHW : sprintf(dderr, "DDERR_NORASTEROPHW: No appropriate raster-operation hardware is present or available."); break; +case DDERR_NOROTATIONHW : sprintf(dderr, "DDERR_NOROTATIONHW: No rotation hardware is present or available."); break; +case DDERR_NOSTRETCHHW : sprintf(dderr, "DDERR_NOSTRETCHHW: There is no hardware support for stretching."); break; +case DDERR_NOT4BITCOLOR : sprintf(dderr, "DDERR_NOT4BITCOLOR: The DirectDrawSurface object is not using a 4-bit color palette, and the requested operation requires a 4-bit color palette."); break; +case DDERR_NOT4BITCOLORINDEX : sprintf(dderr, "DDERR_NOT4BITCOLORINDEX: The DirectDrawSurface object is not using a 4-bit color index palette, and the requested operation requires a 4-bit color index palette."); break; +case DDERR_NOT8BITCOLOR : sprintf(dderr, "DDERR_NOT8BITCOLOR: The DirectDrawSurface object is not using an 8-bit color palette, and the requested operation requires an 8-bit color palette."); break; +case DDERR_NOTEXTUREHW : sprintf(dderr, "DDERR_NOTEXTUREHW: The operation cannot be carried out because no texture-mapping hardware is present or available."); break; +case DDERR_NOVSYNCHW : sprintf(dderr, "DDERR_NOVSYNCHW: There is no hardware support for vertical blank synchronized operations."); break; +case DDERR_NOZBUFFERHW : sprintf(dderr, "DDERR_NOZBUFFERHW: The operation to create a z-buffer in display memory or to perform a blit, using a z-buffer cannot be carried out because there is no hardware support for z-buffers."); break; +case DDERR_NOZOVERLAYHW : sprintf(dderr, "DDERR_NOZOVERLAYHW: The overlay surfaces cannot be z-layered, based on the z-order because the hardware does not support z-ordering of overlays."); break; +case DDERR_OUTOFCAPS : sprintf(dderr, "DDERR_OUTOFCAPS: The hardware needed for the requested operation has already been allocated."); break; +case DDERR_OUTOFMEMORY : sprintf(dderr, "DDERR_OUTOFMEMORY: DirectDraw does not have enough memory to perform the operation."); break; +case DDERR_OUTOFVIDEOMEMORY : sprintf(dderr, "DDERR_OUTOFVIDEOMEMORY: DirectDraw does not have enough display memory to perform the operation."); break; +case DDERR_OVERLAYCANTCLIP : sprintf(dderr, "DDERR_OVERLAYCANTCLIP: The hardware does not support clipped overlays."); break; +case DDERR_OVERLAYCOLORKEYONLYONEACTIVE : sprintf(dderr, "DDERR_OVERLAYCOLORKEYONLYONEACTIVE: An attempt was made to have more than one color key active on an overlay."); break; +case DDERR_PALETTEBUSY : sprintf(dderr, "DDERR_PALETTEBUSY: Access to this palette is refused because the palette is locked by another thread."); break; +case DDERR_COLORKEYNOTSET : sprintf(dderr, "DDERR_COLORKEYNOTSET: No source color key is specified for this operation."); break; +case DDERR_SURFACEALREADYATTACHED : sprintf(dderr, "DDERR_SURFACEALREADYATTACHED: An attempt was made to attach a surface to another surface to which it is already attached."); break; +case DDERR_SURFACEALREADYDEPENDENT : sprintf(dderr, "DDERR_SURFACEALREADYDEPENDENT: An attempt was made to make a surface a dependency of another surface on which it is already dependent."); break; +case DDERR_SURFACEBUSY : sprintf(dderr, "DDERR_SURFACEBUSY: Access to the surface is refused because the surface is locked by another thread."); break; +case DDERR_CANTLOCKSURFACE : sprintf(dderr, "DDERR_CANTLOCKSURFACE: Access to this surface is refused because an attempt was made to lock the primary surface without DCI support."); break; +case DDERR_SURFACEISOBSCURED : sprintf(dderr, "DDERR_SURFACEISOBSCURED: Access to the surface is refused because the surface is obscured."); break; +case DDERR_SURFACELOST : sprintf(dderr, "DDERR_SURFACELOST: Access to the surface is refused because the surface memory is gone. Call the IDirectDrawSurface7::Restore method on this surface to restore the memory associated with it."); break; +case DDERR_SURFACENOTATTACHED : sprintf(dderr, "DDERR_SURFACENOTATTACHED: The requested surface is not attached."); break; +case DDERR_TOOBIGHEIGHT : sprintf(dderr, "DDERR_TOOBIGHEIGHT: The height requested by DirectDraw is too large."); break; +case DDERR_TOOBIGSIZE : sprintf(dderr, "DDERR_TOOBIGSIZE: The size requested by DirectDraw is too large. However, the individual height and width are valid sizes."); break; +case DDERR_TOOBIGWIDTH : sprintf(dderr, "DDERR_TOOBIGWIDTH: The width requested by DirectDraw is too large."); break; +case DDERR_UNSUPPORTED : sprintf(dderr, "DDERR_UNSUPPORTED: The operation is not supported."); break; +case DDERR_UNSUPPORTEDFORMAT : sprintf(dderr, "DDERR_UNSUPPORTEDFORMAT: The pixel format requested is not supported by DirectDraw."); break; +case DDERR_UNSUPPORTEDMASK : sprintf(dderr, "DDERR_UNSUPPORTEDMASK: The bitmask in the pixel format requested is not supported by DirectDraw."); break; +case DDERR_VERTICALBLANKINPROGRESS : sprintf(dderr, "DDERR_VERTICALBLANKINPROGRESS: A vertical blank is in progress."); break; +case DDERR_WASSTILLDRAWING : sprintf(dderr, "DDERR_WASSTILLDRAWING: The previous blit operation that is transferring information to or from this surface is incomplete."); break; +case DDERR_XALIGN : sprintf(dderr, "DDERR_XALIGN: The provided rectangle was not horizontally aligned on a required boundary."); break; +case DDERR_INVALIDDIRECTDRAWGUID : sprintf(dderr, "DDERR_INVALIDDIRECTDRAWGUID: The globally unique identifier (GUID) passed to the DirectDrawCreate function is not a valid DirectDraw driver identifier."); break; +case DDERR_DIRECTDRAWALREADYCREATED : sprintf(dderr, "DDERR_DIRECTDRAWALREADYCREATED: A DirectDraw object representing this driver has already been created for this process."); break; +case DDERR_NODIRECTDRAWHW : sprintf(dderr, "DDERR_NODIRECTDRAWHW: Hardware-only DirectDraw object creation is not possible; the driver does not support any hardware."); break; +case DDERR_PRIMARYSURFACEALREADYEXISTS : sprintf(dderr, "DDERR_PRIMARYSURFACEALREADYEXISTS: This process has already created a primary surface."); break; +case DDERR_NOEMULATION : sprintf(dderr, "DDERR_NOEMULATION: Software emulation is not available."); break; +case DDERR_REGIONTOOSMALL : sprintf(dderr, "DDERR_REGIONTOOSMALL: The region passed to the IDirectDrawClipper::GetClipList method is too small."); break; +case DDERR_CLIPPERISUSINGHWND : sprintf(dderr, "DDERR_CLIPPERISUSINGHWND: An attempt was made to set a clip list for a DirectDrawClipper object that is already monitoring a window handle."); break; +case DDERR_NOCLIPPERATTACHED : sprintf(dderr, "DDERR_NOCLIPPERATTACHED: No DirectDrawClipper object is attached to the surface object."); break; +case DDERR_NOHWND : sprintf(dderr, "DDERR_NOHWND: Clipper notification requires a window handle, or no window handle has been previously set as the cooperative level window handle."); break; +case DDERR_HWNDSUBCLASSED : sprintf(dderr, "DDERR_HWNDSUBCLASSED: DirectDraw is prevented from restoring state because the DirectDraw cooperative-level window handle has been subclassed."); break; +case DDERR_HWNDALREADYSET : sprintf(dderr, "DDERR_HWNDALREADYSET: The DirectDraw cooperative-level window handle has already been set. It cannot be reset while the process has surfaces or palettes created."); break; +case DDERR_NOPALETTEATTACHED : sprintf(dderr, "DDERR_NOPALETTEATTACHED: No palette object is attached to this surface."); break; +case DDERR_NOPALETTEHW : sprintf(dderr, "DDERR_NOPALETTEHW: There is no hardware support for 16- or 256-color palettes."); break; +case DDERR_BLTFASTCANTCLIP : sprintf(dderr, "DDERR_BLTFASTCANTCLIP: A DirectDrawClipper object is attached to a source surface that has passed into a call to the IDirectDrawSurface7::BltFast method."); break; +case DDERR_NOBLTHW : sprintf(dderr, "DDERR_NOBLTHW: No blitter hardware is present."); break; +case DDERR_NODDROPSHW : sprintf(dderr, "DDERR_NODDROPSHW: No DirectDraw raster-operation (ROP) hardware is available."); break; +case DDERR_OVERLAYNOTVISIBLE : sprintf(dderr, "DDERR_OVERLAYNOTVISIBLE: The IDirectDrawSurface7::GetOverlayPosition method was called on a hidden overlay."); break; +case DDERR_NOOVERLAYDEST : sprintf(dderr, "DDERR_NOOVERLAYDEST: The IDirectDrawSurface7::GetOverlayPosition method is called on an overlay that the IDirectDrawSurface7::UpdateOverlay method has not been called on to establish as a destination."); break; +case DDERR_INVALIDPOSITION : sprintf(dderr, "DDERR_INVALIDPOSITION: The position of the overlay on the destination is no longer legal."); break; +case DDERR_NOTAOVERLAYSURFACE : sprintf(dderr, "DDERR_NOTAOVERLAYSURFACE: An overlay component is called for a nonoverlay surface."); break; +case DDERR_EXCLUSIVEMODEALREADYSET : sprintf(dderr, "DDERR_EXCLUSIVEMODEALREADYSET: An attempt was made to set the cooperative level when it was already set to exclusive."); break; +case DDERR_NOTFLIPPABLE : sprintf(dderr, "DDERR_NOTFLIPPABLE: An attempt was made to flip a surface that cannot be flipped."); break; +case DDERR_CANTDUPLICATE : sprintf(dderr, "DDERR_CANTDUPLICATE: Primary and 3-D surfaces, or surfaces that are implicitly created, cannot be duplicated."); break; +case DDERR_NOTLOCKED : sprintf(dderr, "DDERR_NOTLOCKED: An attempt was made to unlock a surface that was not locked."); break; +case DDERR_CANTCREATEDC : sprintf(dderr, "DDERR_CANTCREATEDC: Windows cannot create any more device contexts (DCs), or a DC has requested a palette-indexed surface when the surface had no palette and the display mode was not palette-indexed (in this case DirectDraw cannot select a proper palette into the DC)."); break; +case DDERR_NODC : sprintf(dderr, "DDERR_NODC: No device context (DC) has ever been created for this surface."); break; +case DDERR_WRONGMODE : sprintf(dderr, "DDERR_WRONGMODE: This surface cannot be restored because it was created in a different mode."); break; +case DDERR_IMPLICITLYCREATED : sprintf(dderr, "DDERR_IMPLICITLYCREATED: The surface cannot be restored because it is an implicitly created surface."); break; +case DDERR_NOTPALETTIZED : sprintf(dderr, "DDERR_NOTPALETTIZED: The surface being used is not a palette-based surface."); break; +case DDERR_UNSUPPORTEDMODE : sprintf(dderr, "DDERR_UNSUPPORTEDMODE: The display is currently in an unsupported mode."); break; +case DDERR_NOMIPMAPHW : sprintf(dderr, "DDERR_NOMIPMAPHW: No mipmap-capable texture mapping hardware is present or available."); break; +case DDERR_INVALIDSURFACETYPE : sprintf(dderr, "DDERR_INVALIDSURFACETYPE: The surface was of the wrong type."); break; +case DDERR_DCALREADYCREATED : sprintf(dderr, "DDERR_DCALREADYCREATED: A device context (DC) has already been returned for this surface. Only one DC can be retrieved for each surface."); break; +case DDERR_CANTPAGELOCK : sprintf(dderr, "DDERR_CANTPAGELOCK: An attempt to page-lock a surface failed. Page lock does not work on a display-memory surface or an emulated primary surface."); break; +case DDERR_CANTPAGEUNLOCK : sprintf(dderr, "DDERR_CANTPAGEUNLOCK: An attempt to page-unlock a surface failed. Page unlock does not work on a display-memory surface or an emulated primary surface."); break; +case DDERR_NOTPAGELOCKED : sprintf(dderr, "DDERR_NOTPAGELOCKED: An attempt was made to page-unlock a surface with no outstanding page locks."); break; +case DDERR_NOTINITIALIZED : sprintf(dderr, "DDERR_NOTINITIALIZED: An attempt was made to call an interface method of a DirectDraw object created by CoCreateInstance before the object was initialized."); break; +default : sprintf(dderr, "Unknown Error"); break; +} + +sprintf(string, "DirectDraw Error %s\n", dderr); +OutputDebugString(string); +} \ No newline at end of file diff --git a/dll/dxhook.cpp b/dll/dxhook.cpp index 69aec6b..d1e0360 100644 --- a/dll/dxhook.cpp +++ b/dll/dxhook.cpp @@ -13,6 +13,8 @@ #include "syslibs.h" #undef DXWDECLARATIONS #include "dxhelper.h" +#include "Ime.h" +#include "Winnls32.h" dxwCore dxw; @@ -40,7 +42,7 @@ static char *Flag2Names[32]={ "LIMITFPS", "SKIPFPS", "SHOWFPS", "HIDEMULTIMONITOR", "TIMESTRETCH", "HOOKOPENGL", "WALLPAPERMODE", "SHOWHWCURSOR", "HOOKGDI", "SHOWFPSOVERLAY", "FAKEVERSION", "FULLRECTBLT", - "NOPALETTEUPDATE", "", "", "", + "NOPALETTEUPDATE", "SUPPRESSIME", "NOBANNER", "WINDOWIZE", "", "", "", "", }; @@ -358,6 +360,8 @@ void AdjustWindowPos(HWND hwnd, DWORD width, DWORD height) if(!(*pSetWindowPos)(hwnd, 0, wp.x, wp.y, wp.cx, wp.cy, 0)){ OutTraceE("AdjustWindowPos: ERROR err=%d at %d\n", GetLastError(), __LINE__); } + + dxw.ShowBanner(hwnd); return; } @@ -562,6 +566,31 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp #endif switch(message){ + case WM_NCCREATE: + if(dxw.dwFlags2 & SUPPRESSIME){ + OutTraceD("WindowProc: SUPPRESS IME\n"); + typedef BOOL (WINAPI *ImmDisableIME_Type)(DWORD); + ImmDisableIME_Type pImmDisableIME; + HMODULE ImmLib; + ImmLib=(*pLoadLibraryA)("Imm32"); + pImmDisableIME=(ImmDisableIME_Type)(*pGetProcAddress)(ImmLib,"ImmDisableIME"); + (*pImmDisableIME)(-1); + } + break; + case WM_IME_SETCONTEXT: + case WM_IME_NOTIFY: + case WM_IME_CONTROL: + case WM_IME_COMPOSITIONFULL: + case WM_IME_SELECT: + case WM_IME_CHAR: + case WM_IME_REQUEST: + case WM_IME_KEYDOWN: + case WM_IME_KEYUP: + if(dxw.dwFlags2 & SUPPRESSIME){ + OutTraceD("WindowProc: SUPPRESS WinMsg=[0x%x]%s(%x,%x)\n", message, ExplainWinMessage(message), wparam, lparam); + return 0; + } + break; case WM_NCHITTEST: if((dxw.dwFlags2 & FIXNCHITTEST) && (dxw.dwFlags1 & MODIFYMOUSE)){ // mouse processing POINT cursor; @@ -1133,6 +1162,7 @@ void HookExceptionHandler(void) void HookModule(char *module, int dxversion) { HookSysLibs(module); + //if(dxw.dwFlags2 & SUPPRESSIME) HookImeLib(module); if(dxw.dwFlags2 & HOOKGDI) HookGDILib(module); if(dxw.dwFlags1 & HOOKDI) HookDirectInput(module, dxversion); HookDirectDraw(module, dxversion); @@ -1141,6 +1171,59 @@ void HookModule(char *module, int dxversion) if(dxw.dwFlags2 & HOOKOPENGL) HookOpenGLLibs(module, dxw.CustomOpenGLLib); } +void ForceHookOpenGL() // to do ..... +{ + HMODULE hGlLib; + //hGlLib=(*pLoadLibraryA)("OpenGL32.dll"); + hGlLib=LoadLibrary("OpenGL32.dll"); + OutTrace("hGlLib=%x\n",hGlLib); + pglViewport=(glViewport_Type)GetProcAddress(hGlLib, "glViewport"); + if(pglViewport) + HookAPI(NULL, "OpenGL32.dll", pglViewport, "glViewport", extglViewport); + //SetHook(void *target, void *hookproc, void **hookedproc, char *hookname); + pglScissor=(glScissor_Type)GetProcAddress(hGlLib, "glScissor"); + if(pglScissor) HookAPI(NULL, "OpenGL32.dll", pglScissor, "glScissor", extglScissor); + pglGetIntegerv=(glGetIntegerv_Type)GetProcAddress(hGlLib, "glGetIntegerv"); + if(pglGetIntegerv) HookAPI(NULL, "OpenGL32.dll", pglGetIntegerv, "glGetIntegerv", extglGetIntegerv); + pglDrawBuffer=(glDrawBuffer_Type)GetProcAddress(hGlLib, "glDrawBuffer"); + if(pglDrawBuffer) HookAPI(NULL, "OpenGL32.dll", pglDrawBuffer, "glDrawBuffer", extglDrawBuffer); +} + +void DisableIME() +{ + BOOL res; + HMODULE hm; + hm=GetModuleHandle("User32"); + // here, GetProcAddress may be not hooked yet! + if(!pGetProcAddress) pGetProcAddress=GetProcAddress; +#ifdef USEWINNLSENABLE + typedef BOOL (WINAPI *WINNLSEnableIME_Type)(HWND, BOOL); + WINNLSEnableIME_Type pWINNLSEnableIME; + pWINNLSEnableIME=(WINNLSEnableIME_Type)(*pGetProcAddress)(hm, "WINNLSEnableIME"); + OutTrace("DisableIME: GetProcAddress(WINNLSEnableIME)=%x\n", pWINNLSEnableIME); + if(!pWINNLSEnableIME) return; + SetLastError(0); + res=(*pWINNLSEnableIME)(NULL, FALSE); + OutTrace("IME previous state=%x error=%d\n", res, GetLastError()); +#else + typedef LRESULT (WINAPI *SendIMEMessage_Type)(HWND, LPARAM); + SendIMEMessage_Type pSendIMEMessage; + pSendIMEMessage=(SendIMEMessage_Type)(*pGetProcAddress)(hm, "SendIMEMessage"); + OutTrace("DisableIME: GetProcAddress(SendIMEMessage)=%x\n", pSendIMEMessage); + if(!pSendIMEMessage) return; + HGLOBAL imeh; + IMESTRUCT *imes; + imeh=GlobalAlloc(GMEM_MOVEABLE|GMEM_SHARE, sizeof(IMESTRUCT)); + imes=(IMESTRUCT *)imeh; + //imes->fnc=IME_SETLEVEL; + imes->fnc=7; + imes->wParam=1; + SetLastError(0); + res=(*pSendIMEMessage)(dxw.GethWnd(), (LPARAM)imeh); + OutTrace("res=%x error=%d\n", res, GetLastError()); +#endif +} + int HookInit(TARGETMAP *target, HWND hwnd) { BOOL res; @@ -1171,14 +1254,16 @@ int HookInit(TARGETMAP *target, HWND hwnd) } if(dxw.dwFlags1 & HANDLEEXCEPTIONS) HookExceptionHandler(); - if (dxw.dwTFlags & OUTIMPORTTABLE) DumpImportTable(NULL); + //if(dxw.dwFlags2 & SUPPRESSIME) DisableIME(); if (dxw.dwTFlags & DXPROXED){ HookDDProxy(NULL, dxw.dwTargetDDVersion); return 0; } + //ForceHookOpenGL(); + // make InitPosition used for both DInput and DDraw InitPosition(target->initx, target->inity, target->minx, target->miny, target->maxx, target->maxy); @@ -1189,6 +1274,8 @@ int HookInit(TARGETMAP *target, HWND hwnd) HookModule(NULL, dxw.dwTargetDDVersion); sModule=strtok(dxw.gsModules," "); while (sModule) { + HMODULE hm; + hm=(*pLoadLibraryA)(sModule); OutTraceD("HookInit: hooking additional module=%s\n", sModule); if (dxw.dwTFlags & OUTIMPORTTABLE) DumpImportTable(sModule); HookModule(sModule, dxw.dwTargetDDVersion); @@ -1207,6 +1294,7 @@ int HookInit(TARGETMAP *target, HWND hwnd) if(!res) OutTraceE("MoveWindow ERROR: dxw.hParentWnd=%x err=%d at %d\n", dxw.hParentWnd, GetLastError(), __LINE__); } + return 0; } diff --git a/dll/dxhook.h b/dll/dxhook.h index 8c3d789..1e59b44 100644 --- a/dll/dxhook.h +++ b/dll/dxhook.h @@ -1,8 +1,9 @@ -int HookDirectDraw(char *, int); -int HookDDProxy(char *, int); -int HookDirect3D(char *, int); -int HookOle32(char *, int); -int HookDirectInput(char *, int); -void InitPosition(int, int, int, int, int, int); +extern int HookDirectDraw(char *, int); +extern int HookDDProxy(char *, int); +extern int HookDirect3D(char *, int); +extern int HookOle32(char *, int); +extern int HookDirectInput(char *, int); +extern void HookImeLib(char *); +extern void InitPosition(int, int, int, int, int, int); //void InitWindowPos(int, int, int, int); extern LPCSTR ProcToString(LPCSTR proc); diff --git a/dll/dxwbanner.bmp b/dll/dxwbanner.bmp new file mode 100644 index 0000000000000000000000000000000000000000..1926d51978aab0c357952740c27e74894e50bcc1 GIT binary patch literal 19926 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 i--){ + int w, h; + w=(bm.bmWidth*i)/8; + h=(bm.bmHeight*i)/8; + BitBlt(hClientDC, 0, 0, client.right, client.bottom, NULL, 0, 0, BLACKNESS); + StretchBlt(hClientDC, (client.right-w)/2, (client.bottom-h)/2, w, h, hdcMem, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY); + Sleep(40); + } + SelectObject(hdcMem, hbmOld); + DeleteDC(hdcMem); + Sleep(200); } \ No newline at end of file diff --git a/dll/dxwcore.hpp b/dll/dxwcore.hpp index 2415f3e..5d32bdd 100644 --- a/dll/dxwcore.hpp +++ b/dll/dxwcore.hpp @@ -50,6 +50,7 @@ public: // methods char *GetTSCaption(int); char *GetTSCaption(void); void DoSlow(int); + void ShowBanner(HWND); public: // simple data variables DDPIXELFORMAT ActualPixelFormat; diff --git a/dll/dxwnd.aps b/dll/dxwnd.aps new file mode 100644 index 0000000000000000000000000000000000000000..d1833328cc4c1ecd18a62df0ba282b3076e6beca GIT binary patch literal 37684 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. #include #include "dxwnd.h" -#define VERSION "2.02.11" +#define VERSION "2.02.12" LRESULT CALLBACK HookProc(int ncode, WPARAM wparam, LPARAM lparam); diff --git a/dll/dxwnd.rc b/dll/dxwnd.rc new file mode 100644 index 0000000..2705594 --- /dev/null +++ b/dll/dxwnd.rc @@ -0,0 +1,70 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +IDB_BANNER BITMAP "dxwbanner.bmp" +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/dll/dxwnd.vs2005.vcproj b/dll/dxwnd.vs2005.vcproj deleted file mode 100644 index 15b3c7a..0000000 --- a/dll/dxwnd.vs2005.vcproj +++ /dev/null @@ -1,398 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dll/dxwnd.vs2008.suo b/dll/dxwnd.vs2008.suo index eb535803124736929e3cdf212eff78e7e10926ec..089797b4435ce2c0811335da787cfef98854a18d 100644 GIT binary patch literal 116224 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 literal 105984 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 diff --git a/dll/dxwnd.vs2008.vcproj b/dll/dxwnd.vs2008.vcproj index 2a1b7ce..bef3683 100644 --- a/dll/dxwnd.vs2008.vcproj +++ b/dll/dxwnd.vs2008.vcproj @@ -272,6 +272,10 @@ RelativePath="dxwnd.def" > + + @@ -340,6 +344,10 @@ /> + + @@ -381,6 +389,10 @@ RelativePath=".\hddraw.h" > + + @@ -390,6 +402,10 @@ Name="Resource Files" Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" > + + diff --git a/dll/hddraw.cpp b/dll/hddraw.cpp index 44c8903..5875bf2 100644 --- a/dll/hddraw.cpp +++ b/dll/hddraw.cpp @@ -525,6 +525,8 @@ HRESULT STDAPICALLTYPE extCoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, res=extDirectDrawCreateEx(NULL, (LPDIRECTDRAW *)&ppv, IID_IDirectDraw7, 0); if(res)OutTraceD("DirectDrawCreateEx: res=%x(%s)\n", res, ExplainDDError(res)); break; + case 0xe436ebb3: + break; } } @@ -2844,6 +2846,7 @@ HRESULT WINAPI extLock(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDIRECTDRAWSUR HRESULT WINAPI extUnlock(int dxversion, Unlock4_Type pUnlock, LPDIRECTDRAWSURFACE lpdds, LPRECT lprect) { HRESULT res; + //RECT screen, rect; BOOL IsPrim; IsPrim=dxw.IsAPrimarySurface(lpdds); @@ -3325,7 +3328,6 @@ HRESULT WINAPI extReleaseS(LPDIRECTDRAWSURFACE lpdds) IsClosed=1; }; - // avoid crashing.... res = IsClosed ? 0 :(*pReleaseS)(lpdds); OutTraceD("Release(S): lpdds=%x%s refcount=%d\n", lpdds, IsPrim?"(PRIM)":"", res); diff --git a/dll/imelib.cpp b/dll/imelib.cpp new file mode 100644 index 0000000..eb8648a --- /dev/null +++ b/dll/imelib.cpp @@ -0,0 +1,81 @@ +#define _WIN32_WINNT 0x0600 +#define WIN32_LEAN_AND_MEAN +#include +#include +#include +#include "dxwnd.h" +#include "dxwcore.hpp" +#include "dxhook.h" +#include "syslibs.h" +#include "dxhelper.h" + +BOOL WINAPI extImmNotifyIME(HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue) +{ + OutTraceD("ImmNotifyIME: hIMC=%x dwAction=%x dwIndex=%x dwValue=%x\n", hIMC, dwAction, dwIndex, dwValue); + return(*pImmNotifyIME)(hIMC, dwAction, dwIndex, dwValue); +} + +HIMC WINAPI extImmCreateContext(void) +{ + OutTraceD("ImmCreateContext\n"); + return(*pImmCreateContext)(); +} + +BOOL WINAPI extImmDestroyContext(HIMC hIMC) +{ + OutTraceD("ImmDestroyContext: hIMC=%x\n", hIMC); + return(*pImmDestroyContext)(hIMC); +} + +BOOL WINAPI extImmSetOpenStatus(HIMC hIMC, BOOL fOpen) +{ + OutTraceD("ImmSetOpenStatus: hIMC=%x fOpen=%x\n", hIMC, fOpen); + return(*pImmSetOpenStatus)(hIMC, fOpen); +} + +HIMC WINAPI extImmAssociateContext(HWND hwnd, HIMC hIMC) +{ + OutTraceD("ImmAssociateContext: hwnd=%x hIMC=%x\n", hwnd, hIMC); + //return NULL; + return(*pImmAssociateContext)(hwnd, hIMC); +} + +BOOL WINAPI extImmSetCompositionWindow(HIMC hIMC, LPCOMPOSITIONFORM lpCompForm) +{ + OutTraceD("ImmSetCompositionWindow: hIMC=%x lpCompForm=%x\n", hIMC, lpCompForm); + return(*pImmSetCompositionWindow)(hIMC, lpCompForm); +} + +BOOL WINAPI extImmSetCompositionString(HIMC hIMC, DWORD dwIndex, LPVOID lpComp, DWORD dwCompLen, LPVOID lpRead, DWORD dwReadLen) +{ + OutTraceD("ImmSetCompositionString: hIMC=%x dwIndex=%x lpComp=%x dwCompLen=%x dwRead=%x dwReadLen=%x\n", hIMC, dwIndex, lpComp, dwCompLen, lpRead, dwReadLen); + return (*pImmSetCompositionString)(hIMC, dwIndex, lpComp, dwCompLen, lpRead, dwReadLen); +} + +BOOL WINAPI extImmGetOpenStatus(HIMC hIMC) +{ + OutTraceD("ImmGetOpenStatus: hIMC=%x\n", hIMC); + return(*pImmGetOpenStatus)(hIMC); +} + +void HookImeLib(char *module) +{ + void *tmp; + + tmp = HookAPI(module, "IMM32.dll", NULL, "ImmNotifyIME", extImmNotifyIME); + if(tmp) pImmNotifyIME = (ImmNotifyIME_Type)tmp; + tmp = HookAPI(module, "IMM32.dll", NULL, "ImmCreateContext", extImmCreateContext); + if(tmp) pImmCreateContext = (ImmCreateContext_Type)tmp; + tmp = HookAPI(module, "IMM32.dll", NULL, "ImmDestroyContext", extImmDestroyContext); + if(tmp) pImmDestroyContext = (ImmDestroyContext_Type)tmp; + tmp = HookAPI(module, "IMM32.dll", NULL, "ImmSetOpenStatus", extImmSetOpenStatus); + if(tmp) pImmSetOpenStatus = (ImmSetOpenStatus_Type)tmp; + tmp = HookAPI(module, "IMM32.dll", NULL, "ImmAssociateContext", extImmAssociateContext); + if(tmp) pImmAssociateContext = (ImmAssociateContext_Type)tmp; + tmp = HookAPI(module, "IMM32.dll", NULL, "ImmSetCompositionWindow", extImmSetCompositionWindow); + if(tmp) pImmSetCompositionWindow = (ImmSetCompositionWindow_Type)tmp; + tmp = HookAPI(module, "IMM32.dll", NULL, "ImmSetCompositionStringA", extImmSetCompositionString); + if(tmp) pImmSetCompositionString = (ImmSetCompositionString_Type)tmp; + tmp = HookAPI(module, "IMM32.dll", NULL, "ImmGetOpenStatus", extImmGetOpenStatus); + if(tmp) pImmGetOpenStatus = (ImmGetOpenStatus_Type)tmp; +} diff --git a/dll/resource.h b/dll/resource.h new file mode 100644 index 0000000..52de46d --- /dev/null +++ b/dll/resource.h @@ -0,0 +1,17 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by dxwnd.rc +// +#define IDB_BITMAP1 101 +#define IDB_BANNER 101 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 102 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/dll/syslibs.cpp b/dll/syslibs.cpp index 066f06a..25b31d3 100644 --- a/dll/syslibs.cpp +++ b/dll/syslibs.cpp @@ -1109,7 +1109,7 @@ int WINAPI extGetDeviceCaps(HDC hdc, int nindex) // are NOT implemented and may cause later troubles! case RASTERCAPS: if(dxw.dwFlags2 & INIT8BPP) { - res = RC_PALETTE; + res |= RC_PALETTE; // v2.02.12 OutTraceD("GetDeviceCaps: fix RASTERCAPS setting RC_PALETTE cap=%x\n",res); } break; @@ -1556,8 +1556,12 @@ HMODULE WINAPI extLoadLibraryA(LPCTSTR lpFileName) idx=SYSLIBIDX_OPENGL; SysLibs[idx]=ret; } - - HookSysLibs(NULL); + //if(idx==SYSLIBIDX_MAX) { + // OutTraceD("LoadLibraryA: hook %s\n", lpName); + // HookModule((char *)lpName, 0); + //} + //HookSysLibs(NULL); + HookModule(NULL, 0); return ret; } @@ -1585,8 +1589,12 @@ HMODULE WINAPI extLoadLibraryW(LPCWSTR lpFileName) idx=SYSLIBIDX_OPENGL; SysLibs[idx]=ret; } - - HookSysLibs(NULL); + //if(idx==SYSLIBIDX_MAX) { + // OutTraceD("LoadLibraryW: hook %s\n", lpName); + // HookModule((char *)lpName, 0); + //} + //HookSysLibs(NULL); + HookModule(NULL, 0); return ret; } @@ -1614,8 +1622,12 @@ HMODULE WINAPI extLoadLibraryExA(LPCTSTR lpFileName, HANDLE hFile, DWORD dwFlags idx=SYSLIBIDX_OPENGL; SysLibs[idx]=ret; } - - HookSysLibs(NULL); + //if(idx==SYSLIBIDX_MAX) { + // OutTraceD("LoadLibraryExA: hook %s\n", lpName); + // HookModule((char *)lpName, 0); + //} + //HookSysLibs(NULL); + HookModule(NULL, 0); return ret; } @@ -1643,8 +1655,12 @@ HMODULE WINAPI extLoadLibraryExW(LPCWSTR lpFileName, HANDLE hFile, DWORD dwFlags idx=SYSLIBIDX_OPENGL; SysLibs[idx]=ret; } - - HookSysLibs(NULL); + //if(idx==SYSLIBIDX_MAX) { + // OutTraceD("LoadLibraryExW: hook %s\n", lpName); + // HookModule((char *)lpName, 0); + //} + //HookSysLibs(NULL); + HookModule(NULL, 0); return ret; } @@ -2782,4 +2798,5 @@ DWORD WINAPI extGetVersion(void) } return dwVersion; -} \ No newline at end of file +} + diff --git a/dll/syslibs.h b/dll/syslibs.h index b2b4f1a..74aa82a 100644 --- a/dll/syslibs.h +++ b/dll/syslibs.h @@ -13,6 +13,15 @@ user32.dll.dll type definitions ====================================================================*/ +typedef BOOL (WINAPI *ImmNotifyIME_Type)(HIMC, DWORD, DWORD, DWORD); +typedef HIMC (WINAPI *ImmCreateContext_Type)(void); +typedef BOOL (WINAPI *ImmDestroyContext_Type)(HIMC); +typedef BOOL (WINAPI *ImmSetOpenStatus_Type)(HIMC, BOOL); +typedef HIMC (WINAPI *ImmAssociateContext_Type)(HWND, HIMC); +typedef BOOL (WINAPI *ImmSetCompositionWindow_Type)(HIMC, LPCOMPOSITIONFORM); +typedef BOOL (WINAPI *ImmSetCompositionString_Type)(HIMC, DWORD, LPVOID, DWORD, LPVOID, DWORD); +typedef BOOL (WINAPI *ImmGetOpenStatus_Type)(HIMC); + // GDI32.dll: typedef BOOL (WINAPI *BitBlt_Type)(HDC, int, int, int, int, HDC, int, int, DWORD); typedef HDC (WINAPI *CreateCompatibleDC_Type)(HDC); @@ -117,6 +126,15 @@ hooked APIs real pointers #define DXWINITIALIZED #endif +DXWEXTERN ImmNotifyIME_Type pImmNotifyIME DXWINITIALIZED; +DXWEXTERN ImmCreateContext_Type pImmCreateContext DXWINITIALIZED; +DXWEXTERN ImmDestroyContext_Type pImmDestroyContext DXWINITIALIZED; +DXWEXTERN ImmSetOpenStatus_Type pImmSetOpenStatus DXWINITIALIZED; +DXWEXTERN ImmAssociateContext_Type pImmAssociateContext DXWINITIALIZED; +DXWEXTERN ImmSetCompositionWindow_Type pImmSetCompositionWindow DXWINITIALIZED; +DXWEXTERN ImmSetCompositionString_Type pImmSetCompositionString DXWINITIALIZED; +DXWEXTERN ImmGetOpenStatus_Type pImmGetOpenStatus DXWINITIALIZED; + // GDI32.dll: DXWEXTERN BitBlt_Type pGDIBitBlt DXWINITIALIZED; DXWEXTERN CreateCompatibleDC_Type pGDICreateCompatibleDC DXWINITIALIZED; @@ -209,6 +227,15 @@ DXWEXTERN timeGetTime_Type ptimeGetTime DXWINITIALIZED; hook procedures (possibly more tnan one per each API...) ====================================================================*/ +extern BOOL WINAPI extImmNotifyIME(HIMC, DWORD, DWORD, DWORD); +extern HIMC WINAPI extImmCreateContext(void); +extern BOOL WINAPI extImmDestroyContext(HIMC); +extern BOOL WINAPI extImmSetOpenStatus(HIMC, BOOL); +extern HIMC WINAPI extImmAssociateContext(HWND, HIMC); +extern BOOL WINAPI extImmSetCompositionWindow(HIMC, LPCOMPOSITIONFORM); +extern BOOL WINAPI extImmSetCompositionString(HIMC, DWORD, LPVOID, DWORD, LPVOID, DWORD); +extern BOOL WINAPI extImmGetOpenStatus(HIMC); + // GDI32.dll: extern BOOL WINAPI extGDIBitBlt(HDC, int, int, int, int, HDC, int, int, DWORD); extern HDC WINAPI extGDICreateCompatibleDC(HDC); diff --git a/host/Resource.h b/host/Resource.h index 35612be..bec78df 100644 --- a/host/Resource.h +++ b/host/Resource.h @@ -25,6 +25,18 @@ #define IDI_RUN6 148 #define IDD_STATUS 149 #define IDD_TIMESLIDER 150 +#define IDD_TAB_PROGRAM 152 +#define IDD_TAB_LOG 153 +#define IDD_TAB_DIRECTX 154 +#define IDD_TAB_MOUSE 155 +#define IDD_TAB_TIMING 156 +#define IDD_TAB_WINDOW 157 +#define IDD_TAB_EMPTY 158 +#define IDD_TAB_EMPTY1 159 +#define IDD_TAB_OPENGL 159 +#define IDD_TAB_COMPAT 160 +#define IDD_TAB_EMPTY2 161 +#define IDD_TAB_GDI 161 #define IDC_AUTO 300 #define IDC_DIRECTX1 301 #define IDC_DIRECTX7 302 @@ -107,6 +119,8 @@ #define IDC_KEEPASPECTRATIO 1070 #define IDC_LIMITRESOURCES 1071 #define IDC_FORCEWINRESIZE 1072 +#define IDC_LIMITRESOURCES2 1072 +#define IDC_SUPPRESSIME 1072 #define IDC_DISABLEGAMMARAMP 1073 #define IDC_FIXNCHITTEST 1074 #define IDC_LIMITFPS 1075 @@ -128,6 +142,9 @@ #define IDC_LIST2 1088 #define IDC_LISTTS 1088 #define IDC_LISTFAKE 1089 +#define IDC_TABPANEL 1090 +#define IDC_WINDOWIZE 1091 +#define IDC_NOBANNER 1092 #define ID_MODIFY 32771 #define ID_DELETE 32772 #define ID_ADD 32773 @@ -167,9 +184,9 @@ #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_3D_CONTROLS 1 -#define _APS_NEXT_RESOURCE_VALUE 152 +#define _APS_NEXT_RESOURCE_VALUE 153 #define _APS_NEXT_COMMAND_VALUE 32816 -#define _APS_NEXT_CONTROL_VALUE 1089 +#define _APS_NEXT_CONTROL_VALUE 1091 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/host/TabCompat.cpp b/host/TabCompat.cpp new file mode 100644 index 0000000..c274bf3 --- /dev/null +++ b/host/TabCompat.cpp @@ -0,0 +1,68 @@ +// TabDirectX.cpp : implementation file +// + +#include "stdafx.h" +#include "TargetDlg.h" +#include "TabCompat.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CTabCompat dialog + +CTabCompat::CTabCompat(CWnd* pParent /*=NULL*/) +// : CTargetDlg(pParent) + : CDialog(CTabCompat::IDD, pParent) +{ + //{{AFX_DATA_INIT(CTabCompat) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT +} + +void CTabCompat::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent())); + DDX_Check(pDX, IDC_FAKEVERSION, cTarget->m_FakeVersion); + DDX_LBIndex(pDX, IDC_LISTFAKE, cTarget->m_FakeVersionId); + DDX_Check(pDX, IDC_HANDLEEXCEPTIONS, cTarget->m_HandleExceptions); + DDX_Check(pDX, IDC_LIMITRESOURCES, cTarget->m_LimitResources); + DDX_Check(pDX, IDC_SUPPRESSIME, cTarget->m_SuppressIME); +} + +BEGIN_MESSAGE_MAP(CTabCompat, CDialog) + //{{AFX_MSG_MAP(CTabCompat) + // NOTE: the ClassWizard will add message map macros here + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CTabCompat message handlers + +static struct {char bMajor; char bMinor; char *sName;} WinVersions[6]= +{ + {5, 0, "Windows 2000"}, + {5, 1, "Windows XP"}, + {5, 2, "Windows Server 2003"}, + {6, 0, "Windows Vista"}, + {6, 1, "Windows 7"}, + {6, 2, "Windows 8"} +}; + +BOOL CTabCompat::OnInitDialog() +{ + AfxEnableControlContainer(); + CListBox *List; + CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent())); + int i; + List=(CListBox *)this->GetDlgItem(IDC_LISTFAKE); + List->ResetContent(); + for(i=0; i<6; i++) List->AddString(WinVersions[i].sName); + List->SetCurSel(cTarget->m_FakeVersion); + CDialog::OnInitDialog(); + return TRUE; +} \ No newline at end of file diff --git a/host/TabCompat.h b/host/TabCompat.h new file mode 100644 index 0000000..0178123 --- /dev/null +++ b/host/TabCompat.h @@ -0,0 +1,50 @@ +#if !defined(AFX_TABCOMPAT_H__798A9124_C906_446C_822D_322B5AB6C4C4__INCLUDED_) +#define AFX_TABCOMPAT_H__798A9124_C906_446C_822D_322B5AB6C4C4__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// TabDirectX.h : header file +// +#include "resource.h" +#include "TargetDlg.h" + +///////////////////////////////////////////////////////////////////////////// +// CTabDirectX dialog + +//class CTabCompat : public CTargetDlg +class CTabCompat : public CDialog +{ +// Construction +public: + CTabCompat(CWnd* pParent = NULL); // standard constructor + +// Dialog Data + //{{AFX_DATA(CTabDirectX) + enum { IDD = IDD_TAB_COMPAT }; + // NOTE: the ClassWizard will add data members here + //}}AFX_DATA + + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CTabDirectX) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + BOOL OnInitDialog(); + + // Generated message map functions + //{{AFX_MSG(CTabDirectX) + // NOTE: the ClassWizard will add member functions here + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_TABTHREE_H__798A9124_C906_446C_822D_322B5AB6C4C4__INCLUDED_) diff --git a/host/TabDirectX.cpp b/host/TabDirectX.cpp new file mode 100644 index 0000000..848cf3d --- /dev/null +++ b/host/TabDirectX.cpp @@ -0,0 +1,63 @@ +// TabDirectX.cpp : implementation file +// + +#include "stdafx.h" +#include "TargetDlg.h" +#include "TabDirectX.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CTabDirectX dialog + +CTabDirectX::CTabDirectX(CWnd* pParent /*=NULL*/) + : CDialog(CTabDirectX::IDD, pParent) +{ + //{{AFX_DATA_INIT(CTabDirectX) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT +} + +void CTabDirectX::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent())); + DDX_Radio(pDX, IDC_AUTO, cTarget->m_DXVersion); + DDX_Check(pDX, IDC_EMULATESURFACE, cTarget->m_EmulateSurface); + DDX_Check(pDX, IDC_NOEMULATESURFACE, cTarget->m_NoEmulateSurface); + DDX_Check(pDX, IDC_EMULATEBUFFER, cTarget->m_EmulateBuffer); + + DDX_Check(pDX, IDC_HANDLEDC, cTarget->m_HandleDC); + DDX_Check(pDX, IDC_SUPPRESSCLIPPING, cTarget->m_SuppressClipping); + DDX_Check(pDX, IDC_BLITFROMBACKBUFFER, cTarget->m_BlitFromBackBuffer); + DDX_Check(pDX, IDC_AUTOREFRESH, cTarget->m_AutoRefresh); + DDX_Check(pDX, IDC_VIDEOTOSYSTEMMEM, cTarget->m_VideoToSystemMem); + DDX_Check(pDX, IDC_USERGB565, cTarget->m_UseRGB565); + DDX_Check(pDX, IDC_SUPPRESSDXERRORS, cTarget->m_SuppressDXErrors); + DDX_Check(pDX, IDC_CLIENTREMAPPING, cTarget->m_ClientRemapping); + DDX_Check(pDX, IDC_MAPGDITOPRIMARY, cTarget->m_MapGDIToPrimary); + DDX_Check(pDX, IDC_BACKBUFATTACH, cTarget->m_BackBufAttach); + DDX_Check(pDX, IDC_FULLRECTBLT, cTarget->m_FullRectBlt); + DDX_Check(pDX, IDC_NOPALETTEUPDATE, cTarget->m_NoPaletteUpdate); + // DirectInput + DDX_Check(pDX, IDC_HOOKDI, cTarget->m_HookDI); + DDX_Text(pDX, IDC_INITX, cTarget->m_InitX); + DDX_Text(pDX, IDC_INITY, cTarget->m_InitY); + DDX_Text(pDX, IDC_MAXX, cTarget->m_MaxX); + DDX_Text(pDX, IDC_MAXY, cTarget->m_MaxY); + DDX_Text(pDX, IDC_MINX, cTarget->m_MinX); + DDX_Text(pDX, IDC_MINY, cTarget->m_MinY); +} + +BEGIN_MESSAGE_MAP(CTabDirectX, CDialog) + //{{AFX_MSG_MAP(CTabDirectX) + // NOTE: the ClassWizard will add message map macros here + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CTabDirectX message handlers diff --git a/host/TabDirectX.h b/host/TabDirectX.h new file mode 100644 index 0000000..cda485b --- /dev/null +++ b/host/TabDirectX.h @@ -0,0 +1,47 @@ +#if !defined(AFX_TABDIRECTX_H__798A9124_C906_446C_822D_322B5AB6C4C4__INCLUDED_) +#define AFX_TABDIRECTX_H__798A9124_C906_446C_822D_322B5AB6C4C4__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// TabDirectX.h : header file +// +#include "resource.h" + +///////////////////////////////////////////////////////////////////////////// +// CTabDirectX dialog + +class CTabDirectX : public CDialog +{ +// Construction +public: + CTabDirectX(CWnd* pParent = NULL); // standard constructor + +// Dialog Data + //{{AFX_DATA(CTabDirectX) + enum { IDD = IDD_TAB_DIRECTX }; + // NOTE: the ClassWizard will add data members here + //}}AFX_DATA + + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CTabDirectX) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + + // Generated message map functions + //{{AFX_MSG(CTabDirectX) + // NOTE: the ClassWizard will add member functions here + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif diff --git a/host/TabGDI.cpp b/host/TabGDI.cpp new file mode 100644 index 0000000..b0890d6 --- /dev/null +++ b/host/TabGDI.cpp @@ -0,0 +1,41 @@ +// TabGDI.cpp : implementation file +// + +#include "stdafx.h" +#include "TargetDlg.h" +#include "TabGDI.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CTabLogs dialog + +CTabGDI::CTabGDI(CWnd* pParent /*=NULL*/) + : CDialog(CTabGDI::IDD, pParent) +{ + //{{AFX_DATA_INIT(CTabGDI) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT +} + +void CTabGDI::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent())); + DDX_Check(pDX, IDC_DISABLEGAMMARAMP, cTarget->m_DisableGammaRamp); + DDX_Check(pDX, IDC_FIXTEXTOUT, cTarget->m_FixTextOut); + DDX_Check(pDX, IDC_HOOKGDI, cTarget->m_HookGDI); +} + +BEGIN_MESSAGE_MAP(CTabGDI, CDialog) + //{{AFX_MSG_MAP(CTabLogs) + // NOTE: the ClassWizard will add message map macros here + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CTabLogs message handlers diff --git a/host/TabGDI.h b/host/TabGDI.h new file mode 100644 index 0000000..d97b00f --- /dev/null +++ b/host/TabGDI.h @@ -0,0 +1,47 @@ +#if !defined(AFX_TABGDI_H__7E062B52_3B6E_44C4_B58E_AAD73592C8E3__INCLUDED_) +#define AFX_TABGDI_H__7E062B52_3B6E_44C4_B58E_AAD73592C8E3__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// TabLogs.h : header file +// +#include "resource.h" + +///////////////////////////////////////////////////////////////////////////// +// CTabLogs dialog + +class CTabGDI : public CDialog +{ +// Construction +public: + CTabGDI(CWnd* pParent = NULL); // standard constructor + +// Dialog Data + //{{AFX_DATA(CTabLogs) + enum { IDD = IDD_TAB_GDI }; + // NOTE: the ClassWizard will add data members here + //}}AFX_DATA + + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CTabLogs) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + + // Generated message map functions + //{{AFX_MSG(CTabLogs) + // NOTE: the ClassWizard will add member functions here + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif diff --git a/host/TabLogs.cpp b/host/TabLogs.cpp new file mode 100644 index 0000000..209dc75 --- /dev/null +++ b/host/TabLogs.cpp @@ -0,0 +1,47 @@ +// TabLogs.cpp : implementation file +// + +#include "stdafx.h" +#include "TargetDlg.h" +#include "TabLogs.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CTabLogs dialog + +CTabLogs::CTabLogs(CWnd* pParent /*=NULL*/) + : CDialog(CTabLogs::IDD, pParent) +{ + //{{AFX_DATA_INIT(CTabLogs) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT +} + +void CTabLogs::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent())); + DDX_Check(pDX, IDC_OUTTRACE, cTarget->m_OutTrace); + DDX_Check(pDX, IDC_OUTDEBUG, cTarget->m_OutDebug); + DDX_Check(pDX, IDC_CURSORTRACE, cTarget->m_CursorTrace); + DDX_Check(pDX, IDC_LOGENABLED, cTarget->m_LogEnabled); + DDX_Check(pDX, IDC_OUTWINMESSAGES, cTarget->m_OutWinMessages); + DDX_Check(pDX, IDC_OUTDXTRACE, cTarget->m_OutDXTrace); + DDX_Check(pDX, IDC_DXPROXED, cTarget->m_DXProxed); + DDX_Check(pDX, IDC_ASSERT, cTarget->m_AssertDialog); + DDX_Check(pDX, IDC_IMPORTTABLE, cTarget->m_ImportTable); +} + +BEGIN_MESSAGE_MAP(CTabLogs, CDialog) + //{{AFX_MSG_MAP(CTabLogs) + // NOTE: the ClassWizard will add message map macros here + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CTabLogs message handlers diff --git a/host/TabLogs.h b/host/TabLogs.h new file mode 100644 index 0000000..96eb8fb --- /dev/null +++ b/host/TabLogs.h @@ -0,0 +1,47 @@ +#if !defined(AFX_TABLOGS_H__7E062B52_3B6E_44C4_B58E_AAD73592C8E3__INCLUDED_) +#define AFX_TABLOGS_H__7E062B52_3B6E_44C4_B58E_AAD73592C8E3__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// TabLogs.h : header file +// +#include "resource.h" + +///////////////////////////////////////////////////////////////////////////// +// CTabLogs dialog + +class CTabLogs : public CDialog +{ +// Construction +public: + CTabLogs(CWnd* pParent = NULL); // standard constructor + +// Dialog Data + //{{AFX_DATA(CTabLogs) + enum { IDD = IDD_TAB_LOG }; + // NOTE: the ClassWizard will add data members here + //}}AFX_DATA + + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CTabLogs) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + + // Generated message map functions + //{{AFX_MSG(CTabLogs) + // NOTE: the ClassWizard will add member functions here + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif diff --git a/host/TabMouse.cpp b/host/TabMouse.cpp new file mode 100644 index 0000000..11885af --- /dev/null +++ b/host/TabMouse.cpp @@ -0,0 +1,49 @@ +// TabDirectX.cpp : implementation file +// + +#include "stdafx.h" +#include "TargetDlg.h" +#include "TabMouse.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CTabMouse dialog + +CTabMouse::CTabMouse(CWnd* pParent /*=NULL*/) +// : CTargetDlg(pParent) + : CDialog(CTabMouse::IDD, pParent) +{ + //{{AFX_DATA_INIT(CTabMouse) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT +} + +void CTabMouse::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent())); + DDX_Check(pDX, IDC_MODIFYMOUSE, cTarget->m_ModifyMouse); + DDX_Check(pDX, IDC_HIDEHWCURSOR, cTarget->m_HideHwCursor); + DDX_Check(pDX, IDC_SHOWHWCURSOR, cTarget->m_ShowHwCursor); + DDX_Check(pDX, IDC_ENABLECLIPPING, cTarget->m_EnableClipping); + DDX_Check(pDX, IDC_CLIPCURSOR, cTarget->m_CursorClipping); + DDX_Check(pDX, IDC_KEEPCURSORWITHIN, cTarget->m_KeepCursorWithin); + DDX_Check(pDX, IDC_KEEPCURSORFIXED, cTarget->m_KeepCursorFixed); + DDX_Check(pDX, IDC_MESSAGEPROC, cTarget->m_MessageProc); + DDX_Check(pDX, IDC_FIXNCHITTEST, cTarget->m_FixNCHITTEST); + DDX_Check(pDX, IDC_SLOW, cTarget->m_SlowDown); +} + +BEGIN_MESSAGE_MAP(CTabMouse, CDialog) + //{{AFX_MSG_MAP(CTabMouse) + // NOTE: the ClassWizard will add message map macros here + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CTabMouse message handlers diff --git a/host/TabMouse.h b/host/TabMouse.h new file mode 100644 index 0000000..f0c1054 --- /dev/null +++ b/host/TabMouse.h @@ -0,0 +1,49 @@ +#if !defined(AFX_TABMOUSE_H__798A9124_C906_446C_822D_322B5AB6C4C4__INCLUDED_) +#define AFX_TABMOUSE_H__798A9124_C906_446C_822D_322B5AB6C4C4__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// TabDirectX.h : header file +// +#include "resource.h" +#include "TargetDlg.h" + +///////////////////////////////////////////////////////////////////////////// +// CTabDirectX dialog + +//class CTabMouse : public CTargetDlg +class CTabMouse : public CDialog +{ +// Construction +public: + CTabMouse(CWnd* pParent = NULL); // standard constructor + +// Dialog Data + //{{AFX_DATA(CTabDirectX) + enum { IDD = IDD_TAB_MOUSE }; + // NOTE: the ClassWizard will add data members here + //}}AFX_DATA + + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CTabDirectX) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + + // Generated message map functions + //{{AFX_MSG(CTabDirectX) + // NOTE: the ClassWizard will add member functions here + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_TABTHREE_H__798A9124_C906_446C_822D_322B5AB6C4C4__INCLUDED_) diff --git a/host/TabOpenGL.cpp b/host/TabOpenGL.cpp new file mode 100644 index 0000000..e81fec4 --- /dev/null +++ b/host/TabOpenGL.cpp @@ -0,0 +1,48 @@ +// TabOpenGL.cpp : implementation file +// + +#include "stdafx.h" +#include "TargetDlg.h" +#include "TabOpenGL.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CTabOpenGL dialog + +CTabOpenGL::CTabOpenGL(CWnd* pParent /*=NULL*/) + : CDialog(CTabOpenGL::IDD, pParent) +{ + //{{AFX_DATA_INIT(CTabOpenGL) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT +} + +void CTabOpenGL::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent())); + DDX_Check(pDX, IDC_HOOKOPENGL, cTarget->m_HookOpenGL); + DDX_Text(pDX, IDC_OPENGLLIB, cTarget->m_OpenGLLib); +} + +BOOL CTabOpenGL::OnInitDialog() +{ + AfxEnableControlContainer(); + CDialog::OnInitDialog(); + return TRUE; +} + + +BEGIN_MESSAGE_MAP(CTabOpenGL, CDialog) + //{{AFX_MSG_MAP(CTabOpenGL) + // NOTE: the ClassWizard will add message map macros here + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CTabOpenGL message handlers diff --git a/host/TabOpenGL.h b/host/TabOpenGL.h new file mode 100644 index 0000000..53c0aa5 --- /dev/null +++ b/host/TabOpenGL.h @@ -0,0 +1,48 @@ +#if !defined(AFX_TABOPENGL_H__798A9124_C906_446C_822D_322B5AB6C4C4__INCLUDED_) +#define AFX_TABOPENGL_H__798A9124_C906_446C_822D_322B5AB6C4C4__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// TabOpenGL.h : header file +// +#include "resource.h" + +///////////////////////////////////////////////////////////////////////////// +// CTabOpenGL dialog + +class CTabOpenGL : public CDialog +{ +// Construction +public: + CTabOpenGL(CWnd* pParent = NULL); // standard constructor + BOOL OnInitDialog(); + +// Dialog Data + //{{AFX_DATA(CTabOpenGL) + enum { IDD = IDD_TAB_OPENGL }; + // NOTE: the ClassWizard will add data members here + //}}AFX_DATA + + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CTabOpenGL) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + + // Generated message map functions + //{{AFX_MSG(CTabOpenGL) + // NOTE: the ClassWizard will add member functions here + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif \ No newline at end of file diff --git a/host/TabProgram.cpp b/host/TabProgram.cpp new file mode 100644 index 0000000..7b2898c --- /dev/null +++ b/host/TabProgram.cpp @@ -0,0 +1,63 @@ +// TabProgram.cpp : implementation file +// + +#include "stdafx.h" +#include "TargetDlg.h" +#include "TabProgram.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CTabProgram dialog + +CTabProgram::CTabProgram(CWnd* pParent /*=NULL*/) + : CDialog(CTabProgram::IDD, pParent) +{ + //{{AFX_DATA_INIT(CTabProgram) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT +} + +void CTabProgram::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent())); + DDX_Control(pDX, IDC_FILE, cTarget->m_File); + DDX_Text(pDX, IDC_FILE, cTarget->m_FilePath); + DDX_Text(pDX, IDC_MODULE, cTarget->m_Module); + DDX_Text(pDX, IDC_TITLE, cTarget->m_Title); + DDX_Check(pDX, IDC_UNNOTIFY, cTarget->m_UnNotify); + DDX_Check(pDX, IDC_WINDOWIZE, cTarget->m_Windowize); + DDX_Check(pDX, IDC_NOBANNER, cTarget->m_NoBanner); + DDX_Check(pDX, IDC_SAVELOAD, cTarget->m_SaveLoad); + DDX_Check(pDX, IDC_HANDLEALTF4, cTarget->m_HandleAltF4); + DDX_Text(pDX, IDC_POSX, cTarget->m_PosX); + DDX_Text(pDX, IDC_POSY, cTarget->m_PosY); + DDX_Text(pDX, IDC_SIZX, cTarget->m_SizX); + DDX_Text(pDX, IDC_SIZY, cTarget->m_SizY); +} + +BEGIN_MESSAGE_MAP(CTabProgram, CDialog) + //{{AFX_MSG_MAP(CTabProgram) + // NOTE: the ClassWizard will add message map macros here + ON_BN_CLICKED(IDC_OPEN, OnOpen) + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CTabProgram message handlers + +void CTabProgram::OnOpen() +{ + // TODO: Please add your control notification handler code here + char path[MAX_PATH]; + CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent())); + cTarget->m_File.GetWindowText(path, MAX_PATH); + CFileDialog dlg( TRUE, "*.*", path, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, + "Program (*.exe)|*.exe|All Files (*.*)|*.*||", this); + if( dlg.DoModal() == IDOK) cTarget->m_File.SetWindowText(dlg.GetPathName()); +} \ No newline at end of file diff --git a/host/TabProgram.h b/host/TabProgram.h new file mode 100644 index 0000000..7e32976 --- /dev/null +++ b/host/TabProgram.h @@ -0,0 +1,45 @@ +#if !defined(AFX_TABPROGRAM_H__4F1DD92C_C67D_48AE_A73F_02D7EDA0580E__INCLUDED_) +#define AFX_TABPROGRAM_H__4F1DD92C_C67D_48AE_A73F_02D7EDA0580E__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// TabProgram.h : header file +// +#include "resource.h" + +///////////////////////////////////////////////////////////////////////////// +// CTabProgram dialog + +class CTabProgram : public CDialog +{ +// Construction +public: + CTabProgram(CWnd* pParent = NULL); // standard constructor + void OnOpen(void); + +// Dialog Data + //{{AFX_DATA(CTabProgram) + enum { IDD = IDD_TAB_PROGRAM }; + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CTabProgram) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + + // Generated message map functions + //{{AFX_MSG(CTabProgram) + // NOTE: the ClassWizard will add member functions here + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif diff --git a/host/TabTiming.cpp b/host/TabTiming.cpp new file mode 100644 index 0000000..6be5ff4 --- /dev/null +++ b/host/TabTiming.cpp @@ -0,0 +1,69 @@ +// TabDirectX.cpp : implementation file +// + +#include "stdafx.h" +#include "TargetDlg.h" +#include "TabTiming.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CTabTiming dialog + + +CTabTiming::CTabTiming(CWnd* pParent /*=NULL*/) + : CDialog(CTabTiming::IDD, pParent) +{ + //{{AFX_DATA_INIT(CTabTiming) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT +} + + +void CTabTiming::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent())); + DDX_Check(pDX, IDC_LIMITFPS, cTarget->m_LimitFPS); + DDX_Check(pDX, IDC_SKIPFPS, cTarget->m_SkipFPS); + DDX_Check(pDX, IDC_SHOWFPS, cTarget->m_ShowFPS); + DDX_Check(pDX, IDC_SHOWFPSOVERLAY, cTarget->m_ShowFPSOverlay); + DDX_Check(pDX, IDC_TIMESTRETCH, cTarget->m_TimeStretch); + DDX_Text(pDX, IDC_MAXFPS, cTarget->m_MaxFPS); + DDX_LBIndex(pDX, IDC_LISTTS, cTarget->m_InitTS); + //{{AFX_DATA_MAP(CTabTiming) + // NOTE: the ClassWizard will add DDX and DDV calls here + //}}AFX_DATA_MAP +} + +BOOL CTabTiming::OnInitDialog() +{ + + AfxEnableControlContainer(); + + CListBox *List; + CDialog::OnInitDialog(); + int i; + extern char *GetTSCaption(int); + List=(CListBox *)this->GetDlgItem(IDC_LISTTS); + List->ResetContent(); + for(i=-8; i<=8; i++) List->AddString(GetTSCaption(i)); + CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent())); + List->SetCurSel(cTarget->m_InitTS); + + return TRUE; +} + + +BEGIN_MESSAGE_MAP(CTabTiming, CDialog) + //{{AFX_MSG_MAP(CTabTiming) + // NOTE: the ClassWizard will add message map macros here + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CTabTiming message handlers diff --git a/host/TabTiming.h b/host/TabTiming.h new file mode 100644 index 0000000..0b626db --- /dev/null +++ b/host/TabTiming.h @@ -0,0 +1,48 @@ +#if !defined(AFX_TABTIMING_H__798A9124_C906_446C_822D_322B5AB6C4C4__INCLUDED_) +#define AFX_TABTIMING_H__798A9124_C906_446C_822D_322B5AB6C4C4__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// TabTiming.h : header file +// +#include "resource.h" + +///////////////////////////////////////////////////////////////////////////// +// CTabDirectX dialog + +class CTabTiming : public CDialog +{ +// Construction +public: + CTabTiming(CWnd* pParent = NULL); // standard constructor + BOOL OnInitDialog(); + +// Dialog Data + //{{AFX_DATA(CTabDirectX) + enum { IDD = IDD_TAB_TIMING }; + // NOTE: the ClassWizard will add data members here + //}}AFX_DATA + + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CTabDirectX) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + + // Generated message map functions + //{{AFX_MSG(CTabDirectX) + // NOTE: the ClassWizard will add member functions here + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_TABTHREE_H__798A9124_C906_446C_822D_322B5AB6C4C4__INCLUDED_) diff --git a/host/TabWindow.cpp b/host/TabWindow.cpp new file mode 100644 index 0000000..9d926f6 --- /dev/null +++ b/host/TabWindow.cpp @@ -0,0 +1,64 @@ +// TabOpenGL.cpp : implementation file +// + +#include "stdafx.h" +#include "TargetDlg.h" +#include "TabWindow.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CTabWindow dialog + + +CTabWindow::CTabWindow(CWnd* pParent /*=NULL*/) + : CDialog(CTabWindow::IDD, pParent) +{ + //{{AFX_DATA_INIT(CTabWindow) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT +} + + +void CTabWindow::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent())); + DDX_Check(pDX, IDC_FIXWINFRAME, cTarget->m_FixWinFrame); + DDX_Check(pDX, IDC_PREVENTMAXIMIZE, cTarget->m_PreventMaximize); + DDX_Check(pDX, IDC_LOCKWINPOS, cTarget->m_LockWinPos); + DDX_Check(pDX, IDC_LOCKWINSTYLE, cTarget->m_LockWinStyle); + DDX_Check(pDX, IDC_FIXPARENTWIN, cTarget->m_FixParentWin); + DDX_Check(pDX, IDC_MODALSTYLE, cTarget->m_ModalStyle); + DDX_Check(pDX, IDC_KEEPASPECTRATIO, cTarget->m_KeepAspectRatio); + DDX_Check(pDX, IDC_FORCEWINRESIZE, cTarget->m_ForceWinResize); + DDX_Check(pDX, IDC_HIDEMULTIMONITOR, cTarget->m_HideMultiMonitor); + DDX_Check(pDX, IDC_WALLPAPERMODE, cTarget->m_WallpaperMode); + DDX_Check(pDX, IDC_HOOKCHILDWIN, cTarget->m_HookChildWin); + DDX_Check(pDX, IDC_RECOVERSCREENMODE, cTarget->m_RecoverScreenMode); + DDX_Check(pDX, IDC_REFRESHONRESIZE, cTarget->m_RefreshOnResize); + DDX_Check(pDX, IDC_INIT8BPP, cTarget->m_Init8BPP); + DDX_Check(pDX, IDC_INIT16BPP, cTarget->m_Init16BPP); +} + +BOOL CTabWindow::OnInitDialog() +{ + + AfxEnableControlContainer(); + CDialog::OnInitDialog(); + return TRUE; +} + + +BEGIN_MESSAGE_MAP(CTabWindow, CDialog) + //{{AFX_MSG_MAP(CTabWindow) + // NOTE: the ClassWizard will add message map macros here + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CTabWindow message handlers diff --git a/host/TabWindow.h b/host/TabWindow.h new file mode 100644 index 0000000..b43de83 --- /dev/null +++ b/host/TabWindow.h @@ -0,0 +1,48 @@ +#if !defined(AFX_TABWINDOW_H__798A9124_C906_446C_822D_322B5AB6C4C4__INCLUDED_) +#define AFX_TABWINDOW_H__798A9124_C906_446C_822D_322B5AB6C4C4__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// TabTiming.h : header file +// +#include "resource.h" + +///////////////////////////////////////////////////////////////////////////// +// CTabWindow dialog + +class CTabWindow : public CDialog +{ +// Construction +public: + CTabWindow(CWnd* pParent = NULL); // standard constructor + BOOL OnInitDialog(); + +// Dialog Data + //{{AFX_DATA(CTabWindow) + enum { IDD = IDD_TAB_WINDOW }; + // NOTE: the ClassWizard will add data members here + //}}AFX_DATA + + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CTabWindow) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + + // Generated message map functions + //{{AFX_MSG(CTabWindow) + // NOTE: the ClassWizard will add member functions here + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif \ No newline at end of file diff --git a/host/TargetDlg.cpp b/host/TargetDlg.cpp index 44c8e3b..ee343f7 100644 --- a/host/TargetDlg.cpp +++ b/host/TargetDlg.cpp @@ -16,7 +16,6 @@ static char THIS_FILE[] = __FILE__; ///////////////////////////////////////////////////////////////////////////// // CTargetDlg Dialog - CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/) : CDialog(CTargetDlg::IDD, pParent) { @@ -35,7 +34,11 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/) m_DXProxed = FALSE; m_HandleDC = FALSE; m_HandleExceptions = FALSE; + m_SuppressIME = FALSE; + m_LimitResources = FALSE; m_UnNotify = FALSE; + m_Windowize = TRUE; + m_NoBanner = FALSE; m_FilePath = _T(""); m_Module = _T(""); m_SaveLoad = FALSE; @@ -101,408 +104,43 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/) } - - -//void TSCombo::OnEnable(BOOL bEnable) -//{ -// CComboBox::OnEnable(bEnable); -// -// // Get edit control which happens to be the first child window -// CEdit* pEdit = (CEdit*)GetWindow(GW_CHILD); -// -// // Always have the edit box enabled -// pEdit->EnableWindow(TRUE); -// -// // Set read only is combo box is disabled -// pEdit->SetReadOnly(!bEnable); -//} - -static struct {char bMajor; char bMinor; char *sName;} WinVersions[6]= -{ - {5, 0, "Windows 2000"}, - {5, 1, "Windows XP"}, - {5, 2, "Windows Server 2003"}, - {6, 0, "Windows Vista"}, - {6, 1, "Windows 7"}, - {6, 2, "Windows 8"} -}; - BOOL CTargetDlg::OnInitDialog() { - - CListBox *List; + AfxEnableControlContainer(); CDialog::OnInitDialog(); - int i; - extern char *GetTSCaption(int); - List=(CListBox *)this->GetDlgItem(IDC_LISTTS); - List->ResetContent(); - for(i=-8; i<=8; i++) List->AddString(GetTSCaption(i)); - List->SetCurSel(m_InitTS); - List=(CListBox *)this->GetDlgItem(IDC_LISTFAKE); - List->ResetContent(); - for(i=0; i<6; i++) List->AddString(WinVersions[i].sName); - List->SetCurSel(m_FakeVersion); + m_tabdxTabCtrl.InsertItem(0, _T("Main")); + m_tabdxTabCtrl.InsertItem(1, _T("Window")); + m_tabdxTabCtrl.InsertItem(2, _T("Mouse")); + m_tabdxTabCtrl.InsertItem(3, _T("Timing")); + m_tabdxTabCtrl.InsertItem(4, _T("Log")); + m_tabdxTabCtrl.InsertItem(5, _T("DirectX")); + m_tabdxTabCtrl.InsertItem(6, _T("OpenGL")); + m_tabdxTabCtrl.InsertItem(7, _T("GDI")); + m_tabdxTabCtrl.InsertItem(8, _T("Compat")); + m_tabdxTabCtrl.Init(); return TRUE; } +void CTargetDlg::OnOK() +{ + m_tabdxTabCtrl.OnOK(); + CDialog::OnOK(); +} + void CTargetDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CTargetDlg) - DDX_Control(pDX, IDC_FILE, m_File); - DDX_Radio(pDX, IDC_AUTO, m_DXVersion); - DDX_Check(pDX, IDC_EMULATESURFACE, m_EmulateSurface); - DDX_Check(pDX, IDC_NOEMULATESURFACE, m_NoEmulateSurface); - DDX_Check(pDX, IDC_EMULATEBUFFER, m_EmulateBuffer); - DDX_Check(pDX, IDC_HOOKDI, m_HookDI); - DDX_Check(pDX, IDC_MODIFYMOUSE, m_ModifyMouse); - DDX_Check(pDX, IDC_OUTTRACE, m_OutTrace); - DDX_Check(pDX, IDC_OUTDEBUG, m_OutDebug); - DDX_Check(pDX, IDC_CURSORTRACE, m_CursorTrace); - DDX_Check(pDX, IDC_LOGENABLED, m_LogEnabled); - DDX_Check(pDX, IDC_OUTWINMESSAGES, m_OutWinMessages); - DDX_Check(pDX, IDC_OUTDXTRACE, m_OutDXTrace); - DDX_Check(pDX, IDC_DXPROXED, m_DXProxed); - DDX_Check(pDX, IDC_ASSERT, m_AssertDialog); - DDX_Check(pDX, IDC_IMPORTTABLE, m_ImportTable); - DDX_Check(pDX, IDC_HANDLEDC, m_HandleDC); - DDX_Check(pDX, IDC_HANDLEEXCEPTIONS, m_HandleExceptions); - DDX_Check(pDX, IDC_UNNOTIFY, m_UnNotify); - DDX_Text(pDX, IDC_FILE, m_FilePath); - DDX_Text(pDX, IDC_MODULE, m_Module); - DDX_Text(pDX, IDC_TITLE, m_Title); - DDX_Check(pDX, IDC_SAVELOAD, m_SaveLoad); - DDX_Check(pDX, IDC_SLOW, m_SlowDown); - DDX_Check(pDX, IDC_BLITFROMBACKBUFFER, m_BlitFromBackBuffer); - DDX_Check(pDX, IDC_SUPPRESSCLIPPING, m_SuppressClipping); - DDX_Check(pDX, IDC_DISABLEGAMMARAMP, m_DisableGammaRamp); - DDX_Check(pDX, IDC_AUTOREFRESH, m_AutoRefresh); - DDX_Check(pDX, IDC_FIXWINFRAME, m_FixWinFrame); - DDX_Check(pDX, IDC_HIDEHWCURSOR, m_HideHwCursor); - DDX_Check(pDX, IDC_SHOWHWCURSOR, m_ShowHwCursor); - DDX_Check(pDX, IDC_ENABLECLIPPING, m_EnableClipping); - DDX_Check(pDX, IDC_CLIPCURSOR, m_CursorClipping); - DDX_Check(pDX, IDC_VIDEOTOSYSTEMMEM, m_VideoToSystemMem); - DDX_Check(pDX, IDC_FIXTEXTOUT, m_FixTextOut); - DDX_Check(pDX, IDC_KEEPCURSORWITHIN, m_KeepCursorWithin); - DDX_Check(pDX, IDC_KEEPCURSORFIXED, m_KeepCursorFixed); - DDX_Check(pDX, IDC_USERGB565, m_UseRGB565); - DDX_Check(pDX, IDC_SUPPRESSDXERRORS, m_SuppressDXErrors); - DDX_Check(pDX, IDC_PREVENTMAXIMIZE, m_PreventMaximize); - DDX_Check(pDX, IDC_CLIENTREMAPPING, m_ClientRemapping); - DDX_Check(pDX, IDC_MAPGDITOPRIMARY, m_MapGDIToPrimary); - DDX_Check(pDX, IDC_LOCKWINPOS, m_LockWinPos); - DDX_Check(pDX, IDC_LOCKWINSTYLE, m_LockWinStyle); - DDX_Check(pDX, IDC_FIXPARENTWIN, m_FixParentWin); - DDX_Check(pDX, IDC_MODALSTYLE, m_ModalStyle); - DDX_Check(pDX, IDC_KEEPASPECTRATIO, m_KeepAspectRatio); - DDX_Check(pDX, IDC_FORCEWINRESIZE, m_ForceWinResize); - DDX_Check(pDX, IDC_HOOKGDI, m_HookGDI); - DDX_Check(pDX, IDC_HIDEMULTIMONITOR, m_HideMultiMonitor); - DDX_Check(pDX, IDC_WALLPAPERMODE, m_WallpaperMode); - DDX_Check(pDX, IDC_HOOKCHILDWIN, m_HookChildWin); - DDX_Check(pDX, IDC_MESSAGEPROC, m_MessageProc); - DDX_Check(pDX, IDC_FIXNCHITTEST, m_FixNCHITTEST); - DDX_Check(pDX, IDC_RECOVERSCREENMODE, m_RecoverScreenMode); - DDX_Check(pDX, IDC_REFRESHONRESIZE, m_RefreshOnResize); - DDX_Check(pDX, IDC_INIT8BPP, m_Init8BPP); - DDX_Check(pDX, IDC_INIT16BPP, m_Init16BPP); - DDX_Check(pDX, IDC_BACKBUFATTACH, m_BackBufAttach); - DDX_Check(pDX, IDC_HANDLEALTF4, m_HandleAltF4); - DDX_Check(pDX, IDC_LIMITFPS, m_LimitFPS); - DDX_Check(pDX, IDC_SKIPFPS, m_SkipFPS); - DDX_Check(pDX, IDC_SHOWFPS, m_ShowFPS); - DDX_Check(pDX, IDC_SHOWFPSOVERLAY, m_ShowFPSOverlay); - DDX_Check(pDX, IDC_TIMESTRETCH, m_TimeStretch); - DDX_Check(pDX, IDC_HOOKOPENGL, m_HookOpenGL); - DDX_Check(pDX, IDC_FAKEVERSION, m_FakeVersion); - DDX_Check(pDX, IDC_FULLRECTBLT, m_FullRectBlt); - DDX_Check(pDX, IDC_NOPALETTEUPDATE, m_NoPaletteUpdate); - DDX_Text(pDX, IDC_INITX, m_InitX); - DDX_Text(pDX, IDC_INITY, m_InitY); - DDX_Text(pDX, IDC_MAXX, m_MaxX); - DDX_Text(pDX, IDC_MAXY, m_MaxY); - DDX_Text(pDX, IDC_MINX, m_MinX); - DDX_Text(pDX, IDC_MINY, m_MinY); - DDX_Text(pDX, IDC_POSX, m_PosX); - DDX_Text(pDX, IDC_POSY, m_PosY); - DDX_Text(pDX, IDC_SIZX, m_SizX); - DDX_Text(pDX, IDC_SIZY, m_SizY); - DDX_Text(pDX, IDC_MAXFPS, m_MaxFPS); - //DDX_Text(pDX, IDC_INITTS, m_InitTS); - DDX_LBIndex(pDX, IDC_LISTTS, m_InitTS); - DDX_LBIndex(pDX, IDC_LISTFAKE, m_FakeVersionId); + DDX_Control(pDX, IDC_TABPANEL, m_tabdxTabCtrl); //}}AFX_DATA_MAP } - BEGIN_MESSAGE_MAP(CTargetDlg, CDialog) //{{AFX_MSG_MAP(CTargetDlg) - ON_BN_CLICKED(IDC_OPEN, OnOpen) //}}AFX_MSG_MAP - ON_BN_CLICKED(IDC_UNNOTIFY, &CTargetDlg::OnBnClickedUnnotify) - ON_BN_CLICKED(IDC_EMULATEBUFFER, &CTargetDlg::OnBnClickedEmulateBuffer) - ON_BN_CLICKED(IDC_EMULATESURFACE, &CTargetDlg::OnBnClickedEmulateSurface) - ON_BN_CLICKED(IDC_NOEMULATESURFACE, &CTargetDlg::OnBnClickedNoEmulateSurface) - ON_BN_CLICKED(IDC_OUTTRACE, &CTargetDlg::OnBnClickedOuttrace) - ON_BN_CLICKED(IDC_LOGENABLED, &CTargetDlg::OnBnClickedLogEnabled) - ON_BN_CLICKED(IDC_HANDLEDC, &CTargetDlg::OnBnClickedHandleDC) - ON_BN_CLICKED(IDC_HANDLEEXCEPTIONS, &CTargetDlg::OnBnClickedHandleExceptions) - //ON_BN_CLICKED(IDC_TRANSPARENTWIN, &CTargetDlg::OnBnClickedBlitFromBackBuffer) - //ON_BN_CLICKED(IDC_TRANSPARENTALL, &CTargetDlg::OnBnClickedTransparentAll) - //ON_BN_CLICKED(IDC_ABSOLUTECOORD, &CTargetDlg::OnBnClickedAbsolutecoord) - ON_BN_CLICKED(IDC_AUTOREFRESH, &CTargetDlg::OnBnClickedAutorefresh) - ON_BN_CLICKED(IDC_FIXWINFRAME, &CTargetDlg::OnBnClickedFixWinFrame) - //ON_BN_CLICKED(IDC_HIDEHWCURSOR, &CTargetDlg::OnBnClickedHideHwCursor) - ON_BN_CLICKED(IDC_ENABLECLIPPING, &CTargetDlg::OnBnClickedEnableClipping) - ON_BN_CLICKED(IDC_VIDEOTOSYSTEMMEM, &CTargetDlg::OnBnClickedHandleCursorPos) - ON_BN_CLICKED(IDC_FIXTEXTOUT, &CTargetDlg::OnBnClickedFixTextOut) - ON_BN_CLICKED(IDC_KEEPCURSORWITHIN, &CTargetDlg::OnBnClickedKeepCursorWithin) - ON_BN_CLICKED(IDC_KEEPCURSORFIXED, &CTargetDlg::OnBnClickedKeepCursorFixed) - ON_BN_CLICKED(IDC_USERGB565, &CTargetDlg::OnBnClickedUseRGB565) - ON_BN_CLICKED(IDC_SUPPRESSDXERRORS, &CTargetDlg::OnBnClickedCursorScaling) - ON_BN_CLICKED(IDC_PREVENTMAXIMIZE, &CTargetDlg::OnBnClickedPreventMaximize) - ON_BN_CLICKED(IDC_CLIENTREMAPPING, &CTargetDlg::OnBnClickedClientRemapping) - ON_BN_CLICKED(IDC_MAPGDITOPRIMARY, &CTargetDlg::OnBnClickedMapGDIToPrimary) - ON_BN_CLICKED(IDC_LOCKWINPOS, &CTargetDlg::OnBnClickedLockWinPos) - ON_BN_CLICKED(IDC_LOCKWINSTYLE, &CTargetDlg::OnBnClickedLockWinStyle) - ON_BN_CLICKED(IDC_HOOKCHILDWIN, &CTargetDlg::OnBnClickedHookChildWin) - ON_BN_CLICKED(IDC_MESSAGEPROC, &CTargetDlg::OnBnClickedMessageProc) - ON_BN_CLICKED(IDC_RECOVERSCREENMODE, &CTargetDlg::OnBnClickedRecoverScreenMode) - ON_BN_CLICKED(IDC_REFRESHONRESIZE, &CTargetDlg::OnBnClickedRefreshOnResize) - ON_BN_CLICKED(IDC_INIT8BPP, &CTargetDlg::OnBnClickedInit8BPP) - ON_BN_CLICKED(IDC_INIT16BPP, &CTargetDlg::OnBnClickedInit16BPP) - ON_BN_CLICKED(IDC_BACKBUFATTACH, &CTargetDlg::OnBnClickedBackBufAttach) - ON_BN_CLICKED(IDC_HANDLEALTF4, &CTargetDlg::OnBnClickedHandleAltF4) - ON_EN_CHANGE(IDC_MAXX, &CTargetDlg::OnEnChangeMaxx) - ON_EN_CHANGE(IDC_INITX, &CTargetDlg::OnEnChangeInitx) + END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CTargetDlg Message Handler - -void CTargetDlg::OnOpen() -{ - // TODO: Please add your control notification handler code here - char path[MAX_PATH]; - m_File.GetWindowText(path, MAX_PATH); - CFileDialog dlg( TRUE, "*.*", path, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, - "Program (*.exe)|*.exe|All Files (*.*)|*.*||", this); - if( dlg.DoModal() == IDOK) m_File.SetWindowText(dlg.GetPathName()); -} - -void CTargetDlg::OnBnClickedUnnotify() -{ - // TODO: Add your control notification handler code here -} - -void CTargetDlg::OnBnClickedEmulateSurface() -{ - // TODO: Add your control notification handler code here -} - -void CTargetDlg::OnBnClickedNoEmulateSurface() -{ - // TODO: Add your control notification handler code here -} - -void CTargetDlg::OnBnClickedEmulateBuffer() -{ - // TODO: Add your control notification handler code here -} -void CTargetDlg::OnBnClickedOuttrace() -{ - // TODO: Add your control notification handler code here -} -void CTargetDlg::OnBnClickedLogEnabled() -{ - // TODO: Add your control notification handler code here -} -void CTargetDlg::OnBnClickedHandleDC() -{ - // TODO: Add your control notification handler code here -} - -void CTargetDlg::OnBnClickedHandleExceptions() -{ - // TODO: Add your control notification handler code here -} -//void CTargetDlg::OnBnClickedBlitFromBackBuffer() -//{ -// // TODO: Add your control notification handler code here -//} -// -//void CTargetDlg::OnBnClickedTransparentAll() -//{ -// // TODO: Add your control notification handler code here -//} - -void CTargetDlg::OnEnChangeFile2() -{ - // TODO: If this is a RICHEDIT control, the control will not - // send this notification unless you override the CDialog::OnInitDialog() - // function and call CRichEditCtrl().SetEventMask() - // with the ENM_CHANGE flag ORed into the mask. - - // TODO: Add your control notification handler code here -} - -//void CTargetDlg::OnBnClickedAbsolutecoord() -//{ -// // TODO: Add your control notification handler code here -//} - -void CTargetDlg::OnBnClickedAutorefresh() -{ - // TODO: Add your control notification handler code here -} - -void CTargetDlg::OnBnClickedFixWinFrame() -{ - // TODO: Add your control notification handler code here -} - -//void CTargetDlg::OnBnClickedHideHwCursor() -//{ -// // TODO: Add your control notification handler code here -//} - -void CTargetDlg::OnBnClickedEnableClipping() -{ - // TODO: Add your control notification handler code here -} - -//void CTargetDlg::OnBnClickedMouseToScreen() -//{ -// // TODO: Add your control notification handler code here -//} - -void CTargetDlg::OnBnClickedHandleCursorPos() -{ - // TODO: Add your control notification handler code here -} - -void CTargetDlg::OnBnClickedFixTextOut() -{ - // TODO: Add your control notification handler code here -} - -void CTargetDlg::OnBnClickedKeepCursorWithin() -{ - // TODO: Add your control notification handler code here -} - -void CTargetDlg::OnBnClickedKeepCursorFixed() -{ - // TODO: Add your control notification handler code here -} - -//void CTargetDlg::OnBnClickedNullRectBlit() -//{ -// // TODO: Add your control notification handler code here -//} - -void CTargetDlg::OnBnClickedUseRGB565() -{ - // TODO: Add your control notification handler code here -} - -void CTargetDlg::OnBnClickedCursorScaling() -{ - // TODO: Add your control notification handler code here -} - -void CTargetDlg::OnBnClickedPreventMaximize() -{ - // TODO: Add your control notification handler code here -} - -//void CTargetDlg::OnBnClickedResetPrimary() -//{ -// // TODO: Add your control notification handler code here -//} - -void CTargetDlg::OnBnClickedClientRemapping() -{ - // TODO: Add your control notification handler code here -} - -void CTargetDlg::OnBnClickedMapGDIToPrimary() -{ - // TODO: Add your control notification handler code here -} - -void CTargetDlg::OnBnClickedLockWinPos() -{ - // TODO: Add your control notification handler code here -} - -void CTargetDlg::OnBnClickedLockWinStyle() -{ - // TODO: Add your control notification handler code here -} - -void CTargetDlg::OnBnClickedHookChildWin() -{ - // TODO: Add your control notification handler code here -} - -void CTargetDlg::OnBnClickedMessageProc() -{ - // TODO: Add your control notification handler code here -} - -void CTargetDlg::OnBnClickedRecoverScreenMode() -{ - // TODO: Add your control notification handler code here -} - -void CTargetDlg::OnBnClickedRefreshOnResize() -{ - // TODO: Add your control notification handler code here -} - -void CTargetDlg::OnBnClickedInit8BPP() -{ - // TODO: Add your control notification handler code here -} - -void CTargetDlg::OnBnClickedInit16BPP() -{ - // TODO: Add your control notification handler code here -} - -void CTargetDlg::OnBnClickedBackBufAttach() -{ - // TODO: Add your control notification handler code here -} - -void CTargetDlg::OnBnClickedHandleAltF4() -{ - // TODO: Add your control notification handler code here -} - -//void CTargetDlg::OnBnClickedEmulateModeX() -//{ -// // TODO: Add your control notification handler code here -//} - -void CTargetDlg::OnEnChangeMaxx() -{ - // TODO: If this is a RICHEDIT control, the control will not - // send this notification unless you override the CDialog::OnInitDialog() - // function and call CRichEditCtrl().SetEventMask() - // with the ENM_CHANGE flag ORed into the mask. - - // TODO: Add your control notification handler code here -} - -void CTargetDlg::OnEnChangeInitx() -{ - // TODO: If this is a RICHEDIT control, the control will not - // send this notification unless you override the CDialog::OnInitDialog() - // function and call CRichEditCtrl().SetEventMask() - // with the ENM_CHANGE flag ORed into the mask. - - // TODO: Add your control notification handler code here -} diff --git a/host/TargetDlg.h b/host/TargetDlg.h index c6619ae..629ffb9 100644 --- a/host/TargetDlg.h +++ b/host/TargetDlg.h @@ -6,7 +6,7 @@ #endif // _MSC_VER > 1000 // TargetDlg.h : Header file // - +#include "dxTabCtrl.h" ///////////////////////////////////////////////////////////////////////////// // CTargetDlg Dialog @@ -16,10 +16,12 @@ class CTargetDlg : public CDialog // Constructor public: CTargetDlg(CWnd* pParent = NULL); // Standard constructor + void OnOK(); // Dialog Data //{{AFX_DATA(CTargetDlg) enum { IDD = IDD_TARGET }; + CDXTabCtrl m_tabdxTabCtrl; CEdit m_File; int m_DXVersion; BOOL m_EmulateSurface; @@ -38,6 +40,8 @@ public: BOOL m_ImportTable; BOOL m_HandleDC; BOOL m_UnNotify; + BOOL m_Windowize; + BOOL m_NoBanner; CString m_FilePath; CString m_Module; CString m_Title; @@ -90,6 +94,8 @@ public: BOOL m_FakeVersion; BOOL m_FullRectBlt; BOOL m_NoPaletteUpdate; + BOOL m_LimitResources; + BOOL m_SuppressIME; int m_InitX; int m_InitY; int m_MaxX; @@ -115,51 +121,17 @@ public: // Implementation protected: - // Generated message map functions //{{AFX_MSG(CTargetDlg) afx_msg void OnOpen(); //}}AFX_MSG DECLARE_MESSAGE_MAP() -public: - afx_msg void OnBnClickedUnnotify(); - afx_msg void OnBnClickedEmulateBuffer(); - afx_msg void OnBnClickedEmulateSurface(); - afx_msg void OnBnClickedNoEmulateSurface(); - afx_msg void OnBnClickedOuttrace(); - afx_msg void OnBnClickedLogEnabled(); - afx_msg void OnBnClickedHandleDC(); - afx_msg void OnEnChangeFile2(); - afx_msg void OnBnClickedAutorefresh(); - afx_msg void OnBnClickedFixWinFrame(); - //afx_msg void OnBnClickedHideHwCursor(); - afx_msg void OnBnClickedEnableClipping(); - afx_msg void OnBnClickedHandleCursorPos(); - afx_msg void OnBnClickedFixTextOut(); - afx_msg void OnBnClickedKeepCursorWithin(); - afx_msg void OnBnClickedKeepCursorFixed(); - afx_msg void OnBnClickedUseRGB565(); - afx_msg void OnBnClickedCursorScaling(); - afx_msg void OnBnClickedPreventMaximize(); - afx_msg void OnBnClickedClientRemapping(); - afx_msg void OnBnClickedMapGDIToPrimary(); - afx_msg void OnBnClickedLockWinPos(); - afx_msg void OnBnClickedLockWinStyle(); - afx_msg void OnBnClickedHookChildWin(); - afx_msg void OnBnClickedMessageProc(); - afx_msg void OnBnClickedRecoverScreenMode(); - afx_msg void OnBnClickedRefreshOnResize(); - afx_msg void OnBnClickedInit8BPP(); - afx_msg void OnBnClickedInit16BPP(); - afx_msg void OnBnClickedBackBufAttach(); - afx_msg void OnBnClickedHandleAltF4(); - afx_msg void OnBnClickedHandleExceptions(); - afx_msg void OnEnChangeMaxx(); - afx_msg void OnEnChangeInitx(); + public: virtual BOOL OnInitDialog(); + }; //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ Will insert additional declarations immediately before the previous line. -#endif // !defined(AFX_TARGETDLG_H__683E529D_7282_484C_A403_367A6A90CC57__INCLUDED_) +#endif \ No newline at end of file diff --git a/host/dxTabCtrl.cpp b/host/dxTabCtrl.cpp new file mode 100644 index 0000000..593e662 --- /dev/null +++ b/host/dxTabCtrl.cpp @@ -0,0 +1,131 @@ +// dxTabCtrl.cpp : implementation file +// +///////////////////////////////////////////////////// +// This class is provided as is and Ben Hill takes no +// responsibility for any loss of any kind in connection +// to this code. +///////////////////////////////////////////////////// +// Is is meant purely as a educational tool and may +// contain bugs. +///////////////////////////////////////////////////// +// ben@shido.fsnet.co.uk +// http://www.shido.fsnet.co.uk +///////////////////////////////////////////////////// +// Thanks to a mystery poster in the C++ forum on +// www.codeguru.com I can't find your name to say thanks +// for your Control drawing code. If you are that person +// thank you very much. I have been able to use some of +// you ideas to produce this sample application. +///////////////////////////////////////////////////// + +#include "stdafx.h" +#include "dxTabCtrl.h" + +#include "TabProgram.h" +#include "TabLogs.h" +#include "TabDirectX.h" +#include "TabMouse.h" +#include "TabTiming.h" +#include "TabWindow.h" +#include "TabOpenGL.h" +#include "TabCompat.h" +#include "TabGDI.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CDXTabCtrl + +CDXTabCtrl::CDXTabCtrl() +{ + m_tabPages[0]=new CTabProgram; + m_tabPages[1]=new CTabWindow; + m_tabPages[2]=new CTabMouse; + m_tabPages[3]=new CTabTiming; + m_tabPages[4]=new CTabLogs; + m_tabPages[5]=new CTabDirectX; + m_tabPages[6]=new CTabOpenGL; + m_tabPages[7]=new CTabGDI; + m_tabPages[8]=new CTabCompat; + + m_nNumberOfPages=9; +} + +CDXTabCtrl::~CDXTabCtrl() +{ + for(int nCount=0; nCount < m_nNumberOfPages; nCount++){ + delete m_tabPages[nCount]; + } +} + +void CDXTabCtrl::Init() +{ + m_tabCurrent=0; + + m_tabPages[0]->Create(IDD_TAB_PROGRAM, this); + m_tabPages[1]->Create(IDD_TAB_WINDOW, this); + m_tabPages[2]->Create(IDD_TAB_MOUSE, this); + m_tabPages[3]->Create(IDD_TAB_TIMING, this); + m_tabPages[4]->Create(IDD_TAB_LOG, this); + m_tabPages[5]->Create(IDD_TAB_DIRECTX, this); + m_tabPages[6]->Create(IDD_TAB_OPENGL, this); + m_tabPages[7]->Create(IDD_TAB_GDI, this); + m_tabPages[8]->Create(IDD_TAB_COMPAT, this); + + for(int nCount=0; nCount < m_nNumberOfPages; nCount++){ + m_tabPages[nCount]->ShowWindow(nCount ? SW_HIDE:SW_SHOW); + } + + SetRectangle(); +} + +void CDXTabCtrl::SetRectangle() +{ + CRect tabRect, itemRect; + int nX, nY, nXc, nYc; + + GetClientRect(&tabRect); + GetItemRect(0, &itemRect); + + nX=itemRect.left; + nY=itemRect.bottom+1; + nXc=tabRect.right-itemRect.left-1; + nYc=tabRect.bottom-nY-1; + + m_tabPages[0]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_SHOWWINDOW); + for(int nCount=1; nCount < m_nNumberOfPages; nCount++){ + m_tabPages[nCount]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_HIDEWINDOW); + } +} + +BEGIN_MESSAGE_MAP(CDXTabCtrl, CTabCtrl) + //{{AFX_MSG_MAP(CDXTabCtrl) + ON_WM_LBUTTONDOWN() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CDXTabCtrl message handlers + +void CDXTabCtrl::OnLButtonDown(UINT nFlags, CPoint point) +{ + CTabCtrl::OnLButtonDown(nFlags, point); + + if(m_tabCurrent != GetCurFocus()){ + m_tabPages[m_tabCurrent]->ShowWindow(SW_HIDE); + m_tabCurrent=GetCurFocus(); + m_tabPages[m_tabCurrent]->ShowWindow(SW_SHOW); + m_tabPages[m_tabCurrent]->SetFocus(); + } +} + +void CDXTabCtrl::OnOK() +{ + for(int nCount=0; nCount < m_nNumberOfPages; nCount++){ + m_tabPages[nCount]->UpdateData(TRUE); + } +} diff --git a/host/dxTabCtrl.h b/host/dxTabCtrl.h new file mode 100644 index 0000000..683399f --- /dev/null +++ b/host/dxTabCtrl.h @@ -0,0 +1,56 @@ +#if !defined(AFX_MYTABCTRL_H__F3E8650F_019C_479F_9E0F_60FE1181F49F__INCLUDED_) +#define AFX_MYTABCTRL_H__F3E8650F_019C_479F_9E0F_60FE1181F49F__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// dxTabCtrl.h : header file +// +#include "resource.h" + +///////////////////////////////////////////////////////////////////////////// +// CDXTabCtrl window + +class CDXTabCtrl : public CTabCtrl +{ +// Construction +public: + CDXTabCtrl(); + CDialog *m_tabPages[9]; + int m_tabCurrent; + int m_nNumberOfPages; + enum { IDD = IDC_TABPANEL }; + +// Attributes +public: + +// Operations +public: + void Init(); + void SetRectangle(); + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CDXTabCtrl) + //}}AFX_VIRTUAL + +// Implementation +public: + virtual ~CDXTabCtrl(); + void OnOK(); + + // Generated message map functions +protected: + //{{AFX_MSG(CDXTabCtrl) + afx_msg void OnLButtonDown(UINT nFlags, CPoint point); + //}}AFX_MSG + + DECLARE_MESSAGE_MAP() +}; + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_MYTABCTRL_H__F3E8650F_019C_479F_9E0F_60FE1181F49F__INCLUDED_) diff --git a/host/dxwndhost.aps b/host/dxwndhost.aps index a3169e1a0304342af5cf9da0d43a0a0dee685883..15035d3769f6f4209d0dcda45fc557b6d29aaa89 100644 GIT binary patch delta 11751 zcmcgyd6-niwXb^zW?!AXXQrotS%4X!yJrVkn(iK^p{Ki zI5C$PWJ!#YM4yS1e9zDLP=psjKsH6TkEqF)Xp$G@X%e>w?^ji~Z+A13e{<)XuDZW- zs_N9KQ|Ht@_wKozeCW&MU9S8?c9ks{J*>Tt9(TZ5gIGUjnf*z2DJsE(CIA(yAa?F@ATu4m>b-0trTx&bz@@+cVc zw0nHKhel?JqFo-J%ijgGi49^s##rw5KxjJ9W;Qs=D?l627B(b``U7s?B(Fd#qNvl~ z9&m)1t}+@( z)(otU)x=>f!0K78#C-mU-s-FkY=i_`Jzn<+X0u}0krLq(}+jycW`ws`XHU5 zP=~{b)w0^^Sfd1|xjTX$KOfvy&zk5!LS9d^qy!z)++M%K#YqjUMS>omhueVF*2qRj z5iX{!iH(s6)?TnQvpWqyaI~L1*&2 zI=x(admVE~DCqP1XXwyG2~F{MVIfv~J#$Jx8jaU8QKBx1@`dkkw|2OLZ5(f4Zi%;g za=Kxtt=JTz-$vHTXx_>~brPeED~pG)?gfu^FM0n?N}{V9zM$L9m%FZ+O_N~A6A~J)Yhhgy33~Y!w$@u&w*;JCPr%vP5%hCg zthcf066S^y;_Fv$XEW&O#FFBflF;Vxxx8+NH`H3ssr76Yol7im&z97HKgcbkzLCu_ z0B#xeO)M;dpl62QXl8Q_Kyb9Mc~qNJWSTGGc6Tu7nB>N!oM_)*V|Ou{yT+t0V6Eyd5mu>=n9}Gb%4esq8Nt@_!PQfm7ghCD{Hxl@`g_7b32HhQex!~Xy(fdhx>b;Dz z*XAkrQCf0|X|d$;`khl?O2N={p+mT*B{U(qsAy?~Jjv~IO!NwsH`>`UT9I5(yj&8c zMk8z0SjSe-{^UaSenx*=TcWOHl(nv`V3p+M%L;b@e`{@QVyo$s)B>8jF0p8hB)9ur z4zD3Z3tLNfrj#sRrwajF31RO3&JL%WFISU|t(T-$KOo3&Xr{@|HuTpDPSy(A1Ckc( z48RhDL66u!z#pWYDWzQx>79DIea<$RhC9gh*Hq8G71O2M@l6eEqu$pPPe8{S;TMF* z4z~HbbgYSOA|eg1&M>xM2m11@-UK29ThT++OrV2CTWxtZ;ZBC@k)_5>s4f!v;5 zl7c`UaQNKZ?X_6hcO@vJt+eSD8`~{WpMRpm=M!Va$<7nmT(E7XNz!a=9Uw zTR?X9q<|bQm$wW^OcP*7r%&8Bu|48G5CNLm4G8{DjGzY80(>(4jepZ3(%}s2d;0!r}Q^Fz&aI}T(XLRIYOTz&{ z=LLaJJ1hf)z+2c00(W&g0)eo*+Y{oj&C33R(fwO zWtY!|nF-L&eo2S7mMSmN)vXq#m%iCrr2LBfnfdA~a6HRO6YAJ+XltfLeU*{vfsz3* zum7TN7MCiAdw-ufetd6*@061Gzr~DIFl||dYNouvJ&HJd_U;Z$QDl|=K6Q^?`$@-( zdTmMYFM4fxXu4i|KQzFM6;b%^clewzb5%G3!|Eqea8{LMR?jk`S)=uvON{tJ;Q z4vcm*i9hl7e>naNqZ?gidE89cM+y9d2!rLPj#~*dXqq`m9MnGMbvK>suI(|-X`cvY zBYd{4cE_aBqL(f2r9acM4~EV)#atF}7HF;D%J&}Ub^C)j!t~z`G z-AK)&21v3KGT#D8|a$o#!S-${mgt*D1!$Ogo_Er@J+_> z(g^#vrrbqhcuWvn@)WGnb6rDeNp}TRP9I4RPcI)7ce1Gv0-`~{(Sh|vGge9W�xB zX5PGFdjT&zp04C+^Lsr)OtN2d4atemlEOub-gmIn{doEm~;QPttR9bnmB}qCd{5 z)Ok)*ML1G_o8}w!GjzbHpQYTe0^}UFcVoD|B$t z-+KD@s(pPHNBa5_j^4gIIo4;7aIlZ%0`wwZ5K*tR70%hm9su@TY7WLNPVdfpTNU*q zA6>j}u(FrFyl;Y1K!MD>Uf<#bWnd9v&k&lnWM5%1hV+D8-5xx_FdH6|Kv9^9(w0^# zC1hJ#ad)ZUz^Mn1f%SMG=k&4&hVvYrcLZjRV0FOoe9rmGBN!fx@Bkz*O9X?=cm@*K zAbMqKg)*3ax722fs310vBbd_BFg}+f;0zwWdmtE(`jQ@T?|hjAPo_bNCU*oO%OL0u zjIWoVWE&LSx9~+1lpKR1SBd9&dIaT;c#2H+#K;vnmSa%`f3CqFlkgFgJcAOG^oi*y zlJpVG`OHDKW!vWQSvtdU`5r-!!)4B=FD~;weQ}xlkvNquFDj6|iQ|OG_XtutOVeOHl z8;25+$Pw+hbvVN@$()$+I4aUL`U=WUqDh??R)B(2Um=~-NbY!ISsmS+6&ap*P(I2b z$s=HHN5+v0-1=RdQ+A%965(Mx*fwe7YItAX8JSWFb*w#_!WBU1Oz!`p>__ z2!iMpmxB?cd@`>ZgMJPS%uCXFdD4ZptxClzJ-Mn}$)QgM77r4%jL1sFWmqJM1|=3# z@@iA9WQs|u2)bO1XktZxS>#)7!r=F=wqvlpt4n$$n;v?RCxJF2o`Y{PXE>TWiRl)g z$d2fXsgGskP+~Zd{}7z|VoFYKe0W~>y1MAjq~yVZU5*xeC=&S?c0KRKU%wYCgB9!M^b9b_PxVo~ytOBrmEW@Q|VMJh$ekwKrP<|ChyhFL9HXTo@6 zQ*;4x=(%-fwEyiobBjK9TslQhj0jKU4EITli0<>~iIkGv>jy5(7i$=IuoU?b!6nVu zI1_@P#|*h)g0XoL(Ll#zb0rd|CF?DiLpkR3qxFN7Y&y2S9y{yH^<~9!3Vg+l1czvo zPop-N!Rgyjg2~>up?#24R=?>B(IS&BZ5WCc$^%99+&Me>yM~w)gay&GPS zDJmHFCaxmKBPB`|&3Q;3N~I+xMb%ETnl z$*sa7y0)!MsiCj7mE+g6-HhLs?PX(Ycx#?xMoXVdv_qO(w2P7g4kVc+t%1*574xoP z^s^!py|8_pTEli17fLZ}D0PPgo!9K(LrmUb!tdQXeyR+otj7nJRP*7CgaVfm>0L2e zHF+O@K^aD0J#JQp^%n0uu1u)p%#h0Cbl{jDb~^Crf+kH|`FwS5qx(ABCE2c%Y0$26 zrIH-G%=n$V%dA#1`em-Z6qU4p*J!1-_sXsgMHxXOc9*In7#%R1l0@IA+wRGwv*si@ ztr4_i_h9h7xO;H<2=!)>}`8FIXUqZ01MMbSE(ji z@p^Vj0ykooqkKV+yQ*~^%G3N3$oN>3}^uS70RIS$FAvg1VrE;rr}L@qTj>^7e1f)vl= zzKy3#@HqXEUiduj;yhI`gF(5taQx?2HWXyp9JqrWgGppk_)KxqD81furZ}Zt)>#p4 zK2w-&ISbhi)EZ>ph~iOKz{8Rge;^lcx-w;C(T!7@ef0 zz+5t6+D^1gJ5ru67{m{{0HqjONvH8gMkQ5Zf2FgLNP%?7Oh#@Ko`}kbw_~+Hc;dq4W#M84UKzC0Hh8 z`}z$VZF*-wdLnc@A3o+5E_&uzb9NFYkciiM^O;S8yWTO;sVlra*ZEpzf}2RE!Z$5> z#@Lcjg%>s{wD`?-^uYov!2W9_<3-06C&tm))1nUx?_;cBU3X$?(pqL0_5E*+FEsko zNAlnqF_op#k#~wI^JGPgF6DroY#peDr$_anWC_ZUv*Y_v<_b#MxiR#R(24A6u|S>g zj1~KEE$(>Fuf5Z^=Z6KQ{AvRv-zn-duR64AWol}s8pvgD;1vt^Nl@lrk1goQVCQfv z0q$U>lZwuhJC~ui@kl2X&*Q$0N7`LH&#c>cY8ii77I&$Em0;pAjZ4S{8iubC`s-|0 z-_GKC;(|YW8_%#<4&fAgHV5+9+X$AK>pZ-?>Xv*U&?~#Nu{jgLumBn%#>`_3ICkR2GH!&CA8r9 z@IC@0z_ag?0{r24b^P|r#-4f*y-j)RcAL+}4*M1;Cr>rqwi~k9Tm;ut`rVna7~R9$ zBgNJJRyjR-KC=(+V!@kxu?3Qs2+0dC+k)9_Exczs65P@+1#vD}j(uT)FXttXPfJl- zgVuMWz5?|n_(ROny)I*O;v&voLx+7Lj))!Uh_ZtqX`Mcz7kw?o|7xM}RkA>x>pLCk zv~tXF|HVN`_3*uRIH)%-+Hg=wf-Ze@3$sbb2Pz@(jDK%b{vy11mzQk)Afi$#{qwys zg^DMh(#G4cG30m;Yjq_*Q#a>DtPlfcQqRTw3`IE@ScK0A%2^YeK+4tJOle1R*mitQ z0uS-kd*+f@J?z1ZEEq=G($j_>&^NBwD8r@8!NFraq&xbiJ1GaBZSj?ybkYHjJ^*t& zBJJeR>H3r$R?UelpI$g$OgB$gfqk4{uX($LEN>6M{bX^!?rhy{%btU8KzPTmoo(8E zF%koEuthj{=3LWlK0601%ZEZP`&=jdx5&o`jHUeqsKxZSVj;7vU5G2z`I z^v#>mah?$9n0Nc~KP7v5w*|dEE9yUfuO0Q5MBRURSk?sS%z}TZ&3%S80pW^jb4XUU z63e;Y;KXvoan^{y#?R(Ea75+~l)RTpu{vrX3;Eq;5zl}2(gd-)`HWUwvJJ_Ao81T> zh=oC`&7#*wk(cAW*LwtmQt1Suw!$%0X*2iJ^ z4guGpI1Ha5;JOrt;VT4O$%qb70rv~6ISxAjtcbBiao|D0xF>=B@jkLkM~7XI6B9zOEne;)ZzDRijUQnV{W)K+{+stvACtJF(=8tyZT zH~!B|XzDl(~{X)O_Hoqx)Lwl-HHLJ6mtfm#_b~_7yMNeoLvZnG*S9 z`1juAkKtx@({XJEFNdC>$=6Ih{E>Of$%r{gGqGlK0p-P?f|Ach=+b0j>HLXc(fJ5n zT2CyUp9>CLjnJhf#n5{g4|>_Zi!eyDieX?p80`8WLYF2MOP>Ha+x{4#OLL2*bEkI5 zpi9$>((wSxH_xR%MLIYjrX6KK=b&%;I6^Or;y`FJdW9({U7a>Ds`gz z@(t}KSM=wfYvyXzobalmXydEZGWGZ!+8hAtu5xW7FZWuteY{-Y&<^u*MTd5sm(6!+ zH+jicYv!RSi?(Xxcp2EP&Ee&&z1l`z{^6jukC&gmq#fqvUyo|ndAa(8c9WNzu4v|A zC|`bG8^_CIH?%n@6LzSo)-wzOg>tohobdYR+F@R9xkJ0o%WkW7lb5v}nt3?N<6E?G zye!(Q&Ee(qFKHWj`SMY1A208`q8;YtrW@LIUY1s9H+i|FLNnK(EUMJT@p5&gHiws= zS85x1IjdUR$IC~DYKM7ws7AZa%el4MOXrRw delta 9169 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 BS*id4 diff --git a/host/dxwndhost.rc b/host/dxwndhost.rc index df43ace..8de255c 100644 --- a/host/dxwndhost.rc +++ b/host/dxwndhost.rc @@ -195,134 +195,14 @@ BEGIN DEFPUSHBUTTON "OK",IDOK,178,7,50,14,WS_GROUP END -IDD_TARGET DIALOGEX 0, 0, 675, 225 +IDD_TARGET DIALOGEX 0, 0, 273, 248 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Target" FONT 9, "Arial", 400, 0, 0x0 BEGIN - EDITTEXT IDC_FILE,7,36,139,12,ES_AUTOHSCROLL - PUSHBUTTON "...",IDC_OPEN,150,38,11,14 - CONTROL "Automatic",IDC_AUTO,"Button",BS_AUTORADIOBUTTON | WS_GROUP,14,84,57,10 - CONTROL "DirectX1~6",IDC_DIRECTX1,"Button",BS_AUTORADIOBUTTON,14,94,59,10 - CONTROL "DirectX7",IDC_DIRECTX7,"Button",BS_AUTORADIOBUTTON,14,104,41,10 - CONTROL "DirectX8",IDC_DIRECTX8,"Button",BS_AUTORADIOBUTTON,14,114,41,10 - CONTROL "DirectX9",IDC_DIRECTX9,"Button",BS_AUTORADIOBUTTON,14,124,40,10 - CONTROL "None/OpenGL",IDC_NODIRECTX,"Button",BS_AUTORADIOBUTTON,14,134,61,10 - CONTROL "Do not notify on task switch",IDC_UNNOTIFY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,306,134,106,10 - CONTROL "None",IDC_NOEMULATESURFACE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,14,158,66,10 - CONTROL "Primary Surface",IDC_EMULATESURFACE,"Button",BS_AUTORADIOBUTTON,14,178,66,10 - CONTROL "Primary Buffer",IDC_EMULATEBUFFER,"Button",BS_AUTORADIOBUTTON,14,168,67,10 - CONTROL "DirectInput Hooking",IDC_HOOKDI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,306,124,83,10 - CONTROL "Correct mouse position",IDC_MODIFYMOUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,306,34,97,10 - CONTROL "DxWnd",IDC_OUTTRACE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,97,114,62,10 - CONTROL "Optimize CPU (DirectX1 - 7)",IDC_SAVELOAD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,306,144,105,10 - DEFPUSHBUTTON "OK",IDOK,629,204,40,14 - PUSHBUTTON "Cancel",IDCANCEL,568,204,40,14 - GROUPBOX "DirectX Version Hook",IDC_STATIC,7,75,77,72,WS_GROUP - LTEXT "DirectInput initial coord. and X,Y range",IDC_STATIC,430,195,125,8 - LTEXT "X",IDC_STATIC,425,208,8,8 - LTEXT "Y",IDC_STATIC,448,208,8,8 - LTEXT "(",IDC_STATIC,473,208,8,8 - LTEXT ",",IDC_STATIC,493,208,8,8 - LTEXT ")-(",IDC_STATIC,512,208,9,8 - LTEXT ",",IDC_STATIC,537,208,8,8 - LTEXT ")",IDC_STATIC,556,208,8,8 - EDITTEXT IDC_INITX,431,206,14,12,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT - EDITTEXT IDC_INITY,453,206,14,12,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT - EDITTEXT IDC_MINX,476,206,14,12,ES_AUTOHSCROLL,WS_EX_RIGHT - EDITTEXT IDC_MINY,497,206,14,12,ES_AUTOHSCROLL,WS_EX_RIGHT - EDITTEXT IDC_MAXX,520,206,14,12,ES_AUTOHSCROLL,WS_EX_RIGHT - EDITTEXT IDC_MAXY,541,206,14,12,ES_AUTOHSCROLL,WS_EX_RIGHT - CONTROL "Handle DC",IDC_HANDLEDC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,180,24,67,10 - EDITTEXT IDC_MODULE,7,60,139,12,ES_AUTOHSCROLL - CONTROL "Auto Primary Surface Refresh",IDC_AUTOREFRESH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,180,34,108,8 - CONTROL "Fix Window Frame Style",IDC_FIXWINFRAME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,433,14,103,9 - CONTROL "Hide Cursor",IDC_HIDEHWCURSOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,306,14,100,9 - CONTROL "Intercept GDI Cursor Clipping",IDC_ENABLECLIPPING, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,306,74,106,9 - LTEXT "Hooked Module:",IDC_STATIC,7,51,66,8 - GROUPBOX "Cursor handling",IDC_STATIC,298,3,120,105 - GROUPBOX "DirectDraw Surface handling",IDC_STATIC,172,3,120,138 - CONTROL "VIDEO->SYSTEM surf. on fail",IDC_VIDEOTOSYSTEMMEM, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,180,54,108,8 - CONTROL "Fix TextOutA placement",IDC_FIXTEXTOUT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,180,164,107,9 - GROUPBOX "Generic",IDC_STATIC,299,111,120,89 - CONTROL "Keep cursor within window",IDC_KEEPCURSORWITHIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,306,54,105,9 - CONTROL "Set 16BPP RGB565 encoding",IDC_USERGB565,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,180,44,108,8 - CONTROL "Suppress DX common errors",IDC_SUPPRESSDXERRORS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,180,64,109,9 - CONTROL "Prevent Win Maximize",IDC_PREVENTMAXIMIZE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,433,24,98,9 - GROUPBOX "Trace",IDC_STATIC,90,75,74,115 - CONTROL "Win Events",IDC_OUTWINMESSAGES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,97,124,62,10 - CONTROL "DirectX ",IDC_OUTDXTRACE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,97,134,62,10 - EDITTEXT IDC_TITLE,7,12,139,12,ES_AUTOHSCROLL - LTEXT "Path:",IDC_STATIC,7,27,66,8 - LTEXT "Name:",IDC_STATIC,7,3,66,8 - CONTROL "Slow down",IDC_SLOW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,306,154,88,10 - CONTROL "Force cursor clipping",IDC_CLIPCURSOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,306,44,107,9 - CONTROL "Remap Client Rect",IDC_CLIENTREMAPPING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,180,74,102,9 - CONTROL "Intercept Alt-F4 key",IDC_HANDLEALTF4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,306,164,93,10 - GROUPBOX "Windows handling",IDC_STATIC,424,3,120,167 - CONTROL "Lock win coordinates",IDC_LOCKWINPOS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,433,34,98,9 - CONTROL "Hook CHILD windows",IDC_HOOKCHILDWIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,433,54,98,9 - LTEXT "Window initial position && size",IDC_STATIC,12,195,98,8 - LTEXT "X",IDC_STATIC,8,208,8,8 - LTEXT "Y",IDC_STATIC,34,208,8,8 - LTEXT "W",IDC_STATIC,57,208,8,8 - LTEXT "H",IDC_STATIC,84,208,8,8 - EDITTEXT IDC_POSX,15,206,16,12,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT - EDITTEXT IDC_POSY,40,206,16,12,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT - EDITTEXT IDC_SIZX,65,206,16,12,ES_AUTOHSCROLL,WS_EX_RIGHT - EDITTEXT IDC_SIZY,90,206,16,12,ES_AUTOHSCROLL,WS_EX_RIGHT - CONTROL "Message processing",IDC_MESSAGEPROC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,306,84,98,9 - CONTROL "Map GDI HDC to Primary DC",IDC_MAPGDITOPRIMARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,180,14,102,9 - CONTROL "Recover screen mode",IDC_RECOVERSCREENMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,433,64,98,9 - CONTROL "Refresh on win resize",IDC_REFRESHONRESIZE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,433,74,98,9 - CONTROL "Make Backbuf attachable",IDC_BACKBUFATTACH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,180,84,102,9 - CONTROL "ddraw Proxy",IDC_DXPROXED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,97,94,62,10 - CONTROL "Assert Dialog",IDC_ASSERT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,97,104,62,10 - CONTROL "Simulate 8BPP desktop",IDC_INIT8BPP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,433,84,98,9 - CONTROL "Simulate 16BPP desktop",IDC_INIT16BPP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,433,94,98,9 - CONTROL "Keep cursor fixed",IDC_KEEPCURSORFIXED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,306,64,105,9 - CONTROL "Lock win style",IDC_LOCKWINSTYLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,433,44,98,9 - CONTROL "Enable Trace",IDC_LOGENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,97,84,62,10 - CONTROL "Cursor/Mouse",IDC_CURSORTRACE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,97,144,62,10 - CONTROL "Import Table",IDC_IMPORTTABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,97,154,62,10 - CONTROL "Handle Exceptions",IDC_HANDLEEXCEPTIONS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,306,174,93,10 - CONTROL "Fix Parent Window",IDC_FIXPARENTWIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,433,104,98,9 - CONTROL "Debug",IDC_OUTDEBUG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,97,164,62,10 - CONTROL "Blit from BackBuffer",IDC_BLITFROMBACKBUFFER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,180,94,102,9 - GROUPBOX "Emulation",IDC_STATIC,7,149,78,42,WS_GROUP - CONTROL "Suppress clipping",IDC_SUPPRESSCLIPPING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,180,104,102,9 - CONTROL "Modal Style",IDC_MODALSTYLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,433,114,98,9 - CONTROL "Keep aspect ratio",IDC_KEEPASPECTRATIO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,433,124,98,9 - CONTROL "Limit available resources",IDC_LIMITRESOURCES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,306,184,93,10 - CONTROL "Force win resize",IDC_FORCEWINRESIZE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,433,134,98,9 - CONTROL "fix WM_NCHITTEST",IDC_FIXNCHITTEST,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,306,94,98,9 - CONTROL "Limit",IDC_LIMITFPS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,557,112,28,9 - EDITTEXT IDC_MAXFPS,635,115,26,12,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT - CONTROL "Skip",IDC_SKIPFPS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,557,122,27,9 - LTEXT "delay (msec)",IDC_STATIC,591,117,43,8 - GROUPBOX "Frame per Second",IDC_STATIC,549,102,120,68 - CONTROL "Show FPS on title",IDC_SHOWFPS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,557,134,72,9 - GROUPBOX "",IDC_STATIC,555,108,110,24 - CONTROL "Hide multi-monitor config.",IDC_HIDEMULTIMONITOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,433,144,98,9 - CONTROL "Time Stretch - initial:",IDC_TIMESTRETCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,557,154,75,9 - GROUPBOX "OpenGL",IDC_STATIC,549,3,120,50 - CONTROL "Hook OpenGL",IDC_HOOKOPENGL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,557,14,98,9 - EDITTEXT IDC_OPENGLLIB,554,36,108,12,ES_AUTOHSCROLL - LTEXT "Custom OpenGL library",IDC_STATIC,566,26,94,8 - CONTROL "Show Cursor",IDC_SHOWHWCURSOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,306,24,100,9 - CONTROL "Wallpaper mode",IDC_WALLPAPERMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,433,154,98,9 - GROUPBOX "GDI Handling",IDC_STATIC,172,144,120,62 - CONTROL "Hook GDI",IDC_HOOKGDI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,180,154,102,9 - CONTROL "Disable setting gamma ramp",IDC_DISABLEGAMMARAMP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,180,174,102,9 - CONTROL "Show FPS overlay",IDC_SHOWFPSOVERLAY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,557,144,72,9 - LISTBOX IDC_LISTTS,635,135,26,27,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP - GROUPBOX "Fake Version",IDC_STATIC,551,55,118,44 - CONTROL "",IDC_FAKEVERSION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,558,74,10,9 - LISTBOX IDC_LISTFAKE,577,67,84,27,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP - CONTROL "Full RECT Blit",IDC_FULLRECTBLT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,180,114,102,9 - CONTROL "Palette update don't Blit",IDC_NOPALETTEUPDATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,180,124,102,9 + DEFPUSHBUTTON "OK",IDOK,225,227,40,14 + PUSHBUTTON "Cancel",IDCANCEL,176,227,40,14 + CONTROL "",IDC_TABPANEL,"SysTabControl32",0x0,7,3,260,220 END IDD_STATUS DIALOGEX 0, 0, 186, 95 @@ -352,6 +232,191 @@ BEGIN LTEXT ":16",IDC_STATIC,149,30,15,9 END +IDD_TAB_PROGRAM DIALOGEX 0, 0, 300, 240 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + EDITTEXT IDC_TITLE,7,22,162,14,ES_AUTOHSCROLL + LTEXT "Name:",IDC_STATIC,7,9,77,9 + EDITTEXT IDC_FILE,7,54,162,14,ES_AUTOHSCROLL + EDITTEXT IDC_MODULE,7,85,162,14,ES_AUTOHSCROLL + LTEXT "Hooked Module:",IDC_STATIC,7,73,77,9 + LTEXT "Path:",IDC_STATIC,7,42,77,9 + PUSHBUTTON "...",IDC_OPEN,176,53,13,16 + LTEXT "Window initial position && size",IDC_STATIC,10,184,115,9 + LTEXT "X",IDC_STATIC,10,200,9,9 + LTEXT "Y",IDC_STATIC,41,200,9,9 + LTEXT "W",IDC_STATIC,69,200,9,9 + LTEXT "H",IDC_STATIC,99,200,9,9 + EDITTEXT IDC_POSX,18,196,19,14,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT + EDITTEXT IDC_POSY,47,196,19,14,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT + EDITTEXT IDC_SIZX,77,196,19,14,ES_AUTOHSCROLL,WS_EX_RIGHT + EDITTEXT IDC_SIZY,105,196,19,14,ES_AUTOHSCROLL,WS_EX_RIGHT + CONTROL "Do not notify on task switch",IDC_UNNOTIFY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,112,124,12 + CONTROL "Optimize CPU (DirectX1 - 7)",IDC_SAVELOAD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,122,123,12 + CONTROL "Intercept Alt-F4 key",IDC_HANDLEALTF4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,132,109,12 + CONTROL "Run in Window",IDC_WINDOWIZE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,142,124,12 + GROUPBOX "Generic",IDC_STATIC,7,103,140,72 + CONTROL "No banner",IDC_NOBANNER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,152,124,12 +END + +IDD_TAB_LOG DIALOGEX 0, 0, 300, 240 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + GROUPBOX "Logs",IDC_STATIC,7,3,87,133 + CONTROL "Win Events",IDC_OUTWINMESSAGES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,69,73,12 + CONTROL "DirectX ",IDC_OUTDXTRACE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,81,73,12 + CONTROL "DxWnd",IDC_OUTTRACE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,58,73,12 + CONTROL "Assert Dialog",IDC_ASSERT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,47,73,12 + CONTROL "ddraw Proxy",IDC_DXPROXED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,35,73,12 + CONTROL "Cursor/Mouse",IDC_CURSORTRACE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,93,73,12 + CONTROL "Import Table",IDC_IMPORTTABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,104,73,12 + CONTROL "Debug",IDC_OUTDEBUG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,116,73,12 + CONTROL "Enable Trace",IDC_LOGENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,13,73,12 +END + +IDD_TAB_DIRECTX DIALOGEX 0, 0, 300, 240 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + CONTROL "Automatic",IDC_AUTO,"Button",BS_AUTORADIOBUTTON | WS_GROUP,14,13,67,12 + CONTROL "DirectX1~6",IDC_DIRECTX1,"Button",BS_AUTORADIOBUTTON,14,25,69,12 + CONTROL "DirectX7",IDC_DIRECTX7,"Button",BS_AUTORADIOBUTTON,14,37,48,12 + CONTROL "DirectX8",IDC_DIRECTX8,"Button",BS_AUTORADIOBUTTON,14,48,48,12 + CONTROL "DirectX9",IDC_DIRECTX9,"Button",BS_AUTORADIOBUTTON,14,59,47,12 + CONTROL "None",IDC_NODIRECTX,"Button",BS_AUTORADIOBUTTON,14,71,71,12 + CONTROL "None",IDC_NOEMULATESURFACE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,14,99,77,12 + CONTROL "Primary Surface",IDC_EMULATESURFACE,"Button",BS_AUTORADIOBUTTON,14,122,77,12 + CONTROL "Primary Buffer",IDC_EMULATEBUFFER,"Button",BS_AUTORADIOBUTTON,14,110,67,12 + GROUPBOX "DirectX Version Hook",IDC_STATIC,6,3,98,83,WS_GROUP + GROUPBOX "Emulation",IDC_STATIC,6,88,98,49,WS_GROUP + CONTROL "Handle DC",IDC_HANDLEDC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,26,78,12 + CONTROL "Auto Primary Surface Refresh",IDC_AUTOREFRESH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,38,126,9 + GROUPBOX "DirectDraw Surface handling",IDC_STATIC,112,3,181,158 + CONTROL "VIDEO->SYSTEM surf. on fail",IDC_VIDEOTOSYSTEMMEM, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,118,61,126,9 + CONTROL "Set 16BPP RGB565 encoding",IDC_USERGB565,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,50,126,9 + CONTROL "Suppress DX common errors",IDC_SUPPRESSDXERRORS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,73,127,10 + CONTROL "Remap Client Rect",IDC_CLIENTREMAPPING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,85,119,10 + CONTROL "Map GDI HDC to Primary DC",IDC_MAPGDITOPRIMARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,15,119,10 + CONTROL "Make Backbuf attachable",IDC_BACKBUFATTACH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,96,119,10 + CONTROL "Blit from BackBuffer",IDC_BLITFROMBACKBUFFER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,107,119,10 + CONTROL "Suppress clipping",IDC_SUPPRESSCLIPPING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,119,119,10 + CONTROL "Full RECT Blit",IDC_FULLRECTBLT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,131,119,10 + CONTROL "Palette update don't Blit",IDC_NOPALETTEUPDATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,142,119,10 + LTEXT "DirectInput initial coord. and X,Y range",IDC_STATIC,19,194,146,9 + LTEXT "X",IDC_STATIC,13,209,9,9 + LTEXT "Y",IDC_STATIC,40,209,9,9 + LTEXT "(",IDC_STATIC,69,209,9,9 + LTEXT ",",IDC_STATIC,92,209,9,9 + LTEXT ")-(",IDC_STATIC,114,209,11,9 + LTEXT ",",IDC_STATIC,144,209,9,9 + LTEXT ")",IDC_STATIC,166,209,9,9 + EDITTEXT IDC_INITX,20,206,17,14,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT + EDITTEXT IDC_INITY,46,206,17,14,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT + EDITTEXT IDC_MINX,72,206,17,14,ES_AUTOHSCROLL,WS_EX_RIGHT + EDITTEXT IDC_MINY,97,206,17,14,ES_AUTOHSCROLL,WS_EX_RIGHT + EDITTEXT IDC_MAXX,124,206,17,14,ES_AUTOHSCROLL,WS_EX_RIGHT + EDITTEXT IDC_MAXY,148,206,17,14,ES_AUTOHSCROLL,WS_EX_RIGHT + CONTROL "DirectInput Hooking",IDC_HOOKDI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,179,97,12 + GROUPBOX "DirectInput",IDC_STATIC,7,169,286,64 +END + +IDD_TAB_MOUSE DIALOGEX 0, 0, 300, 240 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + CONTROL "Correct mouse position",IDC_MODIFYMOUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,38,113,12 + CONTROL "Hide Cursor",IDC_HIDEHWCURSOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,15,117,10 + CONTROL "Intercept GDI Cursor Clipping",IDC_ENABLECLIPPING, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,85,124,10 + GROUPBOX "Cursor handling",IDC_STATIC,7,3,140,144 + CONTROL "Keep cursor within window",IDC_KEEPCURSORWITHIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,61,123,10 + CONTROL "Force cursor clipping",IDC_CLIPCURSOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,50,125,10 + CONTROL "Message processing",IDC_MESSAGEPROC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,96,115,10 + CONTROL "Keep cursor fixed",IDC_KEEPCURSORFIXED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,73,123,10 + CONTROL "fix WM_NCHITTEST",IDC_FIXNCHITTEST,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,107,115,10 + CONTROL "Show Cursor",IDC_SHOWHWCURSOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,27,117,10 + CONTROL "Slow down mouse polling",IDC_SLOW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,118,103,12 +END + +IDD_TAB_TIMING DIALOGEX 0, 0, 300, 240 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + CONTROL "Limit",IDC_LIMITFPS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,19,33,10 + CONTROL "Skip",IDC_SKIPFPS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,31,31,10 + LTEXT "delay (msec)",IDC_STATIC,52,25,50,9 + GROUPBOX "Frame per Second",IDC_STATIC,7,7,140,78 + CONTROL "Show FPS on title",IDC_SHOWFPS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,60,84,10 + CONTROL "Time Stretch - initial:",IDC_TIMESTRETCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,123,87,10 + CONTROL "Show FPS overlay",IDC_SHOWFPSOVERLAY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,72,84,10 + EDITTEXT IDC_MAXFPS,104,23,31,14,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT + LISTBOX IDC_LISTTS,104,102,31,55,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Time Stretching",IDC_STATIC,7,94,139,70 +END + +IDD_TAB_WINDOW DIALOGEX 0, 0, 300, 240 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + CONTROL "Fix Window Frame Style",IDC_FIXWINFRAME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,16,120,10 + CONTROL "Prevent Win Maximize",IDC_PREVENTMAXIMIZE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,28,115,10 + GROUPBOX "Windows handling",IDC_STATIC,6,4,140,193 + CONTROL "Lock win coordinates",IDC_LOCKWINPOS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,39,115,10 + CONTROL "Hook CHILD windows",IDC_HOOKCHILDWIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,62,115,10 + CONTROL "Recover screen mode",IDC_RECOVERSCREENMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,74,115,10 + CONTROL "Refresh on win resize",IDC_REFRESHONRESIZE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,86,115,10 + CONTROL "Simulate 8BPP desktop",IDC_INIT8BPP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,97,115,10 + CONTROL "Simulate 16BPP desktop",IDC_INIT16BPP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,108,115,10 + CONTROL "Lock win style",IDC_LOCKWINSTYLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,51,115,10 + CONTROL "Fix Parent Window",IDC_FIXPARENTWIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,120,115,10 + CONTROL "Modal Style",IDC_MODALSTYLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,132,115,10 + CONTROL "Keep aspect ratio",IDC_KEEPASPECTRATIO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,143,115,10 + CONTROL "Force win resize",IDC_FORCEWINRESIZE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,154,115,10 + CONTROL "Hide multi-monitor config.",IDC_HIDEMULTIMONITOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,166,115,10 + CONTROL "Wallpaper mode",IDC_WALLPAPERMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,178,115,10 +END + +IDD_TAB_EMPTY DIALOGEX 0, 0, 300, 240 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN +END + +IDD_TAB_OPENGL DIALOGEX 0, 0, 300, 240 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + GROUPBOX "OpenGL",IDC_STATIC,7,3,140,58 + LTEXT "Custom OpenGL library",IDC_STATIC,15,29,110,9 + CONTROL "Hook OpenGL",IDC_HOOKOPENGL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,15,115,10 + EDITTEXT IDC_OPENGLLIB,13,41,126,14,ES_AUTOHSCROLL +END + +IDD_TAB_COMPAT DIALOGEX 0, 0, 300, 240 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + GROUPBOX "Fake Version",IDC_STATIC,7,3,139,64 + CONTROL "",IDC_FAKEVERSION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,26,12,10 + LISTBOX IDC_LISTFAKE,39,15,98,43,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + CONTROL "Handle Exceptions",IDC_HANDLEEXCEPTIONS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,201,109,12 + CONTROL "Limit available resources",IDC_LIMITRESOURCES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,212,109,12 + CONTROL "Suppress IME",IDC_SUPPRESSIME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,190,109,12 +END + +IDD_TAB_GDI DIALOGEX 0, 0, 300, 240 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + CONTROL "Fix TextOutA placement",IDC_FIXTEXTOUT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,26,125,10 + GROUPBOX "GDI Handling",IDC_STATIC,6,3,140,51 + CONTROL "Hook GDI",IDC_HOOKGDI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,15,119,10 + CONTROL "Disable setting gamma ramp",IDC_DISABLEGAMMARAMP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,38,119,10 +END + ///////////////////////////////////////////////////////////////////////////// // @@ -410,9 +475,9 @@ BEGIN IDD_TARGET, DIALOG BEGIN LEFTMARGIN, 7 - RIGHTMARGIN, 669 + RIGHTMARGIN, 267 TOPMARGIN, 3 - BOTTOMMARGIN, 218 + BOTTOMMARGIN, 241 HORZGUIDE, 91 END @@ -431,6 +496,86 @@ BEGIN TOPMARGIN, 7 BOTTOMMARGIN, 58 END + + IDD_TAB_PROGRAM, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 293 + TOPMARGIN, 7 + BOTTOMMARGIN, 233 + END + + IDD_TAB_LOG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 293 + TOPMARGIN, 7 + BOTTOMMARGIN, 233 + END + + IDD_TAB_DIRECTX, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 293 + TOPMARGIN, 7 + BOTTOMMARGIN, 233 + END + + IDD_TAB_MOUSE, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 293 + TOPMARGIN, 7 + BOTTOMMARGIN, 233 + END + + IDD_TAB_TIMING, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 293 + TOPMARGIN, 7 + BOTTOMMARGIN, 233 + END + + IDD_TAB_WINDOW, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 293 + TOPMARGIN, 7 + BOTTOMMARGIN, 233 + END + + IDD_TAB_EMPTY, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 293 + TOPMARGIN, 7 + BOTTOMMARGIN, 233 + END + + IDD_TAB_OPENGL, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 293 + TOPMARGIN, 7 + BOTTOMMARGIN, 233 + END + + IDD_TAB_COMPAT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 293 + TOPMARGIN, 7 + BOTTOMMARGIN, 233 + END + + IDD_TAB_GDI, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 293 + TOPMARGIN, 7 + BOTTOMMARGIN, 233 + END END #endif // APSTUDIO_INVOKED diff --git a/host/dxwndhost.vs2005.sln b/host/dxwndhost.vs2005.sln deleted file mode 100644 index df99804..0000000 --- a/host/dxwndhost.vs2005.sln +++ /dev/null @@ -1,20 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dxwndhost", "dxwndhost.vs2005.vcproj", "{FD0B0234-8EC5-43C0-A384-1B881DD3D925}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {FD0B0234-8EC5-43C0-A384-1B881DD3D925}.Debug|Win32.ActiveCfg = Debug|Win32 - {FD0B0234-8EC5-43C0-A384-1B881DD3D925}.Debug|Win32.Build.0 = Debug|Win32 - {FD0B0234-8EC5-43C0-A384-1B881DD3D925}.Release|Win32.ActiveCfg = Release|Win32 - {FD0B0234-8EC5-43C0-A384-1B881DD3D925}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/host/dxwndhost.vs2005.suo b/host/dxwndhost.vs2005.suo deleted file mode 100644 index bd01432a975a0073caf10de285010b2218ebd584..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19968 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/host/dxwndhost.vs2008.suo b/host/dxwndhost.vs2008.suo index 76647617a657a0f45e1e9cc8f27c1c0c58fb8d28..1cb3ed0cb1979a96cc9f388596760ef2def4cbc1 100644 GIT binary patch literal 166400 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 diff --git a/host/dxwndhost.vs2008.vcproj b/host/dxwndhost.vs2008.vcproj index 0838f91..b4870bd 100644 --- a/host/dxwndhost.vs2008.vcproj +++ b/host/dxwndhost.vs2008.vcproj @@ -218,6 +218,10 @@ Name="Source Files" Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" > + + @@ -352,6 +356,42 @@ RelativePath=".\SystemTray.h" > + + + + + + + + + + + + + + + + + + @@ -381,6 +421,10 @@ Name="Header Files" Filter="h;hpp;hxx;hm;inl" > + + @@ -413,6 +457,42 @@ RelativePath="StdAfx.h" > + + + + + + + + + + + + + + + + + + diff --git a/host/dxwndhostView.cpp b/host/dxwndhostView.cpp index def934f..a40fd95 100644 --- a/host/dxwndhostView.cpp +++ b/host/dxwndhostView.cpp @@ -372,6 +372,8 @@ void CDxwndhostView::OnModify() dlg.m_OpenGLLib = TargetMaps[i].OpenGLLib; dlg.m_Title = TitleMaps[i].title; dlg.m_UnNotify = TargetMaps[i].flags & UNNOTIFY ? 1 : 0; + dlg.m_Windowize = TargetMaps[i].flags2 & WINDOWIZE ? 1 : 0; + dlg.m_NoBanner = TargetMaps[i].flags2 & NOBANNER ? 1 : 0; dlg.m_EmulateSurface = TargetMaps[i].flags & EMULATESURFACE ? 1 : 0; dlg.m_NoEmulateSurface = TargetMaps[i].flags & EMULATEFLAGS ? 0 : 1; dlg.m_EmulateBuffer = TargetMaps[i].flags & EMULATEBUFFER ? 1 : 0; @@ -388,6 +390,8 @@ void CDxwndhostView::OnModify() dlg.m_ImportTable = TargetMaps[i].tflags & OUTIMPORTTABLE ? 1 : 0; dlg.m_HandleDC = TargetMaps[i].flags & HANDLEDC ? 1 : 0; dlg.m_HandleExceptions = TargetMaps[i].flags & HANDLEEXCEPTIONS ? 1 : 0; + dlg.m_SuppressIME = TargetMaps[i].flags2 & SUPPRESSIME ? 1 : 0; + dlg.m_LimitResources = TargetMaps[i].flags2 & LIMITRESOURCES ? 1 : 0; dlg.m_SaveLoad = TargetMaps[i].flags & SAVELOAD ? 1 : 0; dlg.m_SlowDown = TargetMaps[i].flags & SLOWDOWN ? 1 : 0; dlg.m_BlitFromBackBuffer = TargetMaps[i].flags & BLITFROMBACKBUFFER ? 1 : 0; @@ -459,6 +463,8 @@ void CDxwndhostView::OnModify() TargetMaps[i].flags2 = 0; TargetMaps[i].tflags = 0; if(dlg.m_UnNotify) TargetMaps[i].flags |= UNNOTIFY; + if(dlg.m_Windowize) TargetMaps[i].flags2 |= WINDOWIZE; + if(dlg.m_NoBanner) TargetMaps[i].flags2 |= NOBANNER; if(dlg.m_NoEmulateSurface) { dlg.m_EmulateSurface = FALSE; dlg.m_EmulateBuffer = FALSE; @@ -489,6 +495,8 @@ void CDxwndhostView::OnModify() if(dlg.m_ImportTable) TargetMaps[i].tflags |= OUTIMPORTTABLE; if(dlg.m_HandleDC) TargetMaps[i].flags |= HANDLEDC; if(dlg.m_HandleExceptions) TargetMaps[i].flags |= HANDLEEXCEPTIONS; + if(dlg.m_LimitResources) TargetMaps[i].flags2 |= LIMITRESOURCES; + if(dlg.m_SuppressIME) TargetMaps[i].flags2 |= SUPPRESSIME; if(dlg.m_SaveLoad) TargetMaps[i].flags |= SAVELOAD; if(dlg.m_SlowDown) TargetMaps[i].flags |= SLOWDOWN; if(dlg.m_BlitFromBackBuffer) TargetMaps[i].flags |= BLITFROMBACKBUFFER; @@ -753,6 +761,8 @@ void CDxwndhostView::OnAdd() TargetMaps[i].flags2 = 0; TargetMaps[i].tflags = 0; if(dlg.m_UnNotify) TargetMaps[i].flags |= UNNOTIFY; + if(dlg.m_Windowize) TargetMaps[i].flags2 |= WINDOWIZE; + if(dlg.m_NoBanner) TargetMaps[i].flags2 |= NOBANNER; if(dlg.m_NoEmulateSurface) { dlg.m_EmulateSurface = FALSE; dlg.m_EmulateBuffer = FALSE; @@ -783,6 +793,8 @@ void CDxwndhostView::OnAdd() if(dlg.m_ImportTable) TargetMaps[i].tflags |= OUTIMPORTTABLE; if(dlg.m_HandleDC) TargetMaps[i].flags |= HANDLEDC; if(dlg.m_HandleExceptions) TargetMaps[i].flags |= HANDLEEXCEPTIONS; + if(dlg.m_SuppressIME) TargetMaps[i].flags2 |= SUPPRESSIME; + if(dlg.m_LimitResources) TargetMaps[i].flags2 |= LIMITRESOURCES; if(dlg.m_SaveLoad) TargetMaps[i].flags |= SAVELOAD; if(dlg.m_SlowDown) TargetMaps[i].flags |= SLOWDOWN; if(dlg.m_BlitFromBackBuffer) TargetMaps[i].flags |= BLITFROMBACKBUFFER; diff --git a/makebuild.bat b/makebuild.bat new file mode 100644 index 0000000..4b901f5 --- /dev/null +++ b/makebuild.bat @@ -0,0 +1,17 @@ +del dll\dxwnd.*.user +del dll\dxwnd.*.ncb + +del host\dxwndhost.*.user +del host\dxwndhost.*.ncb + +copy Release\dxwnd.exe build +copy Release\dxwnd.dll build + +del dll\Debug\*.* +del dll\Release\*.* + +del host\Debug\*.* +del host\Release\*.* + +echo build done +pause