mirror of
https://github.com/DxWnd/DxWnd.reloaded
synced 2024-12-30 09:25:35 +01:00
v2_03_57_src
Former-commit-id: 56291ae33fff04971e7e7e7e3ec3de827f0f4284
This commit is contained in:
parent
2bde039a5b
commit
9aca112da3
@ -218,6 +218,8 @@
|
|||||||
#define LIMITDDRAW 0x00000001 // Limit the maximum available ddraw object version
|
#define LIMITDDRAW 0x00000001 // Limit the maximum available ddraw object version
|
||||||
#define DISABLEDISABLEALTTAB 0x00000002 // Disables the compatibility patch that disables the Alt-Tab key and other special combinations
|
#define DISABLEDISABLEALTTAB 0x00000002 // Disables the compatibility patch that disables the Alt-Tab key and other special combinations
|
||||||
#define FIXCLIPPERAREA 0x00000004 // fix clipper area in ddraw & GDI shared DC mode
|
#define FIXCLIPPERAREA 0x00000004 // fix clipper area in ddraw & GDI shared DC mode
|
||||||
|
#define HOOKDIRECTSOUND 0x00000008
|
||||||
|
#define HOOKSMACKW32 0x00000010
|
||||||
|
|
||||||
// eighth flags DWORD dxw.dwFlags8:
|
// eighth flags DWORD dxw.dwFlags8:
|
||||||
|
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:cf21cb7f4efa14ec9c887287c8761ec1bc41387407bb79ad1e0a828389390503
|
oid sha256:f5024ec55f3917b2908e231698222147516bb21efda0938c969100fc43f7fd9f
|
||||||
size 625664
|
size 626688
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:4853f064ace470ed224072af04f8ad1f48d985299be7f51b3adf36a279b4222f
|
oid sha256:b2afb528861c05b34730d201b567c3e47f969732676f7d9fd998ffe8cf16674d
|
||||||
size 549376
|
size 553472
|
||||||
|
120
build/dxwnd.ini
Normal file
120
build/dxwnd.ini
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
[window]
|
||||||
|
exportpath=D:\DxWnd\exports\
|
||||||
|
exepath=D:\Games\msgolf\Golf '98 Trial\
|
||||||
|
posx=981
|
||||||
|
posy=464
|
||||||
|
sizx=320
|
||||||
|
sizy=200
|
||||||
|
[target]
|
||||||
|
title0=Miscrosoft Golf '98 Trial
|
||||||
|
path0=D:\Games\msgolf\Golf '98 Trial\game.exe
|
||||||
|
launchpath0=
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
notes0=
|
||||||
|
registry0=[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\]\n[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Games]\n[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Games\Golf '98]\n[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Games\Golf '98\Version 1.0 Demo]\n"AppPath"="D:\\Games\\msgolf\\Golf '98 Trial"\n"InstallType"="1"\n"InstalledPath"="D:\\Games\\msgolf\\Golf '98 Trial"\n"CDPath"="D:\\Games\\msgolf\\Golf '98 Trial\\"\n"ITF File Path"="D:\\Games\\msgolf\\Golf '98 Trial\\golf.itf"\n"Launched"="1"\n"PID"=""\n"Path"="D:\\Games\\msgolf\\Golf '98 Trial"\n"VersionType"="TrialVersion"\n"InstalledGroup"="1"\n"LangID"=dword:00000009\n\n\n[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Microsoft Games]\n[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Microsoft Games\Golf '98]\n[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Microsoft Games\Golf '98\Version 1.0 Demo]\n"AppPath"="D:\\Games\\msgolf\\Golf '98 Trial"\n"InstallType"="1"\n"InstalledPath"="D:\\Games\\msgolf\\Golf '98 Trial"\n"CDPath"="D:\\Games\\msgolf\\Golf '98 Trial\\"\n"ITF File Path"="D:\\Games\\msgolf\\Golf '98 Trial\\golf.itf"\n"Launched"="1"\n"PID"=""\n"Path"="D:\\Games\\msgolf\\Golf '98 Trial"\n"VersionType"="TrialVersion"\n"InstalledGroup"="1"\n"LangID"=dword:00000009
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=2101474
|
||||||
|
flagg0=1476395016
|
||||||
|
flagh0=1044
|
||||||
|
flagi0=1210187780
|
||||||
|
flagj0=128
|
||||||
|
flagk0=327680
|
||||||
|
flagl0=4
|
||||||
|
flagm0=0
|
||||||
|
tflag0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=880
|
||||||
|
sizy0=660
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
||||||
|
swapeffect0=0
|
||||||
|
maxddinterface0=0
|
||||||
|
title1=M1 Tank Platoon 2
|
||||||
|
path1=D:\Games\M1 Tank Platoon 2\M1TP2.exe
|
||||||
|
launchpath1=
|
||||||
|
module1=
|
||||||
|
opengllib1=
|
||||||
|
notes1=
|
||||||
|
registry1=
|
||||||
|
ver1=0
|
||||||
|
coord1=0
|
||||||
|
flag1=134238242
|
||||||
|
flagg1=1207959552
|
||||||
|
flagh1=20
|
||||||
|
flagi1=138412036
|
||||||
|
flagj1=268439680
|
||||||
|
flagk1=0
|
||||||
|
flagl1=0
|
||||||
|
flagm1=0
|
||||||
|
tflag1=0
|
||||||
|
posx1=50
|
||||||
|
posy1=50
|
||||||
|
sizx1=800
|
||||||
|
sizy1=600
|
||||||
|
maxfps1=0
|
||||||
|
initts1=8
|
||||||
|
winver1=0
|
||||||
|
maxres1=-1
|
||||||
|
swapeffect1=0
|
||||||
|
maxddinterface1=7
|
||||||
|
title2=Imperialism II
|
||||||
|
path2=D:\Games\Imperialism 2\imperialism II.exe
|
||||||
|
launchpath2=
|
||||||
|
module2=
|
||||||
|
opengllib2=
|
||||||
|
notes2=
|
||||||
|
registry2=
|
||||||
|
ver2=0
|
||||||
|
coord2=0
|
||||||
|
flag2=679485474
|
||||||
|
flagg2=1207959552
|
||||||
|
flagh2=20
|
||||||
|
flagi2=4194308
|
||||||
|
flagj2=0
|
||||||
|
flagk2=262144
|
||||||
|
flagl2=4
|
||||||
|
flagm2=0
|
||||||
|
tflag2=0
|
||||||
|
posx2=50
|
||||||
|
posy2=50
|
||||||
|
sizx2=800
|
||||||
|
sizy2=600
|
||||||
|
maxfps2=0
|
||||||
|
initts2=0
|
||||||
|
winver2=0
|
||||||
|
maxres2=0
|
||||||
|
swapeffect2=0
|
||||||
|
maxddinterface2=7
|
||||||
|
title3=Imperialism
|
||||||
|
path3=D:\Games\Imperialism\Imperialism.exe
|
||||||
|
launchpath3=
|
||||||
|
module3=
|
||||||
|
opengllib3=
|
||||||
|
notes3=Note:\nMap zooming is currently not workind. Do not click on the magnifying glass, \nor the game will crash.
|
||||||
|
registry3=
|
||||||
|
ver3=0
|
||||||
|
coord3=0
|
||||||
|
flag3=1746935843
|
||||||
|
flagg3=1744830464
|
||||||
|
flagh3=20
|
||||||
|
flagi3=71303172
|
||||||
|
flagj3=128
|
||||||
|
flagk3=262144
|
||||||
|
flagl3=4
|
||||||
|
flagm3=0
|
||||||
|
tflag3=0
|
||||||
|
posx3=50
|
||||||
|
posy3=50
|
||||||
|
sizx3=800
|
||||||
|
sizy3=600
|
||||||
|
maxfps3=0
|
||||||
|
initts3=0
|
||||||
|
winver3=0
|
||||||
|
maxres3=-1
|
||||||
|
swapeffect3=0
|
||||||
|
maxddinterface3=7
|
31
build/dxwnd.reg
Normal file
31
build/dxwnd.reg
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\]
|
||||||
|
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Games]
|
||||||
|
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Games\Golf '98]
|
||||||
|
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Games\Golf '98\Version 1.0 Demo]
|
||||||
|
"AppPath"="D:\\Games\\msgolf\\Golf '98 Trial"
|
||||||
|
"InstallType"="1"
|
||||||
|
"InstalledPath"="D:\\Games\\msgolf\\Golf '98 Trial"
|
||||||
|
"CDPath"="D:\\Games\\msgolf\\Golf '98 Trial\\"
|
||||||
|
"ITF File Path"="D:\\Games\\msgolf\\Golf '98 Trial\\golf.itf"
|
||||||
|
"Launched"="1"
|
||||||
|
"PID"=""
|
||||||
|
"Path"="D:\\Games\\msgolf\\Golf '98 Trial"
|
||||||
|
"VersionType"="TrialVersion"
|
||||||
|
"InstalledGroup"="1"
|
||||||
|
"LangID"=dword:00000009
|
||||||
|
|
||||||
|
|
||||||
|
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Microsoft Games]
|
||||||
|
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Microsoft Games\Golf '98]
|
||||||
|
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Microsoft Games\Golf '98\Version 1.0 Demo]
|
||||||
|
"AppPath"="D:\\Games\\msgolf\\Golf '98 Trial"
|
||||||
|
"InstallType"="1"
|
||||||
|
"InstalledPath"="D:\\Games\\msgolf\\Golf '98 Trial"
|
||||||
|
"CDPath"="D:\\Games\\msgolf\\Golf '98 Trial\\"
|
||||||
|
"ITF File Path"="D:\\Games\\msgolf\\Golf '98 Trial\\golf.itf"
|
||||||
|
"Launched"="1"
|
||||||
|
"PID"=""
|
||||||
|
"Path"="D:\\Games\\msgolf\\Golf '98 Trial"
|
||||||
|
"VersionType"="TrialVersion"
|
||||||
|
"InstalledGroup"="1"
|
||||||
|
"LangID"=dword:00000009
|
@ -7,8 +7,8 @@ opengllib0=
|
|||||||
notes0=
|
notes0=
|
||||||
registry0=
|
registry0=
|
||||||
ver0=0
|
ver0=0
|
||||||
coord0=1
|
coord0=0
|
||||||
flag0=136314915
|
flag0=137363491
|
||||||
flagg0=1207959552
|
flagg0=1207959552
|
||||||
flagh0=20
|
flagh0=20
|
||||||
flagi0=138412036
|
flagi0=138412036
|
||||||
@ -21,12 +21,15 @@ minx0=0
|
|||||||
miny0=0
|
miny0=0
|
||||||
maxx0=0
|
maxx0=0
|
||||||
maxy0=0
|
maxy0=0
|
||||||
posx0=0
|
posx0=50
|
||||||
posy0=0
|
posy0=50
|
||||||
sizx0=1280
|
sizx0=800
|
||||||
sizy0=960
|
sizy0=600
|
||||||
maxfps0=0
|
maxfps0=0
|
||||||
initts0=0
|
initts0=0
|
||||||
winver0=0
|
winver0=0
|
||||||
maxres0=-1
|
maxres0=-1
|
||||||
swapeffect0=0
|
swapeffect0=0
|
||||||
|
flagl0=0
|
||||||
|
flagm0=0
|
||||||
|
maxddinterface0=7
|
||||||
|
29
build/exports/Duke Nukem Forever.dxw
Normal file
29
build/exports/Duke Nukem Forever.dxw
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
[target]
|
||||||
|
title0=Duke Nukem Forever
|
||||||
|
path0=D:\Games\Duke Nukem Forever\System\DukeForever.exe
|
||||||
|
launchpath0=
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
notes0=
|
||||||
|
registry0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=136314914
|
||||||
|
flagg0=1207959552
|
||||||
|
flagh0=20
|
||||||
|
flagi0=138412036
|
||||||
|
flagj0=4224
|
||||||
|
flagk0=65536
|
||||||
|
flagl0=0
|
||||||
|
flagm0=0
|
||||||
|
tflag0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
||||||
|
swapeffect0=0
|
||||||
|
maxddinterface0=7
|
@ -10,7 +10,7 @@ flag0=134238242
|
|||||||
flagg0=1207959552
|
flagg0=1207959552
|
||||||
flagh0=20
|
flagh0=20
|
||||||
flagi0=138412036
|
flagi0=138412036
|
||||||
flagj0=4224
|
flagj0=268439680
|
||||||
tflag0=0
|
tflag0=0
|
||||||
initx0=0
|
initx0=0
|
||||||
inity0=0
|
inity0=0
|
||||||
@ -26,3 +26,10 @@ maxfps0=0
|
|||||||
initts0=8
|
initts0=8
|
||||||
winver0=0
|
winver0=0
|
||||||
maxres0=-1
|
maxres0=-1
|
||||||
|
notes0=
|
||||||
|
registry0=
|
||||||
|
flagk0=0
|
||||||
|
flagl0=0
|
||||||
|
flagm0=0
|
||||||
|
swapeffect0=0
|
||||||
|
maxddinterface0=7
|
||||||
|
29
build/exports/Miscrosoft Golf '98 Trial.dxw
Normal file
29
build/exports/Miscrosoft Golf '98 Trial.dxw
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
[target]
|
||||||
|
title0=Miscrosoft Golf '98 Trial
|
||||||
|
path0=D:\Games\msgolf\Golf '98 Trial\game.exe
|
||||||
|
launchpath0=
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
notes0=
|
||||||
|
registry0=[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\]\n[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Games]\n[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Games\Golf '98]\n[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Games\Golf '98\Version 1.0 Demo]\n"AppPath"="D:\\Games\\msgolf\\Golf '98 Trial"\n"InstallType"="1"\n"InstalledPath"="D:\\Games\\msgolf\\Golf '98 Trial"\n"CDPath"="D:\\Games\\msgolf\\Golf '98 Trial\\"\n"ITF File Path"="D:\\Games\\msgolf\\Golf '98 Trial\\golf.itf"\n"Launched"="1"\n"PID"=""\n"Path"="D:\\Games\\msgolf\\Golf '98 Trial"\n"VersionType"="TrialVersion"\n"InstalledGroup"="1"\n"LangID"=dword:00000009\n\n\n[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Microsoft Games]\n[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Microsoft Games\Golf '98]\n[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Microsoft Games\Golf '98\Version 1.0 Demo]\n"AppPath"="D:\\Games\\msgolf\\Golf '98 Trial"\n"InstallType"="1"\n"InstalledPath"="D:\\Games\\msgolf\\Golf '98 Trial"\n"CDPath"="D:\\Games\\msgolf\\Golf '98 Trial\\"\n"ITF File Path"="D:\\Games\\msgolf\\Golf '98 Trial\\golf.itf"\n"Launched"="1"\n"PID"=""\n"Path"="D:\\Games\\msgolf\\Golf '98 Trial"\n"VersionType"="TrialVersion"\n"InstalledGroup"="1"\n"LangID"=dword:00000009
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=2101474
|
||||||
|
flagg0=1476395016
|
||||||
|
flagh0=1044
|
||||||
|
flagi0=1210187780
|
||||||
|
flagj0=128
|
||||||
|
flagk0=327680
|
||||||
|
flagl0=4
|
||||||
|
flagm0=0
|
||||||
|
tflag0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=880
|
||||||
|
sizy0=660
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
||||||
|
swapeffect0=0
|
||||||
|
maxddinterface0=0
|
@ -1,5 +0,0 @@
|
|||||||
[window]
|
|
||||||
posx=1182
|
|
||||||
posy=638
|
|
||||||
sizx=320
|
|
||||||
sizy=200
|
|
@ -1042,4 +1042,11 @@ add: "Acquire admin caps" flag to self elevate DxWnd if configured as necessary
|
|||||||
add: added third mode to handle potentially offending messages, that is process them by the Window default process routine WinDefaultProc. Good for "Red Alert 2".
|
add: added third mode to handle potentially offending messages, that is process them by the Window default process routine WinDefaultProc. Good for "Red Alert 2".
|
||||||
add: "fix clipper area in shared DC", temporary solution to adapt the shared DC mode to the different situations (yet to finish).
|
add: "fix clipper area in shared DC", temporary solution to adapt the shared DC mode to the different situations (yet to finish).
|
||||||
fix: fully integrated the patch for "Silver" game: returning backbuffer as a doublebuffer also when requested with DDSCAPS_VIDEOMEMORY caps.
|
fix: fully integrated the patch for "Silver" game: returning backbuffer as a doublebuffer also when requested with DDSCAPS_VIDEOMEMORY caps.
|
||||||
add: FunkyFr3sh addition to process WM_SYSCOMMAND SC_CLOSE and force program termination when requested by "Terminate on window close" option.
|
add: FunkyFr3sh addition to process WM_SYSCOMMAND SC_CLOSE and force program termination when requested by "Terminate on window close" option.
|
||||||
|
|
||||||
|
v2.03.57
|
||||||
|
fix: improved handling of clipping regions in shared dc mode
|
||||||
|
add: added DWM status to log file
|
||||||
|
add: flags for preliminary hook of DirectSound and Smack libraries
|
||||||
|
fix: changed icon colors (yellow for red, doesn't suggest the idea of error or danger)
|
||||||
|
add: menu commands for entry movement (top, bottom, up, down) or duplication
|
3
build/redist/vbruntimes.exe
Normal file
3
build/redist/vbruntimes.exe
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:b34beff662415ef318ea0bba7f0f01faf8a5593e3903e4645e290077cd74d6e3
|
||||||
|
size 2765965
|
146
dll/ddraw.cpp
146
dll/ddraw.cpp
@ -44,10 +44,12 @@ ULONG WINAPI extReleaseD4(LPDIRECTDRAW);
|
|||||||
ULONG WINAPI extReleaseD7(LPDIRECTDRAW);
|
ULONG WINAPI extReleaseD7(LPDIRECTDRAW);
|
||||||
/*** IDirectDraw methods ***/
|
/*** IDirectDraw methods ***/
|
||||||
HRESULT WINAPI extCreateClipper(LPDIRECTDRAW, DWORD, LPDIRECTDRAWCLIPPER FAR* , IUnknown FAR*);
|
HRESULT WINAPI extCreateClipper(LPDIRECTDRAW, DWORD, LPDIRECTDRAWCLIPPER FAR* , IUnknown FAR*);
|
||||||
HRESULT WINAPI extCreatePalette(LPDIRECTDRAW, DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE *, IUnknown *);
|
HRESULT WINAPI extCreatePalette1(LPDIRECTDRAW, DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE *, IUnknown *);
|
||||||
|
HRESULT WINAPI extCreatePalette2(LPDIRECTDRAW, DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE *, IUnknown *);
|
||||||
|
HRESULT WINAPI extCreatePalette4(LPDIRECTDRAW, DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE *, IUnknown *);
|
||||||
|
HRESULT WINAPI extCreatePalette7(LPDIRECTDRAW, DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE *, IUnknown *);
|
||||||
HRESULT WINAPI extCreateSurface1(LPDIRECTDRAW, DDSURFACEDESC *, LPDIRECTDRAWSURFACE *, void *);
|
HRESULT WINAPI extCreateSurface1(LPDIRECTDRAW, DDSURFACEDESC *, LPDIRECTDRAWSURFACE *, void *);
|
||||||
HRESULT WINAPI extCreateSurface2(LPDIRECTDRAW, DDSURFACEDESC *, LPDIRECTDRAWSURFACE *, void *);
|
HRESULT WINAPI extCreateSurface2(LPDIRECTDRAW, DDSURFACEDESC *, LPDIRECTDRAWSURFACE *, void *);
|
||||||
HRESULT WINAPI extCreateSurface3(LPDIRECTDRAW, DDSURFACEDESC *, LPDIRECTDRAWSURFACE *, void *);
|
|
||||||
HRESULT WINAPI extCreateSurface4(LPDIRECTDRAW, DDSURFACEDESC2 *, LPDIRECTDRAWSURFACE *, void *);
|
HRESULT WINAPI extCreateSurface4(LPDIRECTDRAW, DDSURFACEDESC2 *, LPDIRECTDRAWSURFACE *, void *);
|
||||||
HRESULT WINAPI extCreateSurface7(LPDIRECTDRAW, DDSURFACEDESC2 *, LPDIRECTDRAWSURFACE *, void *);
|
HRESULT WINAPI extCreateSurface7(LPDIRECTDRAW, DDSURFACEDESC2 *, LPDIRECTDRAWSURFACE *, void *);
|
||||||
HRESULT WINAPI extDuplicateSurface(LPDIRECTDRAW, LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE *);
|
HRESULT WINAPI extDuplicateSurface(LPDIRECTDRAW, LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE *);
|
||||||
@ -56,7 +58,10 @@ HRESULT WINAPI extGetDisplayMode1(LPDIRECTDRAW, LPDDSURFACEDESC);
|
|||||||
HRESULT WINAPI extGetDisplayMode2(LPDIRECTDRAW, LPDDSURFACEDESC);
|
HRESULT WINAPI extGetDisplayMode2(LPDIRECTDRAW, LPDDSURFACEDESC);
|
||||||
HRESULT WINAPI extGetDisplayMode4(LPDIRECTDRAW, LPDDSURFACEDESC2);
|
HRESULT WINAPI extGetDisplayMode4(LPDIRECTDRAW, LPDDSURFACEDESC2);
|
||||||
HRESULT WINAPI extGetDisplayMode7(LPDIRECTDRAW, LPDDSURFACEDESC2);
|
HRESULT WINAPI extGetDisplayMode7(LPDIRECTDRAW, LPDDSURFACEDESC2);
|
||||||
HRESULT WINAPI extGetGDISurface(LPDIRECTDRAW, LPDIRECTDRAWSURFACE *);
|
HRESULT WINAPI extGetGDISurface1(LPDIRECTDRAW, LPDIRECTDRAWSURFACE *);
|
||||||
|
HRESULT WINAPI extGetGDISurface2(LPDIRECTDRAW, LPDIRECTDRAWSURFACE *);
|
||||||
|
HRESULT WINAPI extGetGDISurface4(LPDIRECTDRAW, LPDIRECTDRAWSURFACE *);
|
||||||
|
HRESULT WINAPI extGetGDISurface7(LPDIRECTDRAW, LPDIRECTDRAWSURFACE *);
|
||||||
HRESULT WINAPI extEnumDisplayModes1(LPDIRECTDRAW, DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK);
|
HRESULT WINAPI extEnumDisplayModes1(LPDIRECTDRAW, DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK);
|
||||||
HRESULT WINAPI extEnumDisplayModes4(LPDIRECTDRAW, DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2);
|
HRESULT WINAPI extEnumDisplayModes4(LPDIRECTDRAW, DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2);
|
||||||
HRESULT WINAPI extInitialize(LPDIRECTDRAW, FAR GUID *);
|
HRESULT WINAPI extInitialize(LPDIRECTDRAW, FAR GUID *);
|
||||||
@ -163,7 +168,10 @@ ReleaseD_Type pReleaseD4 = NULL;
|
|||||||
ReleaseD_Type pReleaseD7 = NULL;
|
ReleaseD_Type pReleaseD7 = NULL;
|
||||||
Compact_Type pCompact;
|
Compact_Type pCompact;
|
||||||
CreateClipper_Type pCreateClipper=NULL;
|
CreateClipper_Type pCreateClipper=NULL;
|
||||||
CreatePalette_Type pCreatePalette;
|
CreatePalette_Type pCreatePalette1;
|
||||||
|
CreatePalette_Type pCreatePalette2;
|
||||||
|
CreatePalette_Type pCreatePalette4;
|
||||||
|
CreatePalette_Type pCreatePalette7;
|
||||||
CreateSurface1_Type pCreateSurface1;
|
CreateSurface1_Type pCreateSurface1;
|
||||||
CreateSurface1_Type pCreateSurface2;
|
CreateSurface1_Type pCreateSurface2;
|
||||||
CreateSurface1_Type pCreateSurface3;
|
CreateSurface1_Type pCreateSurface3;
|
||||||
@ -184,7 +192,10 @@ GetDisplayMode_Type pGetDisplayMode2;
|
|||||||
GetDisplayMode4_Type pGetDisplayMode4;
|
GetDisplayMode4_Type pGetDisplayMode4;
|
||||||
GetDisplayMode4_Type pGetDisplayMode7;
|
GetDisplayMode4_Type pGetDisplayMode7;
|
||||||
GetFourCCCodes_Type pGetFourCCCodes;
|
GetFourCCCodes_Type pGetFourCCCodes;
|
||||||
GetGDISurface_Type pGetGDISurface;
|
GetGDISurface_Type pGetGDISurface1;
|
||||||
|
GetGDISurface_Type pGetGDISurface2;
|
||||||
|
GetGDISurface_Type pGetGDISurface4;
|
||||||
|
GetGDISurface_Type pGetGDISurface7;
|
||||||
GetMonitorFrequency_Type pGetMonitorFrequency;
|
GetMonitorFrequency_Type pGetMonitorFrequency;
|
||||||
GetScanLine_Type pGetScanLine;
|
GetScanLine_Type pGetScanLine;
|
||||||
GetVerticalBlankStatus_Type pGetVerticalBlankStatus;
|
GetVerticalBlankStatus_Type pGetVerticalBlankStatus;
|
||||||
@ -1028,8 +1039,6 @@ void HookDDSession(LPDIRECTDRAW *lplpdd, int dxversion)
|
|||||||
|
|
||||||
// IDIrectDraw::CreateClipper
|
// IDIrectDraw::CreateClipper
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 16), extCreateClipper, (void **)&pCreateClipper, "CreateClipper(D)");
|
SetHook((void *)(**(DWORD **)lplpdd + 16), extCreateClipper, (void **)&pCreateClipper, "CreateClipper(D)");
|
||||||
// IDIrectDraw::CreatePalette
|
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 20), extCreatePalette, (void **)&pCreatePalette, "CreatePalette(D)");
|
|
||||||
// IDIrectDraw::QueryInterface
|
// IDIrectDraw::QueryInterface
|
||||||
// IDIrectDraw::CreateSurface
|
// IDIrectDraw::CreateSurface
|
||||||
// IDIrectDraw::Release
|
// IDIrectDraw::Release
|
||||||
@ -1038,22 +1047,26 @@ void HookDDSession(LPDIRECTDRAW *lplpdd, int dxversion)
|
|||||||
case 1:
|
case 1:
|
||||||
SetHook((void *)(**(DWORD **)lplpdd), extQueryInterfaceD1, (void **)&pQueryInterfaceD1, "QueryInterface(D1)");
|
SetHook((void *)(**(DWORD **)lplpdd), extQueryInterfaceD1, (void **)&pQueryInterfaceD1, "QueryInterface(D1)");
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 8), extReleaseD1, (void **)&pReleaseD1, "Release(D1)");
|
SetHook((void *)(**(DWORD **)lplpdd + 8), extReleaseD1, (void **)&pReleaseD1, "Release(D1)");
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 24), extCreateSurface1, (void **)&pCreateSurface1, "CreateSurface(S1)");
|
SetHook((void *)(**(DWORD **)lplpdd + 20), extCreatePalette1, (void **)&pCreatePalette1, "CreatePalette(D1)");
|
||||||
|
SetHook((void *)(**(DWORD **)lplpdd + 24), extCreateSurface1, (void **)&pCreateSurface1, "CreateSurface(D1)");
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
SetHook((void *)(**(DWORD **)lplpdd), extQueryInterfaceD2, (void **)&pQueryInterfaceD2, "QueryInterface(D2)");
|
SetHook((void *)(**(DWORD **)lplpdd), extQueryInterfaceD2, (void **)&pQueryInterfaceD2, "QueryInterface(D2)");
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 8), extReleaseD2, (void **)&pReleaseD2, "Release(D2)");
|
SetHook((void *)(**(DWORD **)lplpdd + 8), extReleaseD2, (void **)&pReleaseD2, "Release(D2)");
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 24), extCreateSurface2, (void **)&pCreateSurface2, "CreateSurface(S2)");
|
SetHook((void *)(**(DWORD **)lplpdd + 20), extCreatePalette2, (void **)&pCreatePalette2, "CreatePalette(D2)");
|
||||||
|
SetHook((void *)(**(DWORD **)lplpdd + 24), extCreateSurface2, (void **)&pCreateSurface2, "CreateSurface(D2)");
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
SetHook((void *)(**(DWORD **)lplpdd), extQueryInterfaceD4, (void **)&pQueryInterfaceD4, "QueryInterface(D4)");
|
SetHook((void *)(**(DWORD **)lplpdd), extQueryInterfaceD4, (void **)&pQueryInterfaceD4, "QueryInterface(D4)");
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 8), extReleaseD4, (void **)&pReleaseD4, "Release(D4)");
|
SetHook((void *)(**(DWORD **)lplpdd + 8), extReleaseD4, (void **)&pReleaseD4, "Release(D4)");
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 24), extCreateSurface4, (void **)&pCreateSurface4, "CreateSurface(S4)");
|
SetHook((void *)(**(DWORD **)lplpdd + 20), extCreatePalette4, (void **)&pCreatePalette4, "CreatePalette(D4)");
|
||||||
|
SetHook((void *)(**(DWORD **)lplpdd + 24), extCreateSurface4, (void **)&pCreateSurface4, "CreateSurface(D4)");
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
SetHook((void *)(**(DWORD **)lplpdd), extQueryInterfaceD7, (void **)&pQueryInterfaceD7, "QueryInterface(D7)");
|
SetHook((void *)(**(DWORD **)lplpdd), extQueryInterfaceD7, (void **)&pQueryInterfaceD7, "QueryInterface(D7)");
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 8), extReleaseD7, (void **)&pReleaseD7, "Release(D7)");
|
SetHook((void *)(**(DWORD **)lplpdd + 8), extReleaseD7, (void **)&pReleaseD7, "Release(D7)");
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 24), extCreateSurface7, (void **)&pCreateSurface7, "CreateSurface(S7)");
|
SetHook((void *)(**(DWORD **)lplpdd + 20), extCreatePalette7, (void **)&pCreatePalette7, "CreatePalette(D7)");
|
||||||
|
SetHook((void *)(**(DWORD **)lplpdd + 24), extCreateSurface7, (void **)&pCreateSurface7, "CreateSurface(D7)");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// IDIrectDraw::DuplicateSurface
|
// IDIrectDraw::DuplicateSurface
|
||||||
@ -1079,30 +1092,32 @@ void HookDDSession(LPDIRECTDRAW *lplpdd, int dxversion)
|
|||||||
case 1:
|
case 1:
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 44), extGetCaps1D, (void **)&pGetCaps1D, "GetCaps(D1)");
|
SetHook((void *)(**(DWORD **)lplpdd + 44), extGetCaps1D, (void **)&pGetCaps1D, "GetCaps(D1)");
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 48), extGetDisplayMode1, (void **)&pGetDisplayMode1, "GetDisplayMode(D1)");
|
SetHook((void *)(**(DWORD **)lplpdd + 48), extGetDisplayMode1, (void **)&pGetDisplayMode1, "GetDisplayMode(D1)");
|
||||||
|
SetHook((void *)(**(DWORD **)lplpdd + 56), extGetGDISurface1, (void **)&pGetGDISurface1, "GetGDISurface(D1)");
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 80), extSetCooperativeLevel1, (void **)&pSetCooperativeLevel1, "SetCooperativeLevel(D1)");
|
SetHook((void *)(**(DWORD **)lplpdd + 80), extSetCooperativeLevel1, (void **)&pSetCooperativeLevel1, "SetCooperativeLevel(D1)");
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 84), extSetDisplayMode1, (void **)&pSetDisplayMode1, "SetDisplayMode(D1)");
|
SetHook((void *)(**(DWORD **)lplpdd + 84), extSetDisplayMode1, (void **)&pSetDisplayMode1, "SetDisplayMode(D1)");
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 44), extGetCaps2D, (void **)&pGetCaps2D, "GetCaps(D2)");
|
SetHook((void *)(**(DWORD **)lplpdd + 44), extGetCaps2D, (void **)&pGetCaps2D, "GetCaps(D2)");
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 48), extGetDisplayMode2, (void **)&pGetDisplayMode2, "GetDisplayMode(D2)");
|
SetHook((void *)(**(DWORD **)lplpdd + 48), extGetDisplayMode2, (void **)&pGetDisplayMode2, "GetDisplayMode(D2)");
|
||||||
|
SetHook((void *)(**(DWORD **)lplpdd + 56), extGetGDISurface2, (void **)&pGetGDISurface2, "GetGDISurface(D2)");
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 80), extSetCooperativeLevel2, (void **)&pSetCooperativeLevel2, "SetCooperativeLevel(D2)");
|
SetHook((void *)(**(DWORD **)lplpdd + 80), extSetCooperativeLevel2, (void **)&pSetCooperativeLevel2, "SetCooperativeLevel(D2)");
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 84), extSetDisplayMode2, (void **)&pSetDisplayMode2, "SetDisplayMode(D2)");
|
SetHook((void *)(**(DWORD **)lplpdd + 84), extSetDisplayMode2, (void **)&pSetDisplayMode2, "SetDisplayMode(D2)");
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 44), extGetCaps4D, (void **)&pGetCaps4D, "GetCaps(D4)");
|
SetHook((void *)(**(DWORD **)lplpdd + 44), extGetCaps4D, (void **)&pGetCaps4D, "GetCaps(D4)");
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 48), extGetDisplayMode4, (void **)&pGetDisplayMode4, "GetDisplayMode(D4)");
|
SetHook((void *)(**(DWORD **)lplpdd + 48), extGetDisplayMode4, (void **)&pGetDisplayMode4, "GetDisplayMode(D4)");
|
||||||
|
SetHook((void *)(**(DWORD **)lplpdd + 56), extGetGDISurface4, (void **)&pGetGDISurface4, "GetGDISurface(D4)");
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 80), extSetCooperativeLevel4, (void **)&pSetCooperativeLevel4, "SetCooperativeLevel(D4)");
|
SetHook((void *)(**(DWORD **)lplpdd + 80), extSetCooperativeLevel4, (void **)&pSetCooperativeLevel4, "SetCooperativeLevel(D4)");
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 84), extSetDisplayMode4, (void **)&pSetDisplayMode4, "SetDisplayMode(D4)");
|
SetHook((void *)(**(DWORD **)lplpdd + 84), extSetDisplayMode4, (void **)&pSetDisplayMode4, "SetDisplayMode(D4)");
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 44), extGetCaps7D, (void **)&pGetCaps7D, "GetCaps(D7)");
|
SetHook((void *)(**(DWORD **)lplpdd + 44), extGetCaps7D, (void **)&pGetCaps7D, "GetCaps(D7)");
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 48), extGetDisplayMode7, (void **)&pGetDisplayMode7, "GetDisplayMode(D7)");
|
SetHook((void *)(**(DWORD **)lplpdd + 48), extGetDisplayMode7, (void **)&pGetDisplayMode7, "GetDisplayMode(D7)");
|
||||||
|
SetHook((void *)(**(DWORD **)lplpdd + 56), extGetGDISurface7, (void **)&pGetGDISurface7, "GetGDISurface(D7)");
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 80), extSetCooperativeLevel7, (void **)&pSetCooperativeLevel7, "SetCooperativeLevel(D7)");
|
SetHook((void *)(**(DWORD **)lplpdd + 80), extSetCooperativeLevel7, (void **)&pSetCooperativeLevel7, "SetCooperativeLevel(D7)");
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 84), extSetDisplayMode7, (void **)&pSetDisplayMode7, "SetDisplayMode(D7)");
|
SetHook((void *)(**(DWORD **)lplpdd + 84), extSetDisplayMode7, (void **)&pSetDisplayMode7, "SetDisplayMode(D7)");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// IDIrectDraw::GetGDISurface
|
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 56), extGetGDISurface, (void **)&pGetGDISurface, "GetGDISurface(D)");
|
|
||||||
// IDIrectDraw::Initialize
|
// IDIrectDraw::Initialize
|
||||||
SetHook((void *)(**(DWORD **)lplpdd + 72), extInitialize, (void **)&pInitialize, "Initialize(D)");
|
SetHook((void *)(**(DWORD **)lplpdd + 72), extInitialize, (void **)&pInitialize, "Initialize(D)");
|
||||||
// IDIrectDraw::WaitForVerticalBlank
|
// IDIrectDraw::WaitForVerticalBlank
|
||||||
@ -2277,6 +2292,14 @@ static void BuildRealSurfaces(LPDIRECTDRAW lpdd, CreateSurface_Type pCreateSurfa
|
|||||||
OutTraceDW("CreateSurface: %s\n", LogSurfaceAttributes((LPDDSURFACEDESC)&ddsd, "[EmuPrim]", __LINE__));
|
OutTraceDW("CreateSurface: %s\n", LogSurfaceAttributes((LPDDSURFACEDESC)&ddsd, "[EmuPrim]", __LINE__));
|
||||||
res=(*pCreateSurface)(lpdd, &ddsd, &lpDDSEmu_Prim, 0);
|
res=(*pCreateSurface)(lpdd, &ddsd, &lpDDSEmu_Prim, 0);
|
||||||
if(res==DDERR_PRIMARYSURFACEALREADYEXISTS){
|
if(res==DDERR_PRIMARYSURFACEALREADYEXISTS){
|
||||||
|
GetGDISurface_Type pGetGDISurface;
|
||||||
|
switch(dxversion){
|
||||||
|
default:
|
||||||
|
case 1: pGetGDISurface = pGetGDISurface1; break;
|
||||||
|
case 2: pGetGDISurface = pGetGDISurface2; break;
|
||||||
|
case 4: pGetGDISurface = pGetGDISurface4; break;
|
||||||
|
case 7: pGetGDISurface = pGetGDISurface7; break;
|
||||||
|
}
|
||||||
OutTraceDW("CreateSurface: ASSERT DDSEmu_Prim already exists\n");
|
OutTraceDW("CreateSurface: ASSERT DDSEmu_Prim already exists\n");
|
||||||
if(dxw.Windowize){
|
if(dxw.Windowize){
|
||||||
// in Windowize mode, the desktop properties are untouched, then the current primary surface can be recycled
|
// in Windowize mode, the desktop properties are untouched, then the current primary surface can be recycled
|
||||||
@ -2380,6 +2403,14 @@ static HRESULT BuildPrimaryEmu(LPDIRECTDRAW lpdd, CreateSurface_Type pCreateSurf
|
|||||||
if((ddsd.ddpfPixelFormat.dwFlags & DDPF_PALETTEINDEXED8) &&
|
if((ddsd.ddpfPixelFormat.dwFlags & DDPF_PALETTEINDEXED8) &&
|
||||||
(dxw.dwFlags6 & SYNCPALETTE)){
|
(dxw.dwFlags6 & SYNCPALETTE)){
|
||||||
if(lpDDP == NULL){
|
if(lpDDP == NULL){
|
||||||
|
CreatePalette_Type pCreatePalette;
|
||||||
|
switch(dxversion){
|
||||||
|
default:
|
||||||
|
case 1: pCreatePalette = pCreatePalette1; break;
|
||||||
|
case 2: pCreatePalette = pCreatePalette2; break;
|
||||||
|
case 4: pCreatePalette = pCreatePalette4; break;
|
||||||
|
case 7: pCreatePalette = pCreatePalette7; break;
|
||||||
|
}
|
||||||
res=(*pCreatePalette)(lpdd, DDPCAPS_8BIT|DDPCAPS_ALLOW256, DefaultSystemPalette, &lpDDP, NULL);
|
res=(*pCreatePalette)(lpdd, DDPCAPS_8BIT|DDPCAPS_ALLOW256, DefaultSystemPalette, &lpDDP, NULL);
|
||||||
if(res) OutTrace("CreateSurface: CreatePalette ERROR err=%x at %d\n", res, __LINE__);
|
if(res) OutTrace("CreateSurface: CreatePalette ERROR err=%x at %d\n", res, __LINE__);
|
||||||
}
|
}
|
||||||
@ -2460,6 +2491,14 @@ static HRESULT BuildPrimaryFlippable(LPDIRECTDRAW lpdd, CreateSurface_Type pCrea
|
|||||||
if((ddsd.ddpfPixelFormat.dwFlags & DDPF_PALETTEINDEXED8) &&
|
if((ddsd.ddpfPixelFormat.dwFlags & DDPF_PALETTEINDEXED8) &&
|
||||||
(dxw.dwFlags6 & SYNCPALETTE)){
|
(dxw.dwFlags6 & SYNCPALETTE)){
|
||||||
if(lpDDP == NULL){
|
if(lpDDP == NULL){
|
||||||
|
CreatePalette_Type pCreatePalette;
|
||||||
|
switch(dxversion){
|
||||||
|
default:
|
||||||
|
case 1: pCreatePalette = pCreatePalette1; break;
|
||||||
|
case 2: pCreatePalette = pCreatePalette2; break;
|
||||||
|
case 4: pCreatePalette = pCreatePalette4; break;
|
||||||
|
case 7: pCreatePalette = pCreatePalette7; break;
|
||||||
|
}
|
||||||
res=(*pCreatePalette)(lpdd, DDPCAPS_8BIT|DDPCAPS_ALLOW256, DefaultSystemPalette, &lpDDP, NULL);
|
res=(*pCreatePalette)(lpdd, DDPCAPS_8BIT|DDPCAPS_ALLOW256, DefaultSystemPalette, &lpDDP, NULL);
|
||||||
if(res) OutTrace("CreateSurface: CreatePalette ERROR err=%x at %d\n", res, __LINE__);
|
if(res) OutTrace("CreateSurface: CreatePalette ERROR err=%x at %d\n", res, __LINE__);
|
||||||
}
|
}
|
||||||
@ -2505,6 +2544,14 @@ static HRESULT BuildPrimaryDir(LPDIRECTDRAW lpdd, CreateSurface_Type pCreateSurf
|
|||||||
if(res){
|
if(res){
|
||||||
if (res==DDERR_PRIMARYSURFACEALREADYEXISTS){
|
if (res==DDERR_PRIMARYSURFACEALREADYEXISTS){
|
||||||
LPDIRECTDRAWSURFACE lpPrim;
|
LPDIRECTDRAWSURFACE lpPrim;
|
||||||
|
GetGDISurface_Type pGetGDISurface;
|
||||||
|
switch(dxversion){
|
||||||
|
default:
|
||||||
|
case 1: pGetGDISurface = pGetGDISurface1; break;
|
||||||
|
case 2: pGetGDISurface = pGetGDISurface2; break;
|
||||||
|
case 4: pGetGDISurface = pGetGDISurface4; break;
|
||||||
|
case 7: pGetGDISurface = pGetGDISurface7; break;
|
||||||
|
}
|
||||||
OutTraceE("CreateSurface: CreateSurface DDERR_PRIMARYSURFACEALREADYEXISTS workaround\n");
|
OutTraceE("CreateSurface: CreateSurface DDERR_PRIMARYSURFACEALREADYEXISTS workaround\n");
|
||||||
(*pGetGDISurface)(lpPrimaryDD, &lpPrim);
|
(*pGetGDISurface)(lpPrimaryDD, &lpPrim);
|
||||||
while ((*pReleaseS)(lpPrim));
|
while ((*pReleaseS)(lpPrim));
|
||||||
@ -2584,6 +2631,14 @@ static HRESULT BuildBackBufferEmu(LPDIRECTDRAW lpdd, CreateSurface_Type pCreateS
|
|||||||
if((ddsd.ddpfPixelFormat.dwFlags & DDPF_PALETTEINDEXED8) &&
|
if((ddsd.ddpfPixelFormat.dwFlags & DDPF_PALETTEINDEXED8) &&
|
||||||
(dxw.dwFlags6 & SYNCPALETTE)){
|
(dxw.dwFlags6 & SYNCPALETTE)){
|
||||||
if(lpDDP == NULL){
|
if(lpDDP == NULL){
|
||||||
|
CreatePalette_Type pCreatePalette;
|
||||||
|
switch(dxversion){
|
||||||
|
default:
|
||||||
|
case 1: pCreatePalette = pCreatePalette1; break;
|
||||||
|
case 2: pCreatePalette = pCreatePalette2; break;
|
||||||
|
case 4: pCreatePalette = pCreatePalette4; break;
|
||||||
|
case 7: pCreatePalette = pCreatePalette7; break;
|
||||||
|
}
|
||||||
res=(*pCreatePalette)(lpdd, DDPCAPS_8BIT|DDPCAPS_ALLOW256, DefaultSystemPalette, &lpDDP, NULL);
|
res=(*pCreatePalette)(lpdd, DDPCAPS_8BIT|DDPCAPS_ALLOW256, DefaultSystemPalette, &lpDDP, NULL);
|
||||||
if(res) OutTrace("CreateSurface: CreatePalette ERROR err=%x at %d\n", res, __LINE__);
|
if(res) OutTrace("CreateSurface: CreatePalette ERROR err=%x at %d\n", res, __LINE__);
|
||||||
}
|
}
|
||||||
@ -2643,6 +2698,14 @@ static HRESULT BuildBackBufferFlippable(LPDIRECTDRAW lpdd, CreateSurface_Type pC
|
|||||||
if((ddsd.ddpfPixelFormat.dwFlags & DDPF_PALETTEINDEXED8) &&
|
if((ddsd.ddpfPixelFormat.dwFlags & DDPF_PALETTEINDEXED8) &&
|
||||||
(dxw.dwFlags6 & SYNCPALETTE)){
|
(dxw.dwFlags6 & SYNCPALETTE)){
|
||||||
if(lpDDP == NULL){
|
if(lpDDP == NULL){
|
||||||
|
CreatePalette_Type pCreatePalette;
|
||||||
|
switch(dxversion){
|
||||||
|
default:
|
||||||
|
case 1: pCreatePalette = pCreatePalette1; break;
|
||||||
|
case 2: pCreatePalette = pCreatePalette2; break;
|
||||||
|
case 4: pCreatePalette = pCreatePalette4; break;
|
||||||
|
case 7: pCreatePalette = pCreatePalette7; break;
|
||||||
|
}
|
||||||
res=(*pCreatePalette)(lpdd, DDPCAPS_8BIT|DDPCAPS_ALLOW256, DefaultSystemPalette, &lpDDP, NULL);
|
res=(*pCreatePalette)(lpdd, DDPCAPS_8BIT|DDPCAPS_ALLOW256, DefaultSystemPalette, &lpDDP, NULL);
|
||||||
if(res) OutTrace("CreateSurface: CreatePalette ERROR err=%x at %d\n", res, __LINE__);
|
if(res) OutTrace("CreateSurface: CreatePalette ERROR err=%x at %d\n", res, __LINE__);
|
||||||
}
|
}
|
||||||
@ -2726,6 +2789,14 @@ static HRESULT BuildBackBufferDir(LPDIRECTDRAW lpdd, CreateSurface_Type pCreateS
|
|||||||
if (dxw.dwFlags2 & BACKBUFATTACH) {
|
if (dxw.dwFlags2 & BACKBUFATTACH) {
|
||||||
LPDIRECTDRAWSURFACE lpPrim;
|
LPDIRECTDRAWSURFACE lpPrim;
|
||||||
DDSURFACEDESC2 prim;
|
DDSURFACEDESC2 prim;
|
||||||
|
GetGDISurface_Type pGetGDISurface;
|
||||||
|
switch(dxversion){
|
||||||
|
default:
|
||||||
|
case 1: pGetGDISurface = pGetGDISurface1; break;
|
||||||
|
case 2: pGetGDISurface = pGetGDISurface2; break;
|
||||||
|
case 4: pGetGDISurface = pGetGDISurface4; break;
|
||||||
|
case 7: pGetGDISurface = pGetGDISurface7; break;
|
||||||
|
}
|
||||||
(*pGetGDISurface)(lpPrimaryDD, &lpPrim);
|
(*pGetGDISurface)(lpPrimaryDD, &lpPrim);
|
||||||
memset(&prim, 0, sizeof(DDSURFACEDESC2));
|
memset(&prim, 0, sizeof(DDSURFACEDESC2));
|
||||||
prim.dwSize = (dxversion >= 4) ? sizeof(DDSURFACEDESC2) : sizeof(DDSURFACEDESC);
|
prim.dwSize = (dxversion >= 4) ? sizeof(DDSURFACEDESC2) : sizeof(DDSURFACEDESC);
|
||||||
@ -3088,9 +3159,6 @@ HRESULT WINAPI extCreateSurface1(LPDIRECTDRAW lpdd, DDSURFACEDESC *lpddsd, LPDIR
|
|||||||
HRESULT WINAPI extCreateSurface2(LPDIRECTDRAW lpdd, DDSURFACEDESC *lpddsd, LPDIRECTDRAWSURFACE *lplpdds, void *pu)
|
HRESULT WINAPI extCreateSurface2(LPDIRECTDRAW lpdd, DDSURFACEDESC *lpddsd, LPDIRECTDRAWSURFACE *lplpdds, void *pu)
|
||||||
{ return extCreateSurface(2, (CreateSurface_Type)pCreateSurface2, lpdd, (DDSURFACEDESC2 *)lpddsd, lplpdds, pu); }
|
{ return extCreateSurface(2, (CreateSurface_Type)pCreateSurface2, lpdd, (DDSURFACEDESC2 *)lpddsd, lplpdds, pu); }
|
||||||
|
|
||||||
HRESULT WINAPI extCreateSurface3(LPDIRECTDRAW lpdd, DDSURFACEDESC *lpddsd, LPDIRECTDRAWSURFACE *lplpdds, void *pu)
|
|
||||||
{ return extCreateSurface(3, (CreateSurface_Type)pCreateSurface3, lpdd, (DDSURFACEDESC2 *)lpddsd, lplpdds, pu); }
|
|
||||||
|
|
||||||
HRESULT WINAPI extCreateSurface4(LPDIRECTDRAW lpdd, DDSURFACEDESC2 *lpddsd, LPDIRECTDRAWSURFACE *lplpdds, void *pu)
|
HRESULT WINAPI extCreateSurface4(LPDIRECTDRAW lpdd, DDSURFACEDESC2 *lpddsd, LPDIRECTDRAWSURFACE *lplpdds, void *pu)
|
||||||
{ return extCreateSurface(4, (CreateSurface_Type)pCreateSurface4, lpdd, (DDSURFACEDESC2 *)lpddsd, lplpdds, pu); }
|
{ return extCreateSurface(4, (CreateSurface_Type)pCreateSurface4, lpdd, (DDSURFACEDESC2 *)lpddsd, lplpdds, pu); }
|
||||||
|
|
||||||
@ -3789,12 +3857,12 @@ HRESULT WINAPI extWaitForVerticalBlank(LPDIRECTDRAW lpdd, DWORD dwflags, HANDLE
|
|||||||
|
|
||||||
#define DDPCAPS_INITIALIZE_LEGACY 0x00000008l
|
#define DDPCAPS_INITIALIZE_LEGACY 0x00000008l
|
||||||
|
|
||||||
HRESULT WINAPI extCreatePalette(LPDIRECTDRAW lpdd, DWORD dwflags, LPPALETTEENTRY lpddpa,
|
HRESULT WINAPI extCreatePalette(int version, CreatePalette_Type pCreatePalette,
|
||||||
LPDIRECTDRAWPALETTE *lplpddp, IUnknown *pu)
|
LPDIRECTDRAW lpdd, DWORD dwflags, LPPALETTEENTRY lpddpa, LPDIRECTDRAWPALETTE *lplpddp, IUnknown *pu)
|
||||||
{
|
{
|
||||||
HRESULT res;
|
HRESULT res;
|
||||||
|
|
||||||
OutTraceDDRAW("CreatePalette: dwFlags=%x(%s)\n", dwflags, ExplainCreatePaletteFlags(dwflags));
|
OutTraceDDRAW("CreatePalette: lpdd=%x dwFlags=%x(%s)\n", lpdd, dwflags, ExplainCreatePaletteFlags(dwflags));
|
||||||
if(IsDebug && (dwflags & DDPCAPS_8BIT)) dxw.DumpPalette(256, lpddpa);
|
if(IsDebug && (dwflags & DDPCAPS_8BIT)) dxw.DumpPalette(256, lpddpa);
|
||||||
|
|
||||||
if(dxw.dwFlags1 & EMULATESURFACE) dwflags &= ~DDPCAPS_PRIMARYSURFACE;
|
if(dxw.dwFlags1 & EMULATESURFACE) dwflags &= ~DDPCAPS_PRIMARYSURFACE;
|
||||||
@ -3806,9 +3874,21 @@ HRESULT WINAPI extCreatePalette(LPDIRECTDRAW lpdd, DWORD dwflags, LPPALETTEENTRY
|
|||||||
|
|
||||||
OutTraceDDRAW("CreatePalette: OK lpddp=%x\n", *lplpddp);
|
OutTraceDDRAW("CreatePalette: OK lpddp=%x\n", *lplpddp);
|
||||||
HookDDPalette(lplpddp);
|
HookDDPalette(lplpddp);
|
||||||
return 0;
|
return DD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HRESULT WINAPI extCreatePalette1(LPDIRECTDRAW lpdd, DWORD dwflags, LPPALETTEENTRY lpddpa, LPDIRECTDRAWPALETTE *lplpddp, IUnknown *pu)
|
||||||
|
{ return extCreatePalette(1, (CreatePalette_Type)pCreatePalette1, lpdd, dwflags, lpddpa, lplpddp, pu); }
|
||||||
|
|
||||||
|
HRESULT WINAPI extCreatePalette2(LPDIRECTDRAW lpdd, DWORD dwflags, LPPALETTEENTRY lpddpa, LPDIRECTDRAWPALETTE *lplpddp, IUnknown *pu)
|
||||||
|
{ return extCreatePalette(2, (CreatePalette_Type)pCreatePalette2, lpdd, dwflags, lpddpa, lplpddp, pu); }
|
||||||
|
|
||||||
|
HRESULT WINAPI extCreatePalette4(LPDIRECTDRAW lpdd, DWORD dwflags, LPPALETTEENTRY lpddpa, LPDIRECTDRAWPALETTE *lplpddp, IUnknown *pu)
|
||||||
|
{ return extCreatePalette(4, (CreatePalette_Type)pCreatePalette4, lpdd, dwflags, lpddpa, lplpddp, pu); }
|
||||||
|
|
||||||
|
HRESULT WINAPI extCreatePalette7(LPDIRECTDRAW lpdd, DWORD dwflags, LPPALETTEENTRY lpddpa, LPDIRECTDRAWPALETTE *lplpddp, IUnknown *pu)
|
||||||
|
{ return extCreatePalette(7, (CreatePalette_Type)pCreatePalette7, lpdd, dwflags, lpddpa, lplpddp, pu); }
|
||||||
|
|
||||||
HRESULT WINAPI extGetPalette(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWPALETTE *lplpddp)
|
HRESULT WINAPI extGetPalette(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWPALETTE *lplpddp)
|
||||||
{
|
{
|
||||||
HRESULT res;
|
HRESULT res;
|
||||||
@ -4019,7 +4099,7 @@ HRESULT WINAPI extLockDir(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDDSURFACED
|
|||||||
// V2.02.43: Empire Earth does some test Lock operations apparently before the primary surface is created
|
// V2.02.43: Empire Earth does some test Lock operations apparently before the primary surface is created
|
||||||
if(lpPrimaryDD){
|
if(lpPrimaryDD){
|
||||||
lpDDSPrim=0;
|
lpDDSPrim=0;
|
||||||
res2=(*pGetGDISurface)(lpPrimaryDD, &lpDDSPrim);
|
res2=(*pGetGDISurface1)(lpPrimaryDD, &lpDDSPrim);
|
||||||
if(res2)
|
if(res2)
|
||||||
OutTraceE("Lock: GetGDISurface ERROR res=%x(%s) at %d\n", res2, ExplainDDError(res2), __LINE__);
|
OutTraceE("Lock: GetGDISurface ERROR res=%x(%s) at %d\n", res2, ExplainDDError(res2), __LINE__);
|
||||||
else
|
else
|
||||||
@ -4185,6 +4265,7 @@ HRESULT WINAPI extUnlockDir(int dxversion, Unlock4_Type pUnlock, LPDIRECTDRAWSUR
|
|||||||
//RECT screen, rect;
|
//RECT screen, rect;
|
||||||
BOOL IsPrim;
|
BOOL IsPrim;
|
||||||
LPDIRECTDRAWSURFACE lpDDSPrim;
|
LPDIRECTDRAWSURFACE lpDDSPrim;
|
||||||
|
GetGDISurface_Type pGetGDISurface;
|
||||||
|
|
||||||
IsPrim=dxwss.IsAPrimarySurface(lpdds);
|
IsPrim=dxwss.IsAPrimarySurface(lpdds);
|
||||||
|
|
||||||
@ -4202,6 +4283,13 @@ HRESULT WINAPI extUnlockDir(int dxversion, Unlock4_Type pUnlock, LPDIRECTDRAWSUR
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(dxw.dwFlags1 & LOCKEDSURFACE){
|
if(dxw.dwFlags1 & LOCKEDSURFACE){
|
||||||
|
switch(dxversion){
|
||||||
|
default:
|
||||||
|
case 1: pGetGDISurface = pGetGDISurface1; break;
|
||||||
|
case 2: pGetGDISurface = pGetGDISurface2; break;
|
||||||
|
case 4: pGetGDISurface = pGetGDISurface4; break;
|
||||||
|
case 7: pGetGDISurface = pGetGDISurface7; break;
|
||||||
|
}
|
||||||
(*pGetGDISurface)(lpPrimaryDD, &lpDDSPrim);
|
(*pGetGDISurface)(lpPrimaryDD, &lpDDSPrim);
|
||||||
if(lpdds==lpDDSPrim && lpDDSBuffer){
|
if(lpdds==lpDDSPrim && lpDDSBuffer){
|
||||||
RECT client;
|
RECT client;
|
||||||
@ -4268,7 +4356,7 @@ HRESULT WINAPI extGetDC(LPDIRECTDRAWSURFACE lpdds, HDC FAR *pHDC)
|
|||||||
if(lpDDP==NULL){
|
if(lpDDP==NULL){
|
||||||
// should link here to the GDI palette? See Hyperblade....
|
// should link here to the GDI palette? See Hyperblade....
|
||||||
dxw.palNumEntries=256;
|
dxw.palNumEntries=256;
|
||||||
res=(*pCreatePalette)(lpPrimaryDD, DDPCAPS_ALLOW256|DDPCAPS_8BIT|DDPCAPS_INITIALIZE, dxw.palPalEntry, &lpDDP, NULL);
|
res=(*pCreatePalette1)(lpPrimaryDD, DDPCAPS_ALLOW256|DDPCAPS_8BIT|DDPCAPS_INITIALIZE, dxw.palPalEntry, &lpDDP, NULL);
|
||||||
if (res) {
|
if (res) {
|
||||||
OutTraceE("GetDC: CreatePalette ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
OutTraceE("GetDC: CreatePalette ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
||||||
return res;
|
return res;
|
||||||
@ -4318,7 +4406,7 @@ HRESULT WINAPI extFlipToGDISurface(LPDIRECTDRAW lpdd)
|
|||||||
return DD_OK;
|
return DD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT WINAPI extGetGDISurface(LPDIRECTDRAW lpdd, LPDIRECTDRAWSURFACE *w)
|
HRESULT WINAPI extGetGDISurface(GetGDISurface_Type pGetGDISurface, LPDIRECTDRAW lpdd, LPDIRECTDRAWSURFACE *w)
|
||||||
{
|
{
|
||||||
int res;
|
int res;
|
||||||
|
|
||||||
@ -4341,6 +4429,18 @@ HRESULT WINAPI extGetGDISurface(LPDIRECTDRAW lpdd, LPDIRECTDRAWSURFACE *w)
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HRESULT WINAPI extGetGDISurface1(LPDIRECTDRAW lpdd, LPDIRECTDRAWSURFACE *w)
|
||||||
|
{ return extGetGDISurface(pGetGDISurface1, lpdd, w); }
|
||||||
|
|
||||||
|
HRESULT WINAPI extGetGDISurface2(LPDIRECTDRAW lpdd, LPDIRECTDRAWSURFACE *w)
|
||||||
|
{ return extGetGDISurface(pGetGDISurface2, lpdd, w); }
|
||||||
|
|
||||||
|
HRESULT WINAPI extGetGDISurface4(LPDIRECTDRAW lpdd, LPDIRECTDRAWSURFACE *w)
|
||||||
|
{ return extGetGDISurface(pGetGDISurface4, lpdd, w); }
|
||||||
|
|
||||||
|
HRESULT WINAPI extGetGDISurface7(LPDIRECTDRAW lpdd, LPDIRECTDRAWSURFACE *w)
|
||||||
|
{ return extGetGDISurface(pGetGDISurface7, lpdd, w); }
|
||||||
|
|
||||||
// debug function to dump all video modes queried by the DirectDrav::EnumDisplayModes method
|
// debug function to dump all video modes queried by the DirectDrav::EnumDisplayModes method
|
||||||
|
|
||||||
HRESULT WINAPI EnumModesCallbackDumper(LPDDSURFACEDESC lpDDSurfaceDesc, LPVOID lpContext)
|
HRESULT WINAPI EnumModesCallbackDumper(LPDDSURFACEDESC lpDDSurfaceDesc, LPVOID lpContext)
|
||||||
|
@ -24,7 +24,6 @@
|
|||||||
#include "MinHook.h"
|
#include "MinHook.h"
|
||||||
|
|
||||||
#define SKIPIMEWINDOW TRUE
|
#define SKIPIMEWINDOW TRUE
|
||||||
#define HOOKDIRECTSOUND TRUE
|
|
||||||
|
|
||||||
dxwCore dxw;
|
dxwCore dxw;
|
||||||
dxwSStack dxwss;
|
dxwSStack dxwss;
|
||||||
@ -903,8 +902,8 @@ void HookModule(HMODULE base, int dxversion)
|
|||||||
(dxw.dwTFlags & OUTREGISTRY)) HookAdvApi32(base);
|
(dxw.dwTFlags & OUTREGISTRY)) HookAdvApi32(base);
|
||||||
HookMSV4WLibs(base); // -- used by Aliens & Amazons demo: what for?
|
HookMSV4WLibs(base); // -- used by Aliens & Amazons demo: what for?
|
||||||
HookAVIFil32(base);
|
HookAVIFil32(base);
|
||||||
//HookSmackW32(base);
|
if(dxw.dwFlags7 & HOOKSMACKW32) HookSmackW32(base);
|
||||||
if (HOOKDIRECTSOUND) HookDirectSound(base);
|
if(dxw.dwFlags7 & HOOKDIRECTSOUND) HookDirectSound(base);
|
||||||
//HookComDlg32(base);
|
//HookComDlg32(base);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1292,6 +1291,21 @@ void HookInit(TARGETMAP *target, HWND hwnd)
|
|||||||
dxw.hParentWnd, ClassName, WinText, dwStyle, ExplainStyle(dwStyle), dwExStyle, ExplainExStyle(dwExStyle));
|
dxw.hParentWnd, ClassName, WinText, dwStyle, ExplainStyle(dwStyle), dwExStyle, ExplainExStyle(dwExStyle));
|
||||||
OutTrace("HookInit: target window pos=(%d,%d) size=(%d,%d)\n", dxw.iPosX, dxw.iPosY, dxw.iSizX, dxw.iSizY);
|
OutTrace("HookInit: target window pos=(%d,%d) size=(%d,%d)\n", dxw.iPosX, dxw.iPosY, dxw.iSizX, dxw.iSizY);
|
||||||
dxw.DumpDesktopStatus();
|
dxw.DumpDesktopStatus();
|
||||||
|
typedef HRESULT (WINAPI *DwmIsCompositionEnabled_Type)(BOOL *);
|
||||||
|
DwmIsCompositionEnabled_Type pDwmIsCompositionEnabled = NULL;
|
||||||
|
HMODULE DwnApiHdl;
|
||||||
|
DwnApiHdl = LoadLibrary("Dwmapi.dll");
|
||||||
|
if (DwnApiHdl) pDwmIsCompositionEnabled = (DwmIsCompositionEnabled_Type)GetProcAddress(DwnApiHdl, "DwmIsCompositionEnabled");
|
||||||
|
char *sRes;
|
||||||
|
if(pDwmIsCompositionEnabled){
|
||||||
|
HRESULT res;
|
||||||
|
BOOL val;
|
||||||
|
res = (*pDwmIsCompositionEnabled)(&val);
|
||||||
|
if(res==S_OK) sRes = val ? "ENABLED" : "DISABLED";
|
||||||
|
else sRes = "ERROR";
|
||||||
|
}
|
||||||
|
else sRes = "Unknown";
|
||||||
|
OutTrace("HookInit: DWMComposition %s\n", sRes);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SKIPIMEWINDOW) {
|
if (SKIPIMEWINDOW) {
|
||||||
|
@ -27,7 +27,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
#include "TlHelp32.h"
|
#include "TlHelp32.h"
|
||||||
|
|
||||||
#define VERSION "2.03.56"
|
#define VERSION "2.03.57"
|
||||||
|
|
||||||
#define DDTHREADLOCK 1
|
#define DDTHREADLOCK 1
|
||||||
//#define LOCKTHREADS
|
//#define LOCKTHREADS
|
||||||
|
Binary file not shown.
@ -904,7 +904,6 @@ BOOL WINAPI extCreateProcessA(
|
|||||||
if(dxw.dwFlags5 & INJECTSON) {
|
if(dxw.dwFlags5 & INJECTSON) {
|
||||||
DEBUG_EVENT debug_event ={0};
|
DEBUG_EVENT debug_event ={0};
|
||||||
char path[MAX_PATH];
|
char path[MAX_PATH];
|
||||||
extern char *GetFileNameFromHandle(HANDLE);
|
|
||||||
DWORD dwContinueStatus = DBG_CONTINUE;
|
DWORD dwContinueStatus = DBG_CONTINUE;
|
||||||
extern BOOL Inject(DWORD, const char *);
|
extern BOOL Inject(DWORD, const char *);
|
||||||
LPVOID LastExceptionPtr = 0;
|
LPVOID LastExceptionPtr = 0;
|
||||||
|
@ -330,7 +330,7 @@ void dxwSDC::copyDcAttributes(HDC destDC, HDC origDc, POINT origin)
|
|||||||
SetTextCharacterExtra(destDC, GetTextCharacterExtra(origDc));
|
SetTextCharacterExtra(destDC, GetTextCharacterExtra(origDc));
|
||||||
SetTextColor(destDC, GetTextColor(origDc));
|
SetTextColor(destDC, GetTextColor(origDc));
|
||||||
|
|
||||||
OutTrace("copyDcAttributes: orig=(%d,%d)\n", origin.x, origin.y);
|
OutTraceB("copyDcAttributes: orig=(%d,%d)\n", origin.x, origin.y);
|
||||||
if(!(*pSetWindowOrgEx)(destDC, -origin.x, -origin.y, NULL))
|
if(!(*pSetWindowOrgEx)(destDC, -origin.x, -origin.y, NULL))
|
||||||
OutTraceE("copyDcAttributes: SetWindowOrgEx ERROR orig=(%d,%d) err=%d\n", origin.x, origin.y, GetLastError());
|
OutTraceE("copyDcAttributes: SetWindowOrgEx ERROR orig=(%d,%d) err=%d\n", origin.x, origin.y, GetLastError());
|
||||||
|
|
||||||
@ -355,35 +355,36 @@ typedef struct
|
|||||||
static BOOL CALLBACK excludeClipRectsForOverlappingWindows(HWND hwnd, LPARAM lParam)
|
static BOOL CALLBACK excludeClipRectsForOverlappingWindows(HWND hwnd, LPARAM lParam)
|
||||||
{
|
{
|
||||||
ExcludeClipRectsData_Type *excludeClipRectsData = (ExcludeClipRectsData_Type *)lParam;
|
ExcludeClipRectsData_Type *excludeClipRectsData = (ExcludeClipRectsData_Type *)lParam;
|
||||||
if (hwnd == dxw.GethWnd()) return FALSE; // stop
|
|
||||||
if (!IsWindowVisible(hwnd)) return TRUE; // go ahead
|
if (!IsWindowVisible(hwnd)) return TRUE; // go ahead
|
||||||
|
if (hwnd == excludeClipRectsData->rootWnd) return FALSE; // stop
|
||||||
|
if(dxw.IsDesktop(hwnd)) return FALSE;
|
||||||
|
|
||||||
RECT rect = {};
|
RECT rect = {};
|
||||||
(*pGetWindowRect)(hwnd, &rect);
|
(*pGetClientRect)(hwnd, &rect);
|
||||||
OffsetRect(&rect, -excludeClipRectsData->origin.x, -excludeClipRectsData->origin.y);
|
OffsetRect(&rect, -excludeClipRectsData->origin.x, -excludeClipRectsData->origin.y);
|
||||||
ExcludeClipRect(excludeClipRectsData->compatDc, rect.left, rect.top, rect.right, rect.bottom);
|
ExcludeClipRect(excludeClipRectsData->compatDc, rect.left, rect.top, rect.right, rect.bottom);
|
||||||
OutTrace("dxwSDC::excludeClipRects: hwnd=%x rect=(%d,%d)-(%d,%d)\n", hwnd, rect.left, rect.top, rect.right, rect.bottom);
|
OutTraceB("dxwSDC::excludeClipRects: hwnd=%x rect=(%d,%d)-(%d,%d)\n", hwnd, rect.left, rect.top, rect.right, rect.bottom);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void dxwSDC::setClippingRegion(HDC compatDc, HDC origDc, POINT& origin)
|
void dxwSDC::setClippingRegion(HDC compatDc, HDC origDc, POINT& origin)
|
||||||
{
|
{
|
||||||
OutTrace("dxwSDC::setClippingRegion: compdc=%x origdc=%x origin=(%d,%d)\n", compatDc, origDc, origin.x, origin.y);
|
OutTraceB("dxwSDC::setClippingRegion: compdc=%x origdc=%x origin=(%d,%d)\n", compatDc, origDc, origin.x, origin.y);
|
||||||
HRGN clipRgn = CreateRectRgn(0, 0, 0, 0);
|
HRGN clipRgn = CreateRectRgn(0, 0, 0, 0);
|
||||||
const bool isEmptyClipRgn = (1 != GetRandomRgn(origDc, clipRgn, SYSRGN));
|
const bool isEmptyClipRgn = (1 != GetRandomRgn(origDc, clipRgn, SYSRGN));
|
||||||
OutTrace("dxwSDC::setClippingRegion: isEmptyClipRgn=%x\n", isEmptyClipRgn);
|
OutTraceB("dxwSDC::setClippingRegion: isEmptyClipRgn=%x\n", isEmptyClipRgn);
|
||||||
// scale clip region
|
// scale clip region
|
||||||
POINT upleft={0, 0};
|
POINT upleft={0, 0};
|
||||||
//(*pClientToScreen)(dxw.GethWnd(), &upleft);
|
//(*pClientToScreen)(dxw.GethWnd(), &upleft);
|
||||||
(*pClientToScreen)(CurrenthWnd, &upleft);
|
(*pClientToScreen)(CurrenthWnd, &upleft);
|
||||||
if(IsDebug){
|
if(IsDebug){
|
||||||
OutTrace("dxwSDC::setClippingRegion: upleft=(%d,%d)\n", upleft.x, upleft.y);
|
OutTraceB("dxwSDC::setClippingRegion: upleft=(%d,%d)\n", upleft.x, upleft.y);
|
||||||
}
|
}
|
||||||
OffsetRgn(clipRgn, -upleft.x, -upleft.y);
|
OffsetRgn(clipRgn, -upleft.x, -upleft.y);
|
||||||
if(IsDebug){
|
if(IsDebug){
|
||||||
RECT RgnBox;
|
RECT RgnBox;
|
||||||
GetRgnBox(clipRgn, &RgnBox);
|
GetRgnBox(clipRgn, &RgnBox);
|
||||||
OutTrace("dxwSDC::setClippingRegion: RgnBox=(%d,%d)-(%d,%d) size=(%dx%d)\n",
|
OutTraceB("dxwSDC::setClippingRegion: RgnBox=(%d,%d)-(%d,%d) size=(%dx%d)\n",
|
||||||
RgnBox.left, RgnBox.top, RgnBox.right, RgnBox.bottom, RgnBox.right-RgnBox.left, RgnBox.bottom-RgnBox.top);
|
RgnBox.left, RgnBox.top, RgnBox.right, RgnBox.bottom, RgnBox.right-RgnBox.left, RgnBox.bottom-RgnBox.top);
|
||||||
}
|
}
|
||||||
// end of scaling
|
// end of scaling
|
||||||
@ -393,13 +394,13 @@ void dxwSDC::setClippingRegion(HDC compatDc, HDC origDc, POINT& origin)
|
|||||||
HRGN origClipRgn = (*pCreateRectRgn)(0, 0, 0, 0);
|
HRGN origClipRgn = (*pCreateRectRgn)(0, 0, 0, 0);
|
||||||
if (1 == GetClipRgn(origDc, origClipRgn))
|
if (1 == GetClipRgn(origDc, origClipRgn))
|
||||||
{
|
{
|
||||||
OutTrace("dxwSDC::setClippingRegion: GetClipRgn==1\n");
|
OutTraceB("dxwSDC::setClippingRegion: GetClipRgn==1\n");
|
||||||
OffsetRgn(origClipRgn, origin.x, origin.y);
|
OffsetRgn(origClipRgn, origin.x, origin.y);
|
||||||
ExtSelectClipRgn(compatDc, origClipRgn, RGN_AND);
|
ExtSelectClipRgn(compatDc, origClipRgn, RGN_AND);
|
||||||
if(IsDebug){
|
if(IsDebug){
|
||||||
RECT RgnBox;
|
RECT RgnBox;
|
||||||
GetRgnBox(origClipRgn, &RgnBox); // for logging only
|
GetRgnBox(origClipRgn, &RgnBox); // for logging only
|
||||||
OutTrace("dxwSDC::setClippingRegion: OrigRgnBox=(%d,%d)-(%d,%d)\n", RgnBox.left, RgnBox.top, RgnBox.right, RgnBox.bottom);
|
OutTraceB("dxwSDC::setClippingRegion: OrigRgnBox=(%d,%d)-(%d,%d)\n", RgnBox.left, RgnBox.top, RgnBox.right, RgnBox.bottom);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DeleteObject(origClipRgn);
|
DeleteObject(origClipRgn);
|
||||||
@ -408,10 +409,13 @@ void dxwSDC::setClippingRegion(HDC compatDc, HDC origDc, POINT& origin)
|
|||||||
// to finish .....
|
// to finish .....
|
||||||
// on Win10 this part seems unnecessary and giving troubles .....
|
// on Win10 this part seems unnecessary and giving troubles .....
|
||||||
if (!isEmptyClipRgn){
|
if (!isEmptyClipRgn){
|
||||||
|
OutTraceB("dxwSDC::setClippingRegion: isEmptyClipRgn FALSE\n");
|
||||||
HWND hwnd = WindowFromDC(origDc);
|
HWND hwnd = WindowFromDC(origDc);
|
||||||
if (hwnd)
|
if (hwnd && (!dxw.IsDesktop(hwnd))){
|
||||||
{
|
ExcludeClipRectsData_Type excludeClipRectsData = { compatDc, origin, dxw.GethWnd() };
|
||||||
ExcludeClipRectsData_Type excludeClipRectsData = { compatDc, origin, GetAncestor(hwnd, GA_ROOT) };
|
//ExcludeClipRectsData_Type excludeClipRectsData = { compatDc, origin, GetAncestor(hwnd, GA_ROOT) };
|
||||||
|
OutTraceB("dxwSDC::setClippingRegion: compatdc=%x origin=(%d,%d) ancestor=%x\n",
|
||||||
|
compatDc, origin.x, origin.y, dxw.GethWnd());
|
||||||
EnumWindows(&excludeClipRectsForOverlappingWindows,(LPARAM)(&excludeClipRectsData));
|
EnumWindows(&excludeClipRectsForOverlappingWindows,(LPARAM)(&excludeClipRectsData));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@ SmackOpen_Type pSmackOpen = NULL;
|
|||||||
SmackStruct * WINAPI extSmackOpen(HANDLE, UINT32, INT32);
|
SmackStruct * WINAPI extSmackOpen(HANDLE, UINT32, INT32);
|
||||||
|
|
||||||
static HookEntryEx_Type Hooks[]={
|
static HookEntryEx_Type Hooks[]={
|
||||||
{HOOK_IAT_CANDIDATE, 0, "_SmackOpen@12", (FARPROC)NULL, (FARPROC *)&pSmackOpen, (FARPROC)extSmackOpen},
|
{HOOK_IAT_CANDIDATE, 0x000E, "_SmackOpen@12", (FARPROC)NULL, (FARPROC *)&pSmackOpen, (FARPROC)extSmackOpen},
|
||||||
{HOOK_IAT_CANDIDATE, 0, 0, NULL, 0, 0} // terminator
|
{HOOK_IAT_CANDIDATE, 0, 0, NULL, 0, 0} // terminator
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -67,4 +67,16 @@ SmackStruct * WINAPI extSmackOpen(HANDLE SmackFile, UINT32 flags, INT32 unknown)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------
|
||||||
|
Used by M2 Tank Platoon II:
|
||||||
|
Ordinal 0x0015 name _SmackNextFrame@4
|
||||||
|
Ordinal 0x000E name _SmackOpen@12
|
||||||
|
Ordinal 0x0026 name _SmackSoundUseDirectSound@4
|
||||||
|
Ordinal 0x0012 name _SmackClose@4
|
||||||
|
Ordinal 0x0013 name _SmackDoFrame@4
|
||||||
|
Ordinal 0x0017 name _SmackToBuffer@28
|
||||||
|
Ordinal 0x0020 name _SmackWait@4
|
||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -207,7 +207,7 @@ static HookEntryEx_Type SyscallHooks[]={
|
|||||||
{HOOK_HOT_CANDIDATE, 0, "FillRect", (FARPROC)NULL, (FARPROC *)&pFillRect, (FARPROC)extFillRect},
|
{HOOK_HOT_CANDIDATE, 0, "FillRect", (FARPROC)NULL, (FARPROC *)&pFillRect, (FARPROC)extFillRect},
|
||||||
{HOOK_HOT_CANDIDATE, 0, "InvertRect", (FARPROC)NULL, (FARPROC *)&pInvertRect, (FARPROC)extInvertRect},
|
{HOOK_HOT_CANDIDATE, 0, "InvertRect", (FARPROC)NULL, (FARPROC *)&pInvertRect, (FARPROC)extInvertRect},
|
||||||
{HOOK_HOT_CANDIDATE, 0, "DrawIcon", (FARPROC)NULL, (FARPROC *)&pDrawIcon, (FARPROC)extDrawIcon},
|
{HOOK_HOT_CANDIDATE, 0, "DrawIcon", (FARPROC)NULL, (FARPROC *)&pDrawIcon, (FARPROC)extDrawIcon},
|
||||||
{HOOK_HOT_CANDIDATE, 0, "DrawIconEx", (FARPROC)NULL, (FARPROC *)&pDrawIconEx, (FARPROC)extDrawIconEx},
|
{HOOK_IAT_CANDIDATE, 0, "DrawIconEx", (FARPROC)NULL, (FARPROC *)&pDrawIconEx, (FARPROC)extDrawIconEx},
|
||||||
{HOOK_HOT_CANDIDATE, 0, "DrawCaption", (FARPROC)NULL, (FARPROC *)&pDrawCaption, (FARPROC)extDrawCaption},
|
{HOOK_HOT_CANDIDATE, 0, "DrawCaption", (FARPROC)NULL, (FARPROC *)&pDrawCaption, (FARPROC)extDrawCaption},
|
||||||
//TODO {HOOK_HOT_CANDIDATE, 0, "DrawEdge", (FARPROC)NULL, (FARPROC *)&pDrawEdge, (FARPROC)extDrawEdge},
|
//TODO {HOOK_HOT_CANDIDATE, 0, "DrawEdge", (FARPROC)NULL, (FARPROC *)&pDrawEdge, (FARPROC)extDrawEdge},
|
||||||
//TODO {HOOK_HOT_CANDIDATE, 0, "DrawFocusRect", (FARPROC)NULL, (FARPROC *)&pDrawFocusRect, (FARPROC)extDrawFocusRect},
|
//TODO {HOOK_HOT_CANDIDATE, 0, "DrawFocusRect", (FARPROC)NULL, (FARPROC *)&pDrawFocusRect, (FARPROC)extDrawFocusRect},
|
||||||
@ -3559,7 +3559,7 @@ BOOL WINAPI extDrawIcon(HDC hdc, int X, int Y, HICON hIcon)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// not working in HOT PATCH mode
|
||||||
BOOL WINAPI extDrawIconEx( HDC hdc, int xLeft, int yTop, HICON hIcon, int cxWidth, int cyWidth, UINT istepIfAniCur, HBRUSH hbrFlickerFreeDraw, UINT diFlags)
|
BOOL WINAPI extDrawIconEx( HDC hdc, int xLeft, int yTop, HICON hIcon, int cxWidth, int cyWidth, UINT istepIfAniCur, HBRUSH hbrFlickerFreeDraw, UINT diFlags)
|
||||||
{
|
{
|
||||||
BOOL ret;
|
BOOL ret;
|
||||||
|
@ -45,6 +45,8 @@ void CTabCompat::DoDataExchange(CDataExchange* pDX)
|
|||||||
DDX_Check(pDX, IDC_DISABLEDISABLEALTTAB, cTarget->m_DisableDisableAltTab);
|
DDX_Check(pDX, IDC_DISABLEDISABLEALTTAB, cTarget->m_DisableDisableAltTab);
|
||||||
DDX_Check(pDX, IDC_NOIMAGEHLP, cTarget->m_NoImagehlp);
|
DDX_Check(pDX, IDC_NOIMAGEHLP, cTarget->m_NoImagehlp);
|
||||||
DDX_Check(pDX, IDC_REPLACEPRIVOPS, cTarget->m_ReplacePrivOps);
|
DDX_Check(pDX, IDC_REPLACEPRIVOPS, cTarget->m_ReplacePrivOps);
|
||||||
|
DDX_Check(pDX, IDC_HOOKDIRECTSOUND, cTarget->m_HookDirectSound);
|
||||||
|
DDX_Check(pDX, IDC_HOOKSMACKW32, cTarget->m_HookSmackW32);
|
||||||
|
|
||||||
// Registry management
|
// Registry management
|
||||||
DDX_Check(pDX, IDC_EMULATEREGISTRY, cTarget->m_EmulateRegistry);
|
DDX_Check(pDX, IDC_EMULATEREGISTRY, cTarget->m_EmulateRegistry);
|
||||||
|
@ -58,6 +58,8 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
|
|||||||
m_SetCompatibility = TRUE; // default true !!
|
m_SetCompatibility = TRUE; // default true !!
|
||||||
m_AEROBoost = TRUE; // default true !!
|
m_AEROBoost = TRUE; // default true !!
|
||||||
m_DiabloTweak = FALSE;
|
m_DiabloTweak = FALSE;
|
||||||
|
m_HookDirectSound = FALSE;
|
||||||
|
m_HookSmackW32 = FALSE;
|
||||||
m_EASportsHack = FALSE;
|
m_EASportsHack = FALSE;
|
||||||
m_LegacyAlloc = FALSE;
|
m_LegacyAlloc = FALSE;
|
||||||
m_DisableMaxWinMode = FALSE;
|
m_DisableMaxWinMode = FALSE;
|
||||||
|
@ -198,6 +198,8 @@ public:
|
|||||||
BOOL m_SetCompatibility;
|
BOOL m_SetCompatibility;
|
||||||
BOOL m_AEROBoost;
|
BOOL m_AEROBoost;
|
||||||
BOOL m_DiabloTweak;
|
BOOL m_DiabloTweak;
|
||||||
|
BOOL m_HookDirectSound;
|
||||||
|
BOOL m_HookSmackW32;
|
||||||
BOOL m_EASportsHack;
|
BOOL m_EASportsHack;
|
||||||
BOOL m_LegacyAlloc;
|
BOOL m_LegacyAlloc;
|
||||||
BOOL m_DisableMaxWinMode;
|
BOOL m_DisableMaxWinMode;
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -117,6 +117,7 @@ BEGIN_MESSAGE_MAP(CDxwndhostView, CListView)
|
|||||||
ON_COMMAND(ID_TASKBAR_SHOW, OnTaskbarShow)
|
ON_COMMAND(ID_TASKBAR_SHOW, OnTaskbarShow)
|
||||||
ON_COMMAND(ID_MODIFY, OnModify)
|
ON_COMMAND(ID_MODIFY, OnModify)
|
||||||
ON_COMMAND(ID_ADD, OnAdd)
|
ON_COMMAND(ID_ADD, OnAdd)
|
||||||
|
ON_COMMAND(ID_PDUPLICATE, OnDuplicate)
|
||||||
ON_COMMAND(ID_PEXPORT, OnExport)
|
ON_COMMAND(ID_PEXPORT, OnExport)
|
||||||
ON_COMMAND(ID_PKILL, OnProcessKill)
|
ON_COMMAND(ID_PKILL, OnProcessKill)
|
||||||
ON_COMMAND(ID_FILE_IMPORT, OnImport)
|
ON_COMMAND(ID_FILE_IMPORT, OnImport)
|
||||||
@ -139,6 +140,10 @@ BEGIN_MESSAGE_MAP(CDxwndhostView, CListView)
|
|||||||
ON_COMMAND(ID_DESKTOPCOLORDEPTH_16BPP, OnDesktopcolordepth16bpp)
|
ON_COMMAND(ID_DESKTOPCOLORDEPTH_16BPP, OnDesktopcolordepth16bpp)
|
||||||
ON_COMMAND(ID_DESKTOPCOLORDEPTH_24BPP, OnDesktopcolordepth24bpp)
|
ON_COMMAND(ID_DESKTOPCOLORDEPTH_24BPP, OnDesktopcolordepth24bpp)
|
||||||
ON_COMMAND(ID_DESKTOPCOLORDEPTH_32BPP, OnDesktopcolordepth32bpp)
|
ON_COMMAND(ID_DESKTOPCOLORDEPTH_32BPP, OnDesktopcolordepth32bpp)
|
||||||
|
ON_COMMAND(ID_MOVE_TOP, OnMoveTop)
|
||||||
|
ON_COMMAND(ID_MOVE_UP, OnMoveUp)
|
||||||
|
ON_COMMAND(ID_MOVE_DOWN, OnMoveDown)
|
||||||
|
ON_COMMAND(ID_MOVE_BOTTOM, OnMoveBottom)
|
||||||
//}}AFX_MSG_MAP
|
//}}AFX_MSG_MAP
|
||||||
END_MESSAGE_MAP()
|
END_MESSAGE_MAP()
|
||||||
|
|
||||||
@ -307,6 +312,8 @@ void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
|
|||||||
if(dlg->m_SetCompatibility) t->flags2 |= SETCOMPATIBILITY;
|
if(dlg->m_SetCompatibility) t->flags2 |= SETCOMPATIBILITY;
|
||||||
if(dlg->m_AEROBoost) t->flags5 |= AEROBOOST;
|
if(dlg->m_AEROBoost) t->flags5 |= AEROBOOST;
|
||||||
if(dlg->m_DiabloTweak) t->flags5 |= DIABLOTWEAK;
|
if(dlg->m_DiabloTweak) t->flags5 |= DIABLOTWEAK;
|
||||||
|
if(dlg->m_HookDirectSound) t->flags7 |= HOOKDIRECTSOUND;
|
||||||
|
if(dlg->m_HookSmackW32) t->flags7 |= HOOKSMACKW32;
|
||||||
if(dlg->m_EASportsHack) t->flags5 |= EASPORTSHACK;
|
if(dlg->m_EASportsHack) t->flags5 |= EASPORTSHACK;
|
||||||
if(dlg->m_LegacyAlloc) t->flags6 |= LEGACYALLOC;
|
if(dlg->m_LegacyAlloc) t->flags6 |= LEGACYALLOC;
|
||||||
if(dlg->m_DisableMaxWinMode) t->flags6 |= DISABLEMAXWINMODE;
|
if(dlg->m_DisableMaxWinMode) t->flags6 |= DISABLEMAXWINMODE;
|
||||||
@ -539,6 +546,8 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
|
|||||||
dlg->m_SetCompatibility = t->flags2 & SETCOMPATIBILITY ? 1 : 0;
|
dlg->m_SetCompatibility = t->flags2 & SETCOMPATIBILITY ? 1 : 0;
|
||||||
dlg->m_AEROBoost = t->flags5 & AEROBOOST ? 1 : 0;
|
dlg->m_AEROBoost = t->flags5 & AEROBOOST ? 1 : 0;
|
||||||
dlg->m_DiabloTweak = t->flags5 & DIABLOTWEAK ? 1 : 0;
|
dlg->m_DiabloTweak = t->flags5 & DIABLOTWEAK ? 1 : 0;
|
||||||
|
dlg->m_HookDirectSound = t->flags7 & HOOKDIRECTSOUND ? 1 : 0;
|
||||||
|
dlg->m_HookSmackW32 = t->flags7 & HOOKSMACKW32 ? 1 : 0;
|
||||||
dlg->m_EASportsHack = t->flags5 & EASPORTSHACK ? 1 : 0;
|
dlg->m_EASportsHack = t->flags5 & EASPORTSHACK ? 1 : 0;
|
||||||
dlg->m_LegacyAlloc = t->flags6 & LEGACYALLOC ? 1 : 0;
|
dlg->m_LegacyAlloc = t->flags6 & LEGACYALLOC ? 1 : 0;
|
||||||
dlg->m_DisableMaxWinMode = t->flags6 & DISABLEMAXWINMODE ? 1 : 0;
|
dlg->m_DisableMaxWinMode = t->flags6 & DISABLEMAXWINMODE ? 1 : 0;
|
||||||
@ -1676,6 +1685,179 @@ void CDxwndhostView::OnAdd()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CDxwndhostView::OnDuplicate()
|
||||||
|
{
|
||||||
|
POSITION pos;
|
||||||
|
int i;
|
||||||
|
CListCtrl& listctrl = GetListCtrl();
|
||||||
|
|
||||||
|
if(!(pos = listctrl.GetFirstSelectedItemPosition())) return;
|
||||||
|
i = listctrl.GetNextSelectedItem(pos);
|
||||||
|
if (listctrl.GetItemCount()>=MAXTARGETS-1) return; // too many entries to duplicate one!
|
||||||
|
|
||||||
|
for(int j=listctrl.GetItemCount(); j>i; j--){
|
||||||
|
TargetMaps[j+1]=TargetMaps[j];
|
||||||
|
PrivateMaps[j+1]=PrivateMaps[j];
|
||||||
|
}
|
||||||
|
TargetMaps[i+1] = TargetMaps[i];
|
||||||
|
PrivateMaps[i+1] = PrivateMaps[i];
|
||||||
|
|
||||||
|
listctrl.DeleteAllItems();
|
||||||
|
for(i=0; TargetMaps[i].path[0]; i++) {
|
||||||
|
LV_ITEM listitem;
|
||||||
|
listitem.mask = LVIF_TEXT | LVIF_IMAGE;
|
||||||
|
listitem.iItem = i;
|
||||||
|
listitem.iSubItem = 0;
|
||||||
|
listitem.iImage = SetTargetIcon(TargetMaps[i]);
|
||||||
|
listitem.pszText = PrivateMaps[i].title;
|
||||||
|
listctrl.SetItem(&listitem);
|
||||||
|
listctrl.InsertItem(&listitem);
|
||||||
|
}
|
||||||
|
SetTarget(TargetMaps);
|
||||||
|
this->isUpdated=TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CDxwndhostView::OnMoveTop()
|
||||||
|
{
|
||||||
|
TARGETMAP MapEntry;
|
||||||
|
PRIVATEMAP TitEntry;
|
||||||
|
POSITION pos;
|
||||||
|
int i;
|
||||||
|
CListCtrl& listctrl = GetListCtrl();
|
||||||
|
|
||||||
|
if(!(pos = listctrl.GetFirstSelectedItemPosition())) return;
|
||||||
|
i = listctrl.GetNextSelectedItem(pos);
|
||||||
|
if (i==0)return;
|
||||||
|
|
||||||
|
MapEntry=TargetMaps[i];
|
||||||
|
TitEntry=PrivateMaps[i];
|
||||||
|
for(int j=i; j; j--){
|
||||||
|
TargetMaps[j]=TargetMaps[j-1];
|
||||||
|
PrivateMaps[j]=PrivateMaps[j-1];
|
||||||
|
}
|
||||||
|
TargetMaps[0]=MapEntry;
|
||||||
|
PrivateMaps[0]=TitEntry;
|
||||||
|
|
||||||
|
listctrl.DeleteAllItems();
|
||||||
|
for(i=0; TargetMaps[i].path[0]; i++) {
|
||||||
|
LV_ITEM listitem;
|
||||||
|
listitem.mask = LVIF_TEXT | LVIF_IMAGE;
|
||||||
|
listitem.iItem = i;
|
||||||
|
listitem.iSubItem = 0;
|
||||||
|
listitem.iImage = SetTargetIcon(TargetMaps[i]);
|
||||||
|
listitem.pszText = PrivateMaps[i].title;
|
||||||
|
listctrl.SetItem(&listitem);
|
||||||
|
listctrl.InsertItem(&listitem);
|
||||||
|
}
|
||||||
|
SetTarget(TargetMaps);
|
||||||
|
this->isUpdated=TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CDxwndhostView::OnMoveUp()
|
||||||
|
{
|
||||||
|
TARGETMAP MapEntry;
|
||||||
|
PRIVATEMAP TitEntry;
|
||||||
|
POSITION pos;
|
||||||
|
int i;
|
||||||
|
CListCtrl& listctrl = GetListCtrl();
|
||||||
|
|
||||||
|
if(!(pos = listctrl.GetFirstSelectedItemPosition())) return;
|
||||||
|
i = listctrl.GetNextSelectedItem(pos);
|
||||||
|
if (i==0)return;
|
||||||
|
|
||||||
|
MapEntry=TargetMaps[i-1];
|
||||||
|
TargetMaps[i-1]=TargetMaps[i];
|
||||||
|
TargetMaps[i]=MapEntry;
|
||||||
|
TitEntry=PrivateMaps[i-1];
|
||||||
|
PrivateMaps[i-1]=PrivateMaps[i];
|
||||||
|
PrivateMaps[i]=TitEntry;
|
||||||
|
|
||||||
|
listctrl.DeleteAllItems();
|
||||||
|
for(i=0; TargetMaps[i].path[0]; i++) {
|
||||||
|
LV_ITEM listitem;
|
||||||
|
listitem.mask = LVIF_TEXT | LVIF_IMAGE;
|
||||||
|
listitem.iItem = i;
|
||||||
|
listitem.iSubItem = 0;
|
||||||
|
listitem.iImage = SetTargetIcon(TargetMaps[i]);
|
||||||
|
listitem.pszText = PrivateMaps[i].title;
|
||||||
|
listctrl.SetItem(&listitem);
|
||||||
|
listctrl.InsertItem(&listitem);
|
||||||
|
}
|
||||||
|
SetTarget(TargetMaps);
|
||||||
|
this->isUpdated=TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CDxwndhostView::OnMoveDown()
|
||||||
|
{
|
||||||
|
TARGETMAP MapEntry;
|
||||||
|
PRIVATEMAP TitEntry;
|
||||||
|
POSITION pos;
|
||||||
|
int i;
|
||||||
|
CListCtrl& listctrl = GetListCtrl();
|
||||||
|
|
||||||
|
if(!(pos = listctrl.GetFirstSelectedItemPosition())) return;
|
||||||
|
i = listctrl.GetNextSelectedItem(pos);
|
||||||
|
if (i==listctrl.GetItemCount()-1)return;
|
||||||
|
|
||||||
|
MapEntry=TargetMaps[i+1];
|
||||||
|
TargetMaps[i+1]=TargetMaps[i];
|
||||||
|
TargetMaps[i]=MapEntry;
|
||||||
|
TitEntry=PrivateMaps[i+1];
|
||||||
|
PrivateMaps[i+1]=PrivateMaps[i];
|
||||||
|
PrivateMaps[i]=TitEntry;
|
||||||
|
|
||||||
|
listctrl.DeleteAllItems();
|
||||||
|
for(i=0; TargetMaps[i].path[0]; i++) {
|
||||||
|
LV_ITEM listitem;
|
||||||
|
listitem.mask = LVIF_TEXT | LVIF_IMAGE;
|
||||||
|
listitem.iItem = i;
|
||||||
|
listitem.iSubItem = 0;
|
||||||
|
listitem.iImage = SetTargetIcon(TargetMaps[i]);
|
||||||
|
listitem.pszText = PrivateMaps[i].title;
|
||||||
|
listctrl.SetItem(&listitem);
|
||||||
|
listctrl.InsertItem(&listitem);
|
||||||
|
}
|
||||||
|
SetTarget(TargetMaps);
|
||||||
|
this->isUpdated=TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CDxwndhostView::OnMoveBottom()
|
||||||
|
{
|
||||||
|
TARGETMAP MapEntry;
|
||||||
|
PRIVATEMAP TitEntry;
|
||||||
|
POSITION pos;
|
||||||
|
int i, last;
|
||||||
|
CListCtrl& listctrl = GetListCtrl();
|
||||||
|
|
||||||
|
if(!(pos = listctrl.GetFirstSelectedItemPosition())) return;
|
||||||
|
i = listctrl.GetNextSelectedItem(pos);
|
||||||
|
last = listctrl.GetItemCount()-1;
|
||||||
|
if (i==last)return;
|
||||||
|
|
||||||
|
MapEntry=TargetMaps[i];
|
||||||
|
TitEntry=PrivateMaps[i];
|
||||||
|
for(int j=i; j<last; j++){
|
||||||
|
TargetMaps[j]=TargetMaps[j+1];
|
||||||
|
PrivateMaps[j]=PrivateMaps[j+1];
|
||||||
|
}
|
||||||
|
TargetMaps[last]=MapEntry;
|
||||||
|
PrivateMaps[last]=TitEntry;
|
||||||
|
|
||||||
|
listctrl.DeleteAllItems();
|
||||||
|
for(i=0; TargetMaps[i].path[0]; i++) {
|
||||||
|
LV_ITEM listitem;
|
||||||
|
listitem.mask = LVIF_TEXT | LVIF_IMAGE;
|
||||||
|
listitem.iItem = i;
|
||||||
|
listitem.iSubItem = 0;
|
||||||
|
listitem.iImage = SetTargetIcon(TargetMaps[i]);
|
||||||
|
listitem.pszText = PrivateMaps[i].title;
|
||||||
|
listctrl.SetItem(&listitem);
|
||||||
|
listctrl.InsertItem(&listitem);
|
||||||
|
}
|
||||||
|
SetTarget(TargetMaps);
|
||||||
|
this->isUpdated=TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
void CDxwndhostView::OnDelete()
|
void CDxwndhostView::OnDelete()
|
||||||
{
|
{
|
||||||
int i, len;
|
int i, len;
|
||||||
@ -1797,6 +1979,7 @@ DWORD WINAPI TrayIconUpdate(CSystemTray *Tray)
|
|||||||
if(gTransientMode) {
|
if(gTransientMode) {
|
||||||
IdleCount++;
|
IdleCount++;
|
||||||
if(IdleCount > 2) {
|
if(IdleCount > 2) {
|
||||||
|
Tray->HideIcon();
|
||||||
delete(Tray->GetAncestor(GA_ROOTOWNER));
|
delete(Tray->GetAncestor(GA_ROOTOWNER));
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
@ -1947,6 +2130,9 @@ void CDxwndhostView::OnRButtonDown(UINT nFlags, CPoint point)
|
|||||||
case ID_PADD:
|
case ID_PADD:
|
||||||
OnAdd();
|
OnAdd();
|
||||||
break;
|
break;
|
||||||
|
case ID_PDUPLICATE:
|
||||||
|
OnDuplicate();
|
||||||
|
break;
|
||||||
case ID_PEXPLORE:
|
case ID_PEXPLORE:
|
||||||
OnExplore();
|
OnExplore();
|
||||||
break;
|
break;
|
||||||
@ -1992,6 +2178,18 @@ void CDxwndhostView::OnRButtonDown(UINT nFlags, CPoint point)
|
|||||||
case ID_DESKTOPCOLORDEPTH_32BPP:
|
case ID_DESKTOPCOLORDEPTH_32BPP:
|
||||||
OnDesktopcolordepth32bpp();
|
OnDesktopcolordepth32bpp();
|
||||||
break;
|
break;
|
||||||
|
case ID_MOVE_TOP:
|
||||||
|
OnMoveTop();
|
||||||
|
break;
|
||||||
|
case ID_MOVE_UP:
|
||||||
|
OnMoveUp();
|
||||||
|
break;
|
||||||
|
case ID_MOVE_DOWN:
|
||||||
|
OnMoveDown();
|
||||||
|
break;
|
||||||
|
case ID_MOVE_BOTTOM:
|
||||||
|
OnMoveBottom();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
CListView::OnRButtonDown(nFlags, point);
|
CListView::OnRButtonDown(nFlags, point);
|
||||||
}
|
}
|
||||||
|
@ -60,6 +60,7 @@ protected:
|
|||||||
//{{AFX_MSG(CDxwndhostView)
|
//{{AFX_MSG(CDxwndhostView)
|
||||||
afx_msg void OnDblclk(NMHDR* pNMHDR, LRESULT* pResult);
|
afx_msg void OnDblclk(NMHDR* pNMHDR, LRESULT* pResult);
|
||||||
afx_msg void OnAdd();
|
afx_msg void OnAdd();
|
||||||
|
afx_msg void OnDuplicate();
|
||||||
afx_msg void OnModify();
|
afx_msg void OnModify();
|
||||||
afx_msg void OnExport();
|
afx_msg void OnExport();
|
||||||
afx_msg void OnImport();
|
afx_msg void OnImport();
|
||||||
@ -97,6 +98,10 @@ protected:
|
|||||||
afx_msg void OnDesktopcolordepth16bpp();
|
afx_msg void OnDesktopcolordepth16bpp();
|
||||||
afx_msg void OnDesktopcolordepth24bpp();
|
afx_msg void OnDesktopcolordepth24bpp();
|
||||||
afx_msg void OnDesktopcolordepth32bpp();
|
afx_msg void OnDesktopcolordepth32bpp();
|
||||||
|
afx_msg void OnMoveTop();
|
||||||
|
afx_msg void OnMoveUp();
|
||||||
|
afx_msg void OnMoveDown();
|
||||||
|
afx_msg void OnMoveBottom();
|
||||||
//}}AFX_MSG
|
//}}AFX_MSG
|
||||||
DECLARE_MESSAGE_MAP()
|
DECLARE_MESSAGE_MAP()
|
||||||
};
|
};
|
||||||
|
BIN
host/host.aps
BIN
host/host.aps
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 6.1 KiB |
Binary file not shown.
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.3 KiB |
BIN
host/resource
BIN
host/resource
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user