mirror of
https://github.com/DxWnd/DxWnd.reloaded
synced 2024-12-30 09:25:35 +01:00
v2_02_73_src
Former-commit-id: 4aa8086fa4b721b743570947ea3aa50d69c99954
This commit is contained in:
parent
16a5f20055
commit
3b162bb654
@ -138,6 +138,7 @@
|
|||||||
#define SUPPORTSVGA 0x00400000 // Supports SVGA standard resolutions
|
#define SUPPORTSVGA 0x00400000 // Supports SVGA standard resolutions
|
||||||
#define SUPPORTHDTV 0x00800000 // Supports HDTV standard resolutions
|
#define SUPPORTHDTV 0x00800000 // Supports HDTV standard resolutions
|
||||||
#define RELEASEMOUSE 0x01000000 // GetCursorPos returns centered coordinates when the mouse cursor is moved outside the window
|
#define RELEASEMOUSE 0x01000000 // GetCursorPos returns centered coordinates when the mouse cursor is moved outside the window
|
||||||
|
#define FRAMECOMPENSATION 0x02000000 // Compensate for frame border adding x,y displacement of (x) left border and (y) window title bar
|
||||||
|
|
||||||
// logging Tflags DWORD:
|
// logging Tflags DWORD:
|
||||||
#define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general
|
#define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:8c611f6cdccad0df1ba3b649511c7d2b439dae191fa2b7789306494873761540
|
oid sha256:2402376ce446d1f0d06c36f3d7cfdda81e9052c03dde6bdcb0532bf9b5fc67ef
|
||||||
size 474112
|
size 475648
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:1c883d8d4dfc5696176aa802dd69c0c32d1e682d0672bfb24609b39e2a581950
|
oid sha256:e351b8cb36d1cfc02f5a113555e75bc72da15b5054595777b85b4fac2d993b6d
|
||||||
size 539136
|
size 539136
|
||||||
|
5
build/dxwnd.ini
Normal file
5
build/dxwnd.ini
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[window]
|
||||||
|
posx=930
|
||||||
|
posy=192
|
||||||
|
sizx=320
|
||||||
|
sizy=200
|
26
build/exports/Call To Power 2.dxw
Normal file
26
build/exports/Call To Power 2.dxw
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
[target]
|
||||||
|
title0=Call To Power 2
|
||||||
|
path0=D:\Games\Call To Power 2\ctp2_program\ctp\ctp2.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=134234657
|
||||||
|
flagg0=1207959552
|
||||||
|
flagh0=32788
|
||||||
|
flagi0=4
|
||||||
|
tflag0=64
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
24
build/exports/Crimson Skies (DEMO).dxw
Normal file
24
build/exports/Crimson Skies (DEMO).dxw
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
[target]
|
||||||
|
title0=Crimson Skies (DEMO)
|
||||||
|
path0=D:\Games\Crimson Skies\crimson.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=155205636
|
||||||
|
flagg0=1210056720
|
||||||
|
flagh0=20
|
||||||
|
flagi0=260
|
||||||
|
tflag0=3
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
26
build/exports/Disney Groove It.dxw
Normal file
26
build/exports/Disney Groove It.dxw
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
[target]
|
||||||
|
title0=Disney Groove It
|
||||||
|
path0=D:\Games\groove it\groove.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=134217728
|
||||||
|
flagg0=1207959808
|
||||||
|
flagh0=20
|
||||||
|
flagi0=4
|
||||||
|
tflag0=6211
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
26
build/exports/Empire of the Ants (ITA).dxw
Normal file
26
build/exports/Empire of the Ants (ITA).dxw
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
[target]
|
||||||
|
title0=Empire of the Ants (ITA)
|
||||||
|
path0=D:\Games\Empire of the Ants\Formiche.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=151011364
|
||||||
|
flagg0=134217728
|
||||||
|
flagh0=20
|
||||||
|
flagi0=4
|
||||||
|
tflag0=6467
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
26
build/exports/Hundred Swords.dxw
Normal file
26
build/exports/Hundred Swords.dxw
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
[target]
|
||||||
|
title0=Hundred Swords
|
||||||
|
path0=D:\Games\Hundred Swords\H_SWORDS.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=1
|
||||||
|
coord0=0
|
||||||
|
flag0=402653472
|
||||||
|
flagg0=1212153856
|
||||||
|
flagh0=20
|
||||||
|
flagi0=4
|
||||||
|
tflag0=6210
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=4
|
||||||
|
maxres0=-1
|
27
build/exports/Insane.dxw
Normal file
27
build/exports/Insane.dxw
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
[target]
|
||||||
|
title0=Insane
|
||||||
|
path0=D:\Games\Insane\Game.exe
|
||||||
|
launchpath0=
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=7
|
||||||
|
coord0=0
|
||||||
|
flag0=134217760
|
||||||
|
flagg0=1207959553
|
||||||
|
flagh0=20
|
||||||
|
flagi0=4194308
|
||||||
|
tflag0=6146
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
26
build/exports/Jolly Rover.dxw
Normal file
26
build/exports/Jolly Rover.dxw
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
[target]
|
||||||
|
title0=Jolly Rover
|
||||||
|
path0=D:\Games\Jolly Rover\rover.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=134218240
|
||||||
|
flagg0=1207959552
|
||||||
|
flagh0=20
|
||||||
|
flagi0=4
|
||||||
|
tflag0=64
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
27
build/exports/LEGO Stunt Rally.dxw
Normal file
27
build/exports/LEGO Stunt Rally.dxw
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
[target]
|
||||||
|
title0=LEGO Stunt Rally
|
||||||
|
path0=D:\Games\LEGO Stunt Rally\_msr.exe
|
||||||
|
launchpath0=D:\Games\LEGO Stunt Rally\StuntRally.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=134217760
|
||||||
|
flagg0=1207959552
|
||||||
|
flagh0=20
|
||||||
|
flagi0=4325380
|
||||||
|
tflag0=6210
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
26
build/exports/MDK2.dxw
Normal file
26
build/exports/MDK2.dxw
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
[target]
|
||||||
|
title0=MDK2
|
||||||
|
path0=D:\Games\MDK2\mdk2Main.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=134217760
|
||||||
|
flagg0=1744961536
|
||||||
|
flagh0=20
|
||||||
|
flagi0=4
|
||||||
|
tflag0=64
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
26
build/exports/Mall Tycoon 3.dxw
Normal file
26
build/exports/Mall Tycoon 3.dxw
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
[target]
|
||||||
|
title0=Mall Tycoon 3
|
||||||
|
path0=D:\Games\Mall Tycoon 3\Mall3Game.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=671089184
|
||||||
|
flagg0=1207959552
|
||||||
|
flagh0=20
|
||||||
|
flagi0=4194308
|
||||||
|
tflag0=0
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
26
build/exports/Motocross Madness Trial.dxw
Normal file
26
build/exports/Motocross Madness Trial.dxw
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
[target]
|
||||||
|
title0=Motocross Madness Trial
|
||||||
|
path0=D:\Games\Motocross Madness Trial\mcm.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=169885728
|
||||||
|
flagg0=134219776
|
||||||
|
flagh0=20
|
||||||
|
flagi0=2097156
|
||||||
|
tflag0=6415
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=50
|
||||||
|
miny0=50
|
||||||
|
maxx0=800
|
||||||
|
maxy0=600
|
||||||
|
posx0=0
|
||||||
|
posy0=0
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
26
build/exports/PC Ciclismo 2001 (HAL).dxw
Normal file
26
build/exports/PC Ciclismo 2001 (HAL).dxw
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
[target]
|
||||||
|
title0=PC Ciclismo 2001
|
||||||
|
path0=D:\Games\PC Ciclismo 2001\PcCiclismo.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=1207959840
|
||||||
|
flagg0=1207959552
|
||||||
|
flagh0=98324
|
||||||
|
flagi0=4
|
||||||
|
tflag0=6211
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
@ -0,0 +1,26 @@
|
|||||||
|
[target]
|
||||||
|
title0=PC Ciclismo 2001
|
||||||
|
path0=D:\Games\PC Ciclismo 2001\PcCiclismo.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=1207959586
|
||||||
|
flagg0=1207959552
|
||||||
|
flagh0=98324
|
||||||
|
flagi0=4
|
||||||
|
tflag0=6211
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
26
build/exports/Prey.dxw
Normal file
26
build/exports/Prey.dxw
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
[target]
|
||||||
|
title0=Prey
|
||||||
|
path0=D:\Games\Prey\prey.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=134217762
|
||||||
|
flagg0=1208090624
|
||||||
|
flagh0=20
|
||||||
|
flagi0=4
|
||||||
|
tflag0=64
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
26
build/exports/Rites of War Demo.dxw
Normal file
26
build/exports/Rites of War Demo.dxw
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
[target]
|
||||||
|
title0=Rites of War Demo
|
||||||
|
path0=D:\Games\Rites of War Demo\RoWDemo.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=134234656
|
||||||
|
flagg0=1207959680
|
||||||
|
flagh0=20
|
||||||
|
flagi0=4
|
||||||
|
tflag0=64
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
27
build/exports/SpellForce GOLD Edition.dxw
Normal file
27
build/exports/SpellForce GOLD Edition.dxw
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
[target]
|
||||||
|
title0=SpellForce GOLD Edition
|
||||||
|
path0=D:\Games\SpellForce\SpellForce.exe
|
||||||
|
launchpath0=
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=9
|
||||||
|
coord0=0
|
||||||
|
flag0=134218272
|
||||||
|
flagg0=1207959552
|
||||||
|
flagh0=20
|
||||||
|
flagi0=4194308
|
||||||
|
tflag0=64
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
27
build/exports/Sub Command.dxw
Normal file
27
build/exports/Sub Command.dxw
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
[target]
|
||||||
|
title0=Sub Command
|
||||||
|
path0=D:\Games\Sub Command\subcommand.exe
|
||||||
|
launchpath0=
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=8
|
||||||
|
coord0=0
|
||||||
|
flag0=1610613345
|
||||||
|
flagg0=1207959552
|
||||||
|
flagh0=20
|
||||||
|
flagi0=37748740
|
||||||
|
tflag0=64
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=1200
|
||||||
|
sizy0=900
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
26
build/exports/Tropico Paradise Island.dxw
Normal file
26
build/exports/Tropico Paradise Island.dxw
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
[target]
|
||||||
|
title0=Tropico Paradise Island
|
||||||
|
path0=D:\Games\Tropico Paradise Island\Tropico.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=134218272
|
||||||
|
flagg0=1207959552
|
||||||
|
flagh0=20
|
||||||
|
flagi0=4
|
||||||
|
tflag0=1024
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
@ -472,3 +472,6 @@ added "Launch" field (optional) to start the program with arguments or a separat
|
|||||||
v2.02.72
|
v2.02.72
|
||||||
fix: fixed Launch field used with "Use DLL injection" flag
|
fix: fixed Launch field used with "Use DLL injection" flag
|
||||||
fix: somehow improved "Use DLL injection" to avoid blocked tasks and allow exception handling
|
fix: somehow improved "Use DLL injection" to avoid blocked tasks and allow exception handling
|
||||||
|
|
||||||
|
v2.02.73
|
||||||
|
to be written ....
|
129
dll/ddraw.cpp
129
dll/ddraw.cpp
@ -1843,7 +1843,7 @@ HRESULT WINAPI extSetDisplayMode(int version, LPDIRECTDRAW lpdd,
|
|||||||
dxw.SetScreenSize(dwwidth, dwheight);
|
dxw.SetScreenSize(dwwidth, dwheight);
|
||||||
GetHookInfo()->Height=(short)dxw.GetScreenHeight();
|
GetHookInfo()->Height=(short)dxw.GetScreenHeight();
|
||||||
GetHookInfo()->Width=(short)dxw.GetScreenWidth();
|
GetHookInfo()->Width=(short)dxw.GetScreenWidth();
|
||||||
AdjustWindowFrame(dxw.GethWnd(), dwwidth, dwheight);
|
if(dxw.Windowize) AdjustWindowFrame(dxw.GethWnd(), dwwidth, dwheight);
|
||||||
|
|
||||||
if(dxw.dwFlags1 & EMULATESURFACE){
|
if(dxw.dwFlags1 & EMULATESURFACE){
|
||||||
// in EMULATESURFACE mode, let SetPixFmt decide upon the PixelFormat
|
// in EMULATESURFACE mode, let SetPixFmt decide upon the PixelFormat
|
||||||
@ -1852,27 +1852,38 @@ HRESULT WINAPI extSetDisplayMode(int version, LPDIRECTDRAW lpdd,
|
|||||||
ddsd.dwSize=sizeof(ddsd);
|
ddsd.dwSize=sizeof(ddsd);
|
||||||
SetPixFmt(&ddsd);
|
SetPixFmt(&ddsd);
|
||||||
SetBltTransformations();
|
SetBltTransformations();
|
||||||
OutTraceDW("SetDisplayMode: mode=EMULATE %s ret=OK\n", DumpPixelFormat(&ddsd));
|
if(dxw.Windowize) {
|
||||||
return DD_OK;
|
OutTraceDW("SetDisplayMode: mode=EMULATE %s ret=OK\n", DumpPixelFormat(&ddsd));
|
||||||
|
SetVSyncDelays(lpdd);
|
||||||
|
return DD_OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
OutTraceDW("SetDisplayMode: mode=STANDARD BPP=%d\n", dwbpp);
|
||||||
|
dxw.ActualPixelFormat.dwRGBBitCount = dwbpp;
|
||||||
}
|
}
|
||||||
|
|
||||||
OutTraceDW("SetDisplayMode: mode=STANDARD BPP=%d\n", dwbpp);
|
|
||||||
dxw.ActualPixelFormat.dwRGBBitCount = dwbpp;
|
|
||||||
|
|
||||||
ZeroMemory(&ddsd, sizeof(ddsd));
|
ZeroMemory(&ddsd, sizeof(ddsd));
|
||||||
ddsd.dwSize = Set_dwSize_From_DDraw(lpdd);
|
ddsd.dwSize = Set_dwSize_From_DDraw(lpdd);
|
||||||
ddsd.dwFlags = DDSD_WIDTH | DDSD_HEIGHT | DDSD_PIXELFORMAT | DDSD_REFRESHRATE;
|
ddsd.dwFlags = DDSD_WIDTH | DDSD_HEIGHT | DDSD_PIXELFORMAT | DDSD_REFRESHRATE;
|
||||||
ddsd.ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT);
|
ddsd.ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT);
|
||||||
ddsd.ddpfPixelFormat.dwFlags = DDPF_RGB;
|
ddsd.ddpfPixelFormat.dwFlags = DDPF_RGB;
|
||||||
|
|
||||||
(*pGetDisplayMode)(lpdd, (LPDDSURFACEDESC)&ddsd);
|
(*pGetDisplayMode)(lpdd, (LPDDSURFACEDESC)&ddsd);
|
||||||
if (version==1)
|
|
||||||
res = (*pSetDisplayMode1)(lpdd, ddsd.dwWidth, ddsd.dwHeight, dwbpp);
|
if(dxw.Windowize){
|
||||||
else
|
dwwidth = ddsd.dwWidth;
|
||||||
res = (*pSetDisplayMode2)(lpdd, ddsd.dwWidth, ddsd.dwHeight, dwbpp, ddsd.dwRefreshRate, 0);
|
dwheight = ddsd.dwHeight;
|
||||||
|
OutTraceDW("SetDisplayMode: fixing colordepth current=%d required=%d size=(%dx%d)\n",
|
||||||
|
ddsd.ddpfPixelFormat.dwRGBBitCount, dwbpp, dwwidth, dwheight);
|
||||||
|
}
|
||||||
|
if(dxw.dwFlags1 & EMULATESURFACE){
|
||||||
|
dwbpp = ddsd.ddpfPixelFormat.dwRGBBitCount;
|
||||||
|
}
|
||||||
|
|
||||||
OutTraceDW("SetDisplayMode: fixing colordepth current=%d required=%d size=(%dx%d)\n",
|
if (version==1)
|
||||||
ddsd.ddpfPixelFormat.dwRGBBitCount, dwbpp, ddsd.dwWidth, ddsd.dwHeight);
|
res = (*pSetDisplayMode1)(lpdd, dwwidth, dwheight, dwbpp);
|
||||||
|
else
|
||||||
|
res = (*pSetDisplayMode2)(lpdd, dwwidth, dwheight, dwbpp, ddsd.dwRefreshRate, 0);
|
||||||
|
|
||||||
SetVSyncDelays(lpdd);
|
SetVSyncDelays(lpdd);
|
||||||
return 0;
|
return 0;
|
||||||
@ -1899,14 +1910,17 @@ HRESULT WINAPI extGetDisplayMode(LPDIRECTDRAW lpdd, LPDDSURFACEDESC lpddsd)
|
|||||||
GetPixFmt((LPDDSURFACEDESC2)lpddsd);
|
GetPixFmt((LPDDSURFACEDESC2)lpddsd);
|
||||||
if(!lpddsd->ddpfPixelFormat.dwFlags) SetPixFmt((LPDDSURFACEDESC2)lpddsd);
|
if(!lpddsd->ddpfPixelFormat.dwFlags) SetPixFmt((LPDDSURFACEDESC2)lpddsd);
|
||||||
}
|
}
|
||||||
lpddsd->dwWidth = dxw.GetScreenWidth();
|
|
||||||
lpddsd->dwHeight = dxw.GetScreenHeight();
|
|
||||||
|
|
||||||
// v2.1.96: fake screen color depth
|
if(dxw.Windowize){
|
||||||
if(dxw.dwFlags2 & (INIT8BPP|INIT16BPP)){ // v2.02.32 fix
|
lpddsd->dwWidth = dxw.GetScreenWidth();
|
||||||
if(dxw.dwFlags2 & INIT8BPP) FixPixelFormat(8, &lpddsd->ddpfPixelFormat);
|
lpddsd->dwHeight = dxw.GetScreenHeight();
|
||||||
if(dxw.dwFlags2 & INIT16BPP) FixPixelFormat(16, &lpddsd->ddpfPixelFormat);
|
|
||||||
OutTraceDW("GetDisplayMode: fix RGBBitCount=%d\n", lpddsd->ddpfPixelFormat.dwRGBBitCount);
|
// v2.1.96: fake screen color depth
|
||||||
|
if(dxw.dwFlags2 & (INIT8BPP|INIT16BPP)){ // v2.02.32 fix
|
||||||
|
if(dxw.dwFlags2 & INIT8BPP) FixPixelFormat(8, &lpddsd->ddpfPixelFormat);
|
||||||
|
if(dxw.dwFlags2 & INIT16BPP) FixPixelFormat(16, &lpddsd->ddpfPixelFormat);
|
||||||
|
OutTraceDW("GetDisplayMode: fix RGBBitCount=%d\n", lpddsd->ddpfPixelFormat.dwRGBBitCount);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//OutTraceDW("GetDisplayMode: returning WxH=(%dx%d) PixelFormat Flags=%x(%s) RGBBitCount=%d RGBAmask=(%x,%x,%x,%x) Caps=%x(%s)\n",
|
//OutTraceDW("GetDisplayMode: returning WxH=(%dx%d) PixelFormat Flags=%x(%s) RGBBitCount=%d RGBAmask=(%x,%x,%x,%x) Caps=%x(%s)\n",
|
||||||
@ -1932,37 +1946,44 @@ HRESULT WINAPI extSetCooperativeLevel(void *lpdd, HWND hwnd, DWORD dwflags)
|
|||||||
|
|
||||||
InitDDScreenParameters((LPDIRECTDRAW)lpdd);
|
InitDDScreenParameters((LPDIRECTDRAW)lpdd);
|
||||||
|
|
||||||
if (dwflags & DDSCL_FULLSCREEN){
|
if(dxw.Windowize){
|
||||||
// v2.01.82 fix:
|
if (dwflags & DDSCL_FULLSCREEN){
|
||||||
// WARN: Tomb Raider 4 demo is setting cooperative level against hwnd 0 (desktop)
|
// v2.01.82 fix:
|
||||||
// so in this case better use the registered hWnd value. Same as GP500, who uses
|
// WARN: Tomb Raider 4 demo is setting cooperative level against hwnd 0 (desktop)
|
||||||
// the desktop window handle.
|
// so in this case better use the registered hWnd value. Same as GP500, who uses
|
||||||
// v2.02.31 fix:
|
// the desktop window handle.
|
||||||
// Hooligans - Storm over Europe wants to set cooperative level NORMAL to hwnd 0
|
// v2.02.31 fix:
|
||||||
// that is legitimate, but setting against desktop window gives an error code - so
|
// Hooligans - Storm over Europe wants to set cooperative level NORMAL to hwnd 0
|
||||||
// the zero hwnd redirection had to be moved within the FULLSCREEN if case.
|
// that is legitimate, but setting against desktop window gives an error code - so
|
||||||
if(dxw.IsRealDesktop(hwnd)){
|
// the zero hwnd redirection had to be moved within the FULLSCREEN if case.
|
||||||
OutTraceDW("SetCooperativeLevel: desktop hwnd=%x -> %x\n", hwnd, dxw.GethWnd());
|
if(dxw.IsRealDesktop(hwnd)){
|
||||||
hwnd=dxw.GethWnd();
|
OutTraceDW("SetCooperativeLevel: desktop hwnd=%x -> %x\n", hwnd, dxw.GethWnd());
|
||||||
|
hwnd=dxw.GethWnd();
|
||||||
|
}
|
||||||
|
dxw.SetFullScreen(TRUE);
|
||||||
|
dwflags &= ~(DDSCL_FULLSCREEN | DDSCL_EXCLUSIVE | DDSCL_ALLOWMODEX);
|
||||||
|
dwflags |= DDSCL_NORMAL;
|
||||||
|
res=(*pSetCooperativeLevel)(lpdd, hwnd, dwflags);
|
||||||
|
AdjustWindowFrame(hwnd, dxw.GetScreenWidth(), dxw.GetScreenHeight());
|
||||||
|
if (dxw.dwFlags1 & FIXWINFRAME) dxw.FixWindowFrame(hwnd);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
RECT client;
|
||||||
|
(*pGetClientRect)(hwnd, &client);
|
||||||
|
// v2.02.11:
|
||||||
|
// Non fullscreen cooperative mode means windowed, unless the window occupies the whole desktop area
|
||||||
|
dxw.SetFullScreen(client.right==dxw.iSizX && client.bottom==dxw.iSizY);
|
||||||
|
//dxw.SetFullScreen(FALSE);
|
||||||
|
res=(*pSetCooperativeLevel)(lpdd, hwnd, dwflags);
|
||||||
}
|
}
|
||||||
dxw.SetFullScreen(TRUE);
|
|
||||||
dwflags &= ~(DDSCL_FULLSCREEN | DDSCL_EXCLUSIVE | DDSCL_ALLOWMODEX);
|
|
||||||
dwflags |= DDSCL_NORMAL;
|
|
||||||
res=(*pSetCooperativeLevel)(lpdd, hwnd, dwflags);
|
|
||||||
AdjustWindowFrame(hwnd, dxw.GetScreenWidth(), dxw.GetScreenHeight());
|
|
||||||
if (dxw.dwFlags1 & FIXWINFRAME) dxw.FixWindowFrame(hwnd);
|
|
||||||
}
|
}
|
||||||
else{
|
else {
|
||||||
RECT client;
|
|
||||||
(*pGetClientRect)(hwnd, &client);
|
|
||||||
// v2.02.11:
|
|
||||||
// Non fullscreen cooperative mode means windowed, unless the window occupies the whole desktop area
|
|
||||||
dxw.SetFullScreen(client.right==dxw.iSizX && client.bottom==dxw.iSizY);
|
|
||||||
//dxw.SetFullScreen(FALSE);
|
|
||||||
res=(*pSetCooperativeLevel)(lpdd, hwnd, dwflags);
|
res=(*pSetCooperativeLevel)(lpdd, hwnd, dwflags);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(res)
|
if(res)
|
||||||
OutTraceE("SetCooperativeLevel: ERROR err=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
OutTraceE("SetCooperativeLevel: ERROR lpdd=%x hwnd=%x Flags=%x err=%x(%s) at %d\n",
|
||||||
|
lpdd, hwnd, dwflags, res, ExplainDDError(res), __LINE__);
|
||||||
|
|
||||||
GetHookInfo()->IsFullScreen=dxw.IsFullScreen();
|
GetHookInfo()->IsFullScreen=dxw.IsFullScreen();
|
||||||
|
|
||||||
@ -2396,8 +2417,17 @@ static HRESULT BuildPrimaryEmu(LPDIRECTDRAW lpdd, CreateSurface_Type pCreateSurf
|
|||||||
res=(*pCreateSurface)(lpdd, &ddsd, &lpDDSEmu_Prim, 0);
|
res=(*pCreateSurface)(lpdd, &ddsd, &lpDDSEmu_Prim, 0);
|
||||||
if(res==DDERR_PRIMARYSURFACEALREADYEXISTS){
|
if(res==DDERR_PRIMARYSURFACEALREADYEXISTS){
|
||||||
OutTraceDW("CreateSurface: ASSERT DDSEmu_Prim already exists\n");
|
OutTraceDW("CreateSurface: ASSERT DDSEmu_Prim already exists\n");
|
||||||
res=(*pGetGDISurface)(lpdd, &lpDDSEmu_Prim); // ok only if the previous surface has the good properties!!!
|
if(dxw.Windowize){
|
||||||
(*pReleaseS)(lpDDSEmu_Prim);
|
// in Winowize mode, the desktop properties are untouched, then the current primary surface can be recycled
|
||||||
|
res=(*pGetGDISurface)(lpdd, &lpDDSEmu_Prim);
|
||||||
|
(*pReleaseS)(lpDDSEmu_Prim);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// in non-Windowized mode, the primary surface must be released and rebuilt with the proper properties
|
||||||
|
res=(*pGetGDISurface)(lpdd, &lpDDSEmu_Prim);
|
||||||
|
if (lpDDSEmu_Prim) while((*pReleaseS)(lpDDSEmu_Prim));
|
||||||
|
res=(*pCreateSurface)(lpdd, &ddsd, &lpDDSEmu_Prim, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(res){
|
if(res){
|
||||||
OutTraceE("CreateSurface: ERROR on DDSEmu_Prim res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
OutTraceE("CreateSurface: ERROR on DDSEmu_Prim res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
||||||
@ -2663,6 +2693,9 @@ static HRESULT WINAPI extCreateSurface(int dxversion, CreateSurface_Type pCreate
|
|||||||
BuildSurface_Type BuildBackBuffer;
|
BuildSurface_Type BuildBackBuffer;
|
||||||
BuildSurface_Type BuildGeneric;
|
BuildSurface_Type BuildGeneric;
|
||||||
|
|
||||||
|
if(!dxw.Windowize){
|
||||||
|
}
|
||||||
|
|
||||||
if (dxw.dwFlags1 & EMULATESURFACE){
|
if (dxw.dwFlags1 & EMULATESURFACE){
|
||||||
BuildPrimary = BuildPrimaryEmu;
|
BuildPrimary = BuildPrimaryEmu;
|
||||||
BuildBackBuffer = BuildBackBufferEmu;
|
BuildBackBuffer = BuildBackBufferEmu;
|
||||||
|
@ -955,6 +955,7 @@ char *ExplainWinMessage(DWORD c)
|
|||||||
case WM_IME_COMPOSITIONFULL: eb="WM_IME_COMPOSITIONFULL"; break;
|
case WM_IME_COMPOSITIONFULL: eb="WM_IME_COMPOSITIONFULL"; break;
|
||||||
case WM_IME_SELECT: eb="WM_IME_SELECT"; break;
|
case WM_IME_SELECT: eb="WM_IME_SELECT"; break;
|
||||||
case WM_IME_CHAR: eb="WM_IME_CHAR"; break;
|
case WM_IME_CHAR: eb="WM_IME_CHAR"; break;
|
||||||
|
case WM_IME_REQUEST: eb="WM_IME_REQUEST"; break;
|
||||||
case WM_IME_KEYDOWN: eb="WM_IME_KEYDOWN"; break;
|
case WM_IME_KEYDOWN: eb="WM_IME_KEYDOWN"; break;
|
||||||
case WM_IME_KEYUP: eb="WM_IME_KEYUP"; break;
|
case WM_IME_KEYUP: eb="WM_IME_KEYUP"; break;
|
||||||
#endif /* WINVER >= 0x0400 */
|
#endif /* WINVER >= 0x0400 */
|
||||||
|
105
dll/dxhook.cpp
105
dll/dxhook.cpp
@ -800,8 +800,8 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(dxw.dwFlags4 & STRETCHTIMERS){
|
if(dxw.dwFlags4 & STRETCHTIMERS){
|
||||||
if(LastTimeShift != dxw.TimeShift) dxw.RenewTimers();
|
if(LastTimeShift != dxw.TimeShift) dxw.RenewTimers();
|
||||||
LastTimeShift=dxw.TimeShift;
|
LastTimeShift=dxw.TimeShift;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(message){
|
switch(message){
|
||||||
@ -819,7 +819,7 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
|
|||||||
case WM_NCPAINT:
|
case WM_NCPAINT:
|
||||||
if((dxw.dwFlags1 & LOCKWINPOS) && (hwnd == dxw.GethWnd()) && dxw.IsFullScreen()){ // v2.02.30: don't alter child and other windows....
|
if((dxw.dwFlags1 & LOCKWINPOS) && (hwnd == dxw.GethWnd()) && dxw.IsFullScreen()){ // v2.02.30: don't alter child and other windows....
|
||||||
OutTraceDW("WindowProc: %s wparam=%x\n", ExplainWinMessage(message), wparam);
|
OutTraceDW("WindowProc: %s wparam=%x\n", ExplainWinMessage(message), wparam);
|
||||||
return (*pDefWindowProc)(hwnd, message, wparam, lparam);
|
return (*pDefWindowProcA)(hwnd, message, wparam, lparam);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WM_NCCREATE:
|
case WM_NCCREATE:
|
||||||
@ -843,7 +843,7 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
|
|||||||
if((dxw.dwFlags2 & FIXNCHITTEST) && (dxw.dwFlags1 & MODIFYMOUSE)){ // mouse processing
|
if((dxw.dwFlags2 & FIXNCHITTEST) && (dxw.dwFlags1 & MODIFYMOUSE)){ // mouse processing
|
||||||
POINT cursor;
|
POINT cursor;
|
||||||
LRESULT ret;
|
LRESULT ret;
|
||||||
ret=(*pDefWindowProc)(hwnd, message, wparam, lparam);
|
ret=(*pDefWindowProcA)(hwnd, message, wparam, lparam);
|
||||||
if (ret==HTCLIENT) {
|
if (ret==HTCLIENT) {
|
||||||
cursor.x=LOWORD(lparam);
|
cursor.x=LOWORD(lparam);
|
||||||
cursor.y=HIWORD(lparam);
|
cursor.y=HIWORD(lparam);
|
||||||
@ -855,13 +855,13 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WM_ERASEBKGND:
|
case WM_ERASEBKGND:
|
||||||
if(dxw.IsDesktop(hwnd)){
|
if(dxw.Windowize && dxw.IsDesktop(hwnd)){
|
||||||
OutTraceDW("WindowProc: WM_ERASEBKGND(%x,%x) - suppressed\n", wparam, lparam);
|
OutTraceDW("WindowProc: WM_ERASEBKGND(%x,%x) - suppressed\n", wparam, lparam);
|
||||||
return 1; // 1 == OK, erased
|
return 1; // 1 == OK, erased
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WM_DISPLAYCHANGE:
|
case WM_DISPLAYCHANGE:
|
||||||
if ((dxw.dwFlags1 & LOCKWINPOS) && dxw.IsFullScreen()){
|
if (dxw.Windowize && (dxw.dwFlags1 & LOCKWINPOS) && dxw.IsFullScreen()){
|
||||||
OutTraceDW("WindowProc: prevent WM_DISPLAYCHANGE depth=%d size=(%d,%d)\n",
|
OutTraceDW("WindowProc: prevent WM_DISPLAYCHANGE depth=%d size=(%d,%d)\n",
|
||||||
wparam, LOWORD(lparam), HIWORD(lparam));
|
wparam, LOWORD(lparam), HIWORD(lparam));
|
||||||
// v2.02.43: unless EMULATESURFACE is set, lock the screen resolution only, but not the color depth!
|
// v2.02.43: unless EMULATESURFACE is set, lock the screen resolution only, but not the color depth!
|
||||||
@ -873,7 +873,7 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
|
|||||||
break;
|
break;
|
||||||
case WM_WINDOWPOSCHANGING:
|
case WM_WINDOWPOSCHANGING:
|
||||||
case WM_WINDOWPOSCHANGED:
|
case WM_WINDOWPOSCHANGED:
|
||||||
if(dxw.IsFullScreen()){
|
if(dxw.Windowize && dxw.IsFullScreen()){
|
||||||
LPWINDOWPOS wp;
|
LPWINDOWPOS wp;
|
||||||
wp = (LPWINDOWPOS)lparam;
|
wp = (LPWINDOWPOS)lparam;
|
||||||
dxwFixWindowPos("WindowProc", hwnd, lparam);
|
dxwFixWindowPos("WindowProc", hwnd, lparam);
|
||||||
@ -917,26 +917,28 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
|
|||||||
while((*pShowCursor)(1) < 0);
|
while((*pShowCursor)(1) < 0);
|
||||||
break;
|
break;
|
||||||
case WM_MOUSEMOVE:
|
case WM_MOUSEMOVE:
|
||||||
prev.x = LOWORD(lparam);
|
if(dxw.Windowize){
|
||||||
prev.y = HIWORD(lparam);
|
prev.x = LOWORD(lparam);
|
||||||
if (dxw.dwFlags1 & HIDEHWCURSOR) {
|
prev.y = HIWORD(lparam);
|
||||||
(*pGetClientRect)(hwnd, &rect);
|
if (dxw.dwFlags1 & HIDEHWCURSOR) {
|
||||||
if(prev.x >= 0 && prev.x < rect.right && prev.y >= 0 && prev.y < rect.bottom)
|
(*pGetClientRect)(hwnd, &rect);
|
||||||
while((*pShowCursor)(0) >= 0);
|
if(prev.x >= 0 && prev.x < rect.right && prev.y >= 0 && prev.y < rect.bottom)
|
||||||
else
|
while((*pShowCursor)(0) >= 0);
|
||||||
|
else
|
||||||
|
while((*pShowCursor)(1) < 0);
|
||||||
|
}
|
||||||
|
else {
|
||||||
while((*pShowCursor)(1) < 0);
|
while((*pShowCursor)(1) < 0);
|
||||||
|
}
|
||||||
|
if(dxw.dwFlags1 & MODIFYMOUSE){ // mouse processing
|
||||||
|
// scale mouse coordinates
|
||||||
|
curr=dxw.FixCursorPos(prev); //v2.02.30
|
||||||
|
lparam = MAKELPARAM(curr.x, curr.y);
|
||||||
|
OutTraceC("WindowProc: hwnd=%x pos XY=(%d,%d)->(%d,%d)\n", hwnd, prev.x, prev.y, curr.x, curr.y);
|
||||||
|
}
|
||||||
|
GetHookInfo()->CursorX=LOWORD(lparam);
|
||||||
|
GetHookInfo()->CursorY=HIWORD(lparam);
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
while((*pShowCursor)(1) < 0);
|
|
||||||
}
|
|
||||||
if(dxw.dwFlags1 & MODIFYMOUSE){ // mouse processing
|
|
||||||
// scale mouse coordinates
|
|
||||||
curr=dxw.FixCursorPos(prev); //v2.02.30
|
|
||||||
lparam = MAKELPARAM(curr.x, curr.y);
|
|
||||||
OutTraceC("WindowProc: hwnd=%x pos XY=(%d,%d)->(%d,%d)\n", hwnd, prev.x, prev.y, curr.x, curr.y);
|
|
||||||
}
|
|
||||||
GetHookInfo()->CursorX=LOWORD(lparam);
|
|
||||||
GetHookInfo()->CursorY=HIWORD(lparam);
|
|
||||||
break;
|
break;
|
||||||
// fall through cases:
|
// fall through cases:
|
||||||
case WM_MOUSEWHEEL:
|
case WM_MOUSEWHEEL:
|
||||||
@ -949,23 +951,25 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
|
|||||||
case WM_MBUTTONDOWN:
|
case WM_MBUTTONDOWN:
|
||||||
case WM_MBUTTONUP:
|
case WM_MBUTTONUP:
|
||||||
case WM_MBUTTONDBLCLK:
|
case WM_MBUTTONDBLCLK:
|
||||||
if((dxw.dwFlags1 & CLIPCURSOR) && ClipCursorToggleState) dxw.SetClipCursor();
|
if(dxw.Windowize){
|
||||||
if(dxw.dwFlags1 & MODIFYMOUSE){ // mouse processing
|
if((dxw.dwFlags1 & CLIPCURSOR) && ClipCursorToggleState) dxw.SetClipCursor();
|
||||||
// scale mouse coordinates
|
if(dxw.dwFlags1 & MODIFYMOUSE){ // mouse processing
|
||||||
prev.x = LOWORD(lparam);
|
// scale mouse coordinates
|
||||||
prev.y = HIWORD(lparam);
|
prev.x = LOWORD(lparam);
|
||||||
curr = prev;
|
prev.y = HIWORD(lparam);
|
||||||
if(message == WM_MOUSEWHEEL){ // v2.02.33 mousewheel fix
|
curr = prev;
|
||||||
POINT upleft={0,0};
|
if(message == WM_MOUSEWHEEL){ // v2.02.33 mousewheel fix
|
||||||
(*pClientToScreen)(dxw.GethWnd(), &upleft);
|
POINT upleft={0,0};
|
||||||
curr = dxw.SubCoordinates(curr, upleft);
|
(*pClientToScreen)(dxw.GethWnd(), &upleft);
|
||||||
|
curr = dxw.SubCoordinates(curr, upleft);
|
||||||
|
}
|
||||||
|
curr=dxw.FixCursorPos(curr); //v2.02.30
|
||||||
|
lparam = MAKELPARAM(curr.x, curr.y);
|
||||||
|
OutTraceC("WindowProc: hwnd=%x pos XY=(%d,%d)->(%d,%d)\n", hwnd, prev.x, prev.y, curr.x, curr.y);
|
||||||
}
|
}
|
||||||
curr=dxw.FixCursorPos(curr); //v2.02.30
|
GetHookInfo()->CursorX=LOWORD(lparam);
|
||||||
lparam = MAKELPARAM(curr.x, curr.y);
|
GetHookInfo()->CursorY=HIWORD(lparam);
|
||||||
OutTraceC("WindowProc: hwnd=%x pos XY=(%d,%d)->(%d,%d)\n", hwnd, prev.x, prev.y, curr.x, curr.y);
|
|
||||||
}
|
}
|
||||||
GetHookInfo()->CursorX=LOWORD(lparam);
|
|
||||||
GetHookInfo()->CursorY=HIWORD(lparam);
|
|
||||||
break;
|
break;
|
||||||
case WM_SETFOCUS:
|
case WM_SETFOCUS:
|
||||||
OutTraceDW("WindowProc: hwnd=%x GOT FOCUS\n", hwnd);
|
OutTraceDW("WindowProc: hwnd=%x GOT FOCUS\n", hwnd);
|
||||||
@ -1051,7 +1055,7 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
|
|||||||
case WM_SETCURSOR: // shows a different cursor when moving on borders
|
case WM_SETCURSOR: // shows a different cursor when moving on borders
|
||||||
case WM_NCLBUTTONDOWN: // intercepts mouse down on borders
|
case WM_NCLBUTTONDOWN: // intercepts mouse down on borders
|
||||||
case WM_NCLBUTTONUP: // intercepts mouse up on borders
|
case WM_NCLBUTTONUP: // intercepts mouse up on borders
|
||||||
ret=(*pDefWindowProc)(hwnd, message, wparam, lparam);
|
ret=(*pDefWindowProcA)(hwnd, message, wparam, lparam);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1066,7 +1070,7 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
|
|||||||
sprintf(sMsg,"ASSERT: WindowProc mismatch hwnd=%x\n", hwnd);
|
sprintf(sMsg,"ASSERT: WindowProc mismatch hwnd=%x\n", hwnd);
|
||||||
OutTraceDW(sMsg);
|
OutTraceDW(sMsg);
|
||||||
if (IsAssertEnabled) MessageBox(0, sMsg, "WindowProc", MB_OK | MB_ICONEXCLAMATION);
|
if (IsAssertEnabled) MessageBox(0, sMsg, "WindowProc", MB_OK | MB_ICONEXCLAMATION);
|
||||||
return (*pDefWindowProc)(hwnd, message, wparam, lparam);
|
return (*pDefWindowProcA)(hwnd, message, wparam, lparam);
|
||||||
}
|
}
|
||||||
|
|
||||||
void HookSysLibsInit()
|
void HookSysLibsInit()
|
||||||
@ -1528,9 +1532,11 @@ void HookInit(TARGETMAP *target, HWND hwnd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// make InitPosition used for both DInput and DDraw
|
// make InitPosition used for both DInput and DDraw
|
||||||
InitPosition(target->initx, target->inity,
|
if(dxw.Windowize){
|
||||||
target->minx, target->miny, target->maxx, target->maxy);
|
InitPosition(target->initx, target->inity,
|
||||||
dxw.InitWindowPos(target->posx, target->posy, target->sizx, target->sizy);
|
target->minx, target->miny, target->maxx, target->maxy);
|
||||||
|
dxw.InitWindowPos(target->posx, target->posy, target->sizx, target->sizy);
|
||||||
|
}
|
||||||
|
|
||||||
OutTraceB("HookInit: base hmodule=%x\n", base);
|
OutTraceB("HookInit: base hmodule=%x\n", base);
|
||||||
HookModule(base, dxw.dwTargetDDVersion);
|
HookModule(base, dxw.dwTargetDDVersion);
|
||||||
@ -1563,14 +1569,17 @@ void HookInit(TARGETMAP *target, HWND hwnd)
|
|||||||
|
|
||||||
InitScreenParameters();
|
InitScreenParameters();
|
||||||
if(hwnd) HookWindowProc(hwnd);
|
if(hwnd) HookWindowProc(hwnd);
|
||||||
|
// in fullscreen mode, messages seem to reach and get processed by the parent window
|
||||||
|
if(!dxw.Windowize && hwnd) HookWindowProc(GetParent(hwnd));
|
||||||
|
|
||||||
// initialize window: if
|
// initialize window: if
|
||||||
// 1) not in injection mode (hwnd != 0) and
|
// 1) not in injection mode (hwnd != 0) and
|
||||||
// 2) supposedly in fullscreen mode (dxw.IsFullScreen()) and
|
// 2) in Windowed mode and
|
||||||
// 3) configuration ask for a overlapped bordered window (dxw.dwFlags1 & FIXWINFRAME) then
|
// 3) supposedly in fullscreen mode (dxw.IsFullScreen()) and
|
||||||
|
// 4) configuration ask for a overlapped bordered window (dxw.dwFlags1 & FIXWINFRAME) then
|
||||||
// update window styles: just this window or, when FIXPARENTWIN is set, the father one as well.
|
// update window styles: just this window or, when FIXPARENTWIN is set, the father one as well.
|
||||||
|
|
||||||
if (hwnd && dxw.IsFullScreen() && (dxw.dwFlags1 & FIXWINFRAME)) {
|
if (hwnd && dxw.Windowize && dxw.IsFullScreen() && (dxw.dwFlags1 & FIXWINFRAME)) {
|
||||||
dxw.FixWindowFrame(dxw.hChildWnd);
|
dxw.FixWindowFrame(dxw.hChildWnd);
|
||||||
AdjustWindowPos(dxw.hChildWnd, target->sizx, target->sizy);
|
AdjustWindowPos(dxw.hChildWnd, target->sizx, target->sizy);
|
||||||
if(dxw.dwFlags1 & FIXPARENTWIN) {
|
if(dxw.dwFlags1 & FIXPARENTWIN) {
|
||||||
|
@ -64,6 +64,7 @@ void dxwCore::SetFullScreen(BOOL fs)
|
|||||||
|
|
||||||
BOOL dxwCore::IsFullScreen()
|
BOOL dxwCore::IsFullScreen()
|
||||||
{
|
{
|
||||||
|
//if(!Windowize) return FALSE;
|
||||||
return FullScreen;
|
return FullScreen;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74,7 +75,8 @@ void dxwCore::InitTarget(TARGETMAP *target)
|
|||||||
dwFlags3 = target->flags3;
|
dwFlags3 = target->flags3;
|
||||||
dwFlags4 = target->flags4;
|
dwFlags4 = target->flags4;
|
||||||
dwTFlags = target->tflags;
|
dwTFlags = target->tflags;
|
||||||
if(dxw.dwFlags3 & FULLSCREENONLY) FullScreen=TRUE;
|
Windowize = (dwFlags2 & WINDOWIZE) ? TRUE : FALSE;
|
||||||
|
if(dwFlags3 & FULLSCREENONLY) FullScreen=TRUE;
|
||||||
gsModules = target->module;
|
gsModules = target->module;
|
||||||
MaxFPS = target->MaxFPS;
|
MaxFPS = target->MaxFPS;
|
||||||
CustomOpenGLLib = target->OpenGLLib;
|
CustomOpenGLLib = target->OpenGLLib;
|
||||||
|
@ -118,6 +118,7 @@ public: // methods
|
|||||||
LARGE_INTEGER StretchLargeCounter(LARGE_INTEGER);
|
LARGE_INTEGER StretchLargeCounter(LARGE_INTEGER);
|
||||||
|
|
||||||
public: // simple data variables
|
public: // simple data variables
|
||||||
|
BOOL Windowize;
|
||||||
DDPIXELFORMAT ActualPixelFormat;
|
DDPIXELFORMAT ActualPixelFormat;
|
||||||
DDPIXELFORMAT VirtualPixelFormat;
|
DDPIXELFORMAT VirtualPixelFormat;
|
||||||
DWORD dwDDVersion;
|
DWORD dwDDVersion;
|
||||||
|
@ -24,7 +24,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "dxwnd.h"
|
#include "dxwnd.h"
|
||||||
#include "dxwcore.hpp"
|
#include "dxwcore.hpp"
|
||||||
|
|
||||||
#define VERSION "2.02.72"
|
#define VERSION "2.02.73"
|
||||||
|
|
||||||
#define DDTHREADLOCK 1
|
#define DDTHREADLOCK 1
|
||||||
|
|
||||||
|
Binary file not shown.
266
dll/hd3d.cpp
266
dll/hd3d.cpp
@ -661,52 +661,54 @@ HRESULT WINAPI extReset(void *pd3dd, D3DPRESENT_PARAMETERS* pPresParam)
|
|||||||
OutTrace(" PresentationInterval = 0x%x\n", *(tmp ++));
|
OutTrace(" PresentationInterval = 0x%x\n", *(tmp ++));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(Windowed) {
|
if(dxw.Windowize){
|
||||||
// do not attempt to reset when returning to windowed mode: it is useless (you are windowed already)
|
if(Windowed) {
|
||||||
// and the code below (GetDirect3D, ...) doesn't work.
|
// do not attempt to reset when returning to windowed mode: it is useless (you are windowed already)
|
||||||
OutTraceDW("SKIPPED!\n");
|
// and the code below (GetDirect3D, ...) doesn't work.
|
||||||
return DD_OK;
|
OutTraceDW("SKIPPED!\n");
|
||||||
}
|
return DD_OK;
|
||||||
|
}
|
||||||
|
|
||||||
if (dwD3DVersion == 9){
|
if (dwD3DVersion == 9){
|
||||||
res=(*pGetDirect3D9)(pd3dd, &pD3D);
|
res=(*pGetDirect3D9)(pd3dd, &pD3D);
|
||||||
if(res) {
|
if(res) {
|
||||||
OutTraceDW("GetDirect3D FAILED! %x\n", res);
|
OutTraceDW("GetDirect3D FAILED! %x\n", res);
|
||||||
return(DD_OK);
|
return(DD_OK);
|
||||||
|
}
|
||||||
|
OutTraceDW("GetDirect3D pd3d=%x\n", pD3D);
|
||||||
|
res=(*pGetAdapterDisplayMode9)(pD3D, 0, &mode);
|
||||||
|
if(res) {
|
||||||
|
OutTraceDW("GetAdapterDisplayMode FAILED! %x\n", res);
|
||||||
|
return(DD_OK);
|
||||||
|
}
|
||||||
|
param[2] = mode.Format;
|
||||||
|
param[7] = 0; //hDeviceWindow
|
||||||
|
dxw.SetFullScreen(~param[8]?TRUE:FALSE);
|
||||||
|
param[8] = 1; //Windowed
|
||||||
|
//param[11] = D3DPRESENTFLAG_DEVICECLIP; //Flags;
|
||||||
|
param[12] = 0; //FullScreen_RefreshRateInHz;
|
||||||
|
param[13] = D3DPRESENT_INTERVAL_DEFAULT; //PresentationInterval
|
||||||
}
|
}
|
||||||
OutTraceDW("GetDirect3D pd3d=%x\n", pD3D);
|
else{
|
||||||
res=(*pGetAdapterDisplayMode9)(pD3D, 0, &mode);
|
res=(*pGetDirect3D8)(pd3dd, &pD3D);
|
||||||
if(res) {
|
if(res) {
|
||||||
OutTraceDW("GetAdapterDisplayMode FAILED! %x\n", res);
|
OutTraceDW("GetDirect3D FAILED! %x\n", res);
|
||||||
return(DD_OK);
|
return(DD_OK);
|
||||||
|
}
|
||||||
|
OutTraceDW("GetDirect3D pd3d=%x\n", pD3D);
|
||||||
|
res=(*pGetAdapterDisplayMode8)(pD3D, 0, &mode);
|
||||||
|
if(res) {
|
||||||
|
OutTraceDW("GetAdapterDisplayMode FAILED! %x\n", res);
|
||||||
|
return(DD_OK);
|
||||||
|
}
|
||||||
|
param[2] = mode.Format;
|
||||||
|
param[6] = 0; //hDeviceWindow
|
||||||
|
dxw.SetFullScreen(~param[7]?TRUE:FALSE);
|
||||||
|
param[7] = 1; //Windowed
|
||||||
|
//param[10] = D3DPRESENTFLAG_DEVICECLIP; //Flags;
|
||||||
|
param[11] = 0; //FullScreen_RefreshRateInHz;
|
||||||
|
param[12] = D3DPRESENT_INTERVAL_DEFAULT; //PresentationInterval
|
||||||
}
|
}
|
||||||
param[2] = mode.Format;
|
|
||||||
param[7] = 0; //hDeviceWindow
|
|
||||||
dxw.SetFullScreen(~param[8]?TRUE:FALSE);
|
|
||||||
param[8] = 1; //Windowed
|
|
||||||
//param[11] = D3DPRESENTFLAG_DEVICECLIP; //Flags;
|
|
||||||
param[12] = 0; //FullScreen_RefreshRateInHz;
|
|
||||||
param[13] = D3DPRESENT_INTERVAL_DEFAULT; //PresentationInterval
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
res=(*pGetDirect3D8)(pd3dd, &pD3D);
|
|
||||||
if(res) {
|
|
||||||
OutTraceDW("GetDirect3D FAILED! %x\n", res);
|
|
||||||
return(DD_OK);
|
|
||||||
}
|
|
||||||
OutTraceDW("GetDirect3D pd3d=%x\n", pD3D);
|
|
||||||
res=(*pGetAdapterDisplayMode8)(pD3D, 0, &mode);
|
|
||||||
if(res) {
|
|
||||||
OutTraceDW("GetAdapterDisplayMode FAILED! %x\n", res);
|
|
||||||
return(DD_OK);
|
|
||||||
}
|
|
||||||
param[2] = mode.Format;
|
|
||||||
param[6] = 0; //hDeviceWindow
|
|
||||||
dxw.SetFullScreen(~param[7]?TRUE:FALSE);
|
|
||||||
param[7] = 1; //Windowed
|
|
||||||
//param[10] = D3DPRESENTFLAG_DEVICECLIP; //Flags;
|
|
||||||
param[11] = 0; //FullScreen_RefreshRateInHz;
|
|
||||||
param[12] = D3DPRESENT_INTERVAL_DEFAULT; //PresentationInterval
|
|
||||||
}
|
}
|
||||||
|
|
||||||
res = (*pReset)(pd3dd, (D3DPRESENT_PARAMETERS *)param);
|
res = (*pReset)(pd3dd, (D3DPRESENT_PARAMETERS *)param);
|
||||||
@ -836,43 +838,10 @@ HRESULT WINAPI extGetAdapterDisplayMode9(void *lpd3d, UINT Adapter, D3DDISPLAYMO
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
//HRESULT extValidateDevice(void *, DWORD *pNumPasses);
|
void FixD3DWindowFrame(HWND hfocuswindow)
|
||||||
//HRESULT extGetDeviceCaps(void *, D3DCAPS9 *pCaps);
|
|
||||||
//typedef HRESULT (WINAPI *ValidateDevice_Type)(void *, DWORD *);
|
|
||||||
//typedef HRESULT (WINAPI *GetDeviceCapsD3D_Type)(void *, D3DCAPS9 *);
|
|
||||||
//ValidateDevice_Type pValidateDevice;
|
|
||||||
//GetDeviceCapsD3D_Type pGetDeviceCapsD3D;
|
|
||||||
//HRESULT extValidateDevice(void *lpd3dd, DWORD *pNumPasses)
|
|
||||||
//{
|
|
||||||
// OutTrace("ValidateDevice hooked\n");
|
|
||||||
// return (*pValidateDevice)(lpd3dd, pNumPasses);
|
|
||||||
//}
|
|
||||||
//HRESULT extGetDeviceCapsD3D(void *lpd3dd, D3DCAPS9 *pCaps)
|
|
||||||
//{
|
|
||||||
// OutTrace("GetDeviceCaps hooked\n");
|
|
||||||
// return (*pGetDeviceCapsD3D)(lpd3dd, pCaps);
|
|
||||||
//}
|
|
||||||
HRESULT WINAPI extProbe(void *lpd3dd)
|
|
||||||
{
|
{
|
||||||
OutTraceD3D("Probe: d3dd=%x\n", lpd3dd);
|
if(!(dxw.dwFlags3 & NOWINDOWMOVE))
|
||||||
return 0;
|
AdjustWindowFrame(dxw.GethWnd(), dxw.GetScreenWidth(), dxw.GetScreenHeight());
|
||||||
}
|
|
||||||
|
|
||||||
HRESULT WINAPI extCreateDevice(void *lpd3d, UINT adapter, D3DDEVTYPE devicetype,
|
|
||||||
HWND hfocuswindow, DWORD behaviorflags, D3DPRESENT_PARAMETERS *ppresentparam, void **ppd3dd)
|
|
||||||
{
|
|
||||||
HRESULT res;
|
|
||||||
DWORD param[64], *tmp;
|
|
||||||
D3DDISPLAYMODE mode;
|
|
||||||
int Windowed;
|
|
||||||
|
|
||||||
OutTraceD3D("CreateDevice: D3DVersion=%d lpd3d=%x adapter=%x hFocusWnd=%x behavior=%x, size=(%d,%d)\n",
|
|
||||||
dwD3DVersion, lpd3d, adapter, hfocuswindow, behaviorflags, ppresentparam->BackBufferWidth, ppresentparam->BackBufferHeight);
|
|
||||||
|
|
||||||
memcpy(param, ppresentparam, (dwD3DVersion == 9)?56:52);
|
|
||||||
dxw.SethWnd(hfocuswindow);
|
|
||||||
dxw.SetScreenSize(param[0], param[1]);
|
|
||||||
if(!(dxw.dwFlags3 & NOWINDOWMOVE)) AdjustWindowFrame(dxw.GethWnd(), dxw.GetScreenWidth(), dxw.GetScreenHeight());
|
|
||||||
|
|
||||||
if(dxw.dwFlags3 & FIXD3DFRAME){
|
if(dxw.dwFlags3 & FIXD3DFRAME){
|
||||||
char ClassName[81];
|
char ClassName[81];
|
||||||
@ -893,6 +862,24 @@ HRESULT WINAPI extCreateDevice(void *lpd3d, UINT adapter, D3DDEVTYPE devicetype,
|
|||||||
OutTraceE("CreateDevice: CreateWindowEx ERROR err=%d\n", GetLastError());
|
OutTraceE("CreateDevice: CreateWindowEx ERROR err=%d\n", GetLastError());
|
||||||
dxw.SethWnd(hfocuswindow, dxw.GethWnd());
|
dxw.SethWnd(hfocuswindow, dxw.GethWnd());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT WINAPI extCreateDevice(void *lpd3d, UINT adapter, D3DDEVTYPE devicetype,
|
||||||
|
HWND hfocuswindow, DWORD behaviorflags, D3DPRESENT_PARAMETERS *ppresentparam, void **ppd3dd)
|
||||||
|
{
|
||||||
|
HRESULT res;
|
||||||
|
DWORD param[64], *tmp;
|
||||||
|
D3DDISPLAYMODE mode;
|
||||||
|
int Windowed;
|
||||||
|
|
||||||
|
OutTraceD3D("CreateDevice: D3DVersion=%d lpd3d=%x adapter=%x hFocusWnd=%x behavior=%x, size=(%d,%d)\n",
|
||||||
|
dwD3DVersion, lpd3d, adapter, hfocuswindow, behaviorflags, ppresentparam->BackBufferWidth, ppresentparam->BackBufferHeight);
|
||||||
|
|
||||||
|
memcpy(param, ppresentparam, (dwD3DVersion == 9)?56:52);
|
||||||
|
dxw.SethWnd(hfocuswindow);
|
||||||
|
dxw.SetScreenSize(param[0], param[1]);
|
||||||
|
|
||||||
|
if(dxw.Windowize) FixD3DWindowFrame(hfocuswindow);
|
||||||
|
|
||||||
if(IsTraceDW){
|
if(IsTraceDW){
|
||||||
tmp = param;
|
tmp = param;
|
||||||
@ -917,7 +904,6 @@ HRESULT WINAPI extCreateDevice(void *lpd3d, UINT adapter, D3DDEVTYPE devicetype,
|
|||||||
OutTrace(" PresentationInterval = 0x%x\n", *(tmp ++));
|
OutTrace(" PresentationInterval = 0x%x\n", *(tmp ++));
|
||||||
}
|
}
|
||||||
|
|
||||||
//((LPDIRECT3D9)lpd3d)->GetAdapterDisplayMode(0, &mode);
|
|
||||||
if(dwD3DVersion == 9)
|
if(dwD3DVersion == 9)
|
||||||
(*pGetAdapterDisplayMode9)(lpd3d, 0, &mode);
|
(*pGetAdapterDisplayMode9)(lpd3d, 0, &mode);
|
||||||
else
|
else
|
||||||
@ -927,24 +913,26 @@ HRESULT WINAPI extCreateDevice(void *lpd3d, UINT adapter, D3DDEVTYPE devicetype,
|
|||||||
OutTraceDW(" Current ScreenSize = (%dx%d)\n", mode.Width, mode.Height);
|
OutTraceDW(" Current ScreenSize = (%dx%d)\n", mode.Width, mode.Height);
|
||||||
OutTraceDW(" Current Refresh Rate = %d\n", mode.RefreshRate);
|
OutTraceDW(" Current Refresh Rate = %d\n", mode.RefreshRate);
|
||||||
|
|
||||||
//param[0]=param[1]=0;
|
|
||||||
|
|
||||||
if(dwD3DVersion == 9){
|
if(dwD3DVersion == 9){
|
||||||
param[7] = 0; //hDeviceWindow
|
if(dxw.Windowize){
|
||||||
dxw.SetFullScreen(~param[8]?TRUE:FALSE);
|
param[7] = 0; //hDeviceWindow
|
||||||
param[8] = 1; //Windowed
|
dxw.SetFullScreen(~param[8]?TRUE:FALSE);
|
||||||
//param[11] = D3DPRESENTFLAG_DEVICECLIP; //Flags;
|
param[8] = 1; //Windowed
|
||||||
param[12] = 0; //FullScreen_RefreshRateInHz;
|
//param[11] = D3DPRESENTFLAG_DEVICECLIP; //Flags;
|
||||||
param[13] = D3DPRESENT_INTERVAL_DEFAULT; //PresentationInterval
|
param[12] = 0; //FullScreen_RefreshRateInHz;
|
||||||
|
param[13] = D3DPRESENT_INTERVAL_DEFAULT; //PresentationInterval
|
||||||
|
}
|
||||||
res = (*pCreateDevice9)(lpd3d, 0, devicetype, hfocuswindow, behaviorflags, param, ppd3dd);
|
res = (*pCreateDevice9)(lpd3d, 0, devicetype, hfocuswindow, behaviorflags, param, ppd3dd);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
param[6] = 0; //hDeviceWindow
|
if(dxw.Windowize){
|
||||||
dxw.SetFullScreen(~param[7]?TRUE:FALSE);
|
param[6] = 0; //hDeviceWindow
|
||||||
param[7] = 1; //Windowed
|
dxw.SetFullScreen(~param[7]?TRUE:FALSE);
|
||||||
//param[10] = D3DPRESENTFLAG_DEVICECLIP; //Flags;
|
param[7] = 1; //Windowed
|
||||||
param[11] = 0; //FullScreen_RefreshRateInHz;
|
//param[10] = D3DPRESENTFLAG_DEVICECLIP; //Flags;
|
||||||
param[12] = D3DPRESENT_INTERVAL_DEFAULT; //PresentationInterval
|
param[11] = 0; //FullScreen_RefreshRateInHz;
|
||||||
|
param[12] = D3DPRESENT_INTERVAL_DEFAULT; //PresentationInterval
|
||||||
|
}
|
||||||
res = (*pCreateDevice8)(lpd3d, 0, devicetype, hfocuswindow, behaviorflags, param, ppd3dd);
|
res = (*pCreateDevice8)(lpd3d, 0, devicetype, hfocuswindow, behaviorflags, param, ppd3dd);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -984,7 +972,8 @@ HRESULT WINAPI extCreateDeviceEx(void *lpd3d, UINT adapter, D3DDEVTYPE devicetyp
|
|||||||
memcpy(param, ppresentparam, 56);
|
memcpy(param, ppresentparam, 56);
|
||||||
dxw.SethWnd(hfocuswindow);
|
dxw.SethWnd(hfocuswindow);
|
||||||
dxw.SetScreenSize(param[0], param[1]);
|
dxw.SetScreenSize(param[0], param[1]);
|
||||||
AdjustWindowFrame(dxw.GethWnd(), dxw.GetScreenWidth(), dxw.GetScreenHeight());
|
|
||||||
|
if(dxw.Windowize) FixD3DWindowFrame(hfocuswindow);
|
||||||
|
|
||||||
tmp = param;
|
tmp = param;
|
||||||
if(IsTraceDW){
|
if(IsTraceDW){
|
||||||
@ -1016,12 +1005,14 @@ HRESULT WINAPI extCreateDeviceEx(void *lpd3d, UINT adapter, D3DDEVTYPE devicetyp
|
|||||||
OutTraceDW(" Current ScreenSize = (%dx%d)\n", mode.Width, mode.Height);
|
OutTraceDW(" Current ScreenSize = (%dx%d)\n", mode.Width, mode.Height);
|
||||||
OutTraceDW(" Current Refresh Rate = %d\n", mode.RefreshRate);
|
OutTraceDW(" Current Refresh Rate = %d\n", mode.RefreshRate);
|
||||||
|
|
||||||
//param[7] = 0; //hDeviceWindow
|
if(dxw.Windowize){
|
||||||
param[7] = (DWORD)dxw.GethWnd(); //hDeviceWindow
|
//param[7] = 0; //hDeviceWindow
|
||||||
dxw.SetFullScreen(~param[8]?TRUE:FALSE);
|
param[7] = (DWORD)dxw.GethWnd(); //hDeviceWindow
|
||||||
param[8] = 1; //Windowed
|
dxw.SetFullScreen(~param[8]?TRUE:FALSE);
|
||||||
param[12] = 0; //FullScreen_RefreshRateInHz;
|
param[8] = 1; //Windowed
|
||||||
param[13] = D3DPRESENT_INTERVAL_DEFAULT; //PresentationInterval
|
param[12] = 0; //FullScreen_RefreshRateInHz;
|
||||||
|
param[13] = D3DPRESENT_INTERVAL_DEFAULT; //PresentationInterval
|
||||||
|
}
|
||||||
|
|
||||||
res = (*pCreateDeviceEx)(lpd3d, 0, devicetype, hfocuswindow, behaviorflags, param, pFullscreenDisplayMode, ppd3dd);
|
res = (*pCreateDeviceEx)(lpd3d, 0, devicetype, hfocuswindow, behaviorflags, param, pFullscreenDisplayMode, ppd3dd);
|
||||||
if(res){
|
if(res){
|
||||||
@ -1105,7 +1096,7 @@ HRESULT WINAPI extCreateAdditionalSwapChain(void *lpd3d, D3DPRESENT_PARAMETERS *
|
|||||||
|
|
||||||
memcpy(param, pPresentationParameters, (dwD3DVersion == 9)?56:52);
|
memcpy(param, pPresentationParameters, (dwD3DVersion == 9)?56:52);
|
||||||
dxw.SetScreenSize(param[0], param[1]);
|
dxw.SetScreenSize(param[0], param[1]);
|
||||||
AdjustWindowFrame(dxw.GethWnd(), dxw.GetScreenWidth(), dxw.GetScreenHeight());
|
if(dxw.Windowize) FixD3DWindowFrame(dxw.GethWnd());
|
||||||
|
|
||||||
tmp = param;
|
tmp = param;
|
||||||
if(IsTraceDW){
|
if(IsTraceDW){
|
||||||
@ -1135,19 +1126,21 @@ HRESULT WINAPI extCreateAdditionalSwapChain(void *lpd3d, D3DPRESENT_PARAMETERS *
|
|||||||
OutTraceDW(" Current ScreenSize = (%dx%d)\n", mode.Width, mode.Height);
|
OutTraceDW(" Current ScreenSize = (%dx%d)\n", mode.Width, mode.Height);
|
||||||
OutTraceDW(" Current Refresh Rate = %d\n", mode.RefreshRate);
|
OutTraceDW(" Current Refresh Rate = %d\n", mode.RefreshRate);
|
||||||
|
|
||||||
if(dwD3DVersion == 9){
|
if(dxw.Windowize){
|
||||||
param[7] = 0; //hDeviceWindow
|
if(dwD3DVersion == 9){
|
||||||
dxw.SetFullScreen(~param[8]?TRUE:FALSE);
|
param[7] = 0; //hDeviceWindow
|
||||||
param[8] = 1; //Windowed
|
dxw.SetFullScreen(~param[8]?TRUE:FALSE);
|
||||||
param[12] = 0; //FullScreen_RefreshRateInHz;
|
param[8] = 1; //Windowed
|
||||||
param[13] = D3DPRESENT_INTERVAL_DEFAULT; //PresentationInterval
|
param[12] = 0; //FullScreen_RefreshRateInHz;
|
||||||
}
|
param[13] = D3DPRESENT_INTERVAL_DEFAULT; //PresentationInterval
|
||||||
else{
|
}
|
||||||
param[6] = 0; //hDeviceWindow
|
else{
|
||||||
dxw.SetFullScreen(~param[7]?TRUE:FALSE);
|
param[6] = 0; //hDeviceWindow
|
||||||
param[7] = 1; //Windowed
|
dxw.SetFullScreen(~param[7]?TRUE:FALSE);
|
||||||
param[11] = 0; //FullScreen_RefreshRateInHz;
|
param[7] = 1; //Windowed
|
||||||
param[12] = D3DPRESENT_INTERVAL_DEFAULT; //PresentationInterval
|
param[11] = 0; //FullScreen_RefreshRateInHz;
|
||||||
|
param[12] = D3DPRESENT_INTERVAL_DEFAULT; //PresentationInterval
|
||||||
|
}
|
||||||
}
|
}
|
||||||
res=(*pCreateAdditionalSwapChain)(lpd3d, (D3DPRESENT_PARAMETERS *)param, ppSwapChain);
|
res=(*pCreateAdditionalSwapChain)(lpd3d, (D3DPRESENT_PARAMETERS *)param, ppSwapChain);
|
||||||
if(res) OutTraceE("CreateAdditionalSwapChain ERROR: res=%x\n", res);
|
if(res) OutTraceE("CreateAdditionalSwapChain ERROR: res=%x\n", res);
|
||||||
@ -1175,13 +1168,16 @@ HRESULT WINAPI extD3D10CreateDevice(
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
SetHook((void *)(*(DWORD *)*ppDevice + 100), extRSSetViewports, (void **)&pRSSetViewports, "RSSetViewports(D10)");
|
SetHook((void *)(*(DWORD *)*ppDevice + 100), extRSSetViewports, (void **)&pRSSetViewports, "RSSetViewports(D10)");
|
||||||
ViewPort.TopLeftX=dxw.iPosX;
|
|
||||||
ViewPort.TopLeftY=dxw.iPosY;
|
if(dxw.Windowize){
|
||||||
ViewPort.Width=dxw.iSizX;
|
ViewPort.TopLeftX=dxw.iPosX;
|
||||||
ViewPort.Height=dxw.iSizY;
|
ViewPort.TopLeftY=dxw.iPosY;
|
||||||
ViewPort.MinDepth=1.0;
|
ViewPort.Width=dxw.iSizX;
|
||||||
ViewPort.MaxDepth=1.0;
|
ViewPort.Height=dxw.iSizY;
|
||||||
(*pRSSetViewports)((void *)*ppDevice, 1, (D3D11_VIEWPORT *)&ViewPort);
|
ViewPort.MinDepth=1.0;
|
||||||
|
ViewPort.MaxDepth=1.0;
|
||||||
|
(*pRSSetViewports)((void *)*ppDevice, 1, (D3D11_VIEWPORT *)&ViewPort);
|
||||||
|
}
|
||||||
OutTraceD3D("D3D10CreateDevice: ret=%x\n", res);
|
OutTraceD3D("D3D10CreateDevice: ret=%x\n", res);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
@ -1216,8 +1212,10 @@ HRESULT WINAPI extD3D10CreateDeviceAndSwapChain(
|
|||||||
HRESULT res;
|
HRESULT res;
|
||||||
OutTraceD3D("D3D10CreateDeviceAndSwapChain: DriverType=%x Flags=%x SDKVersion=%x\n", DriverType, Flags, SDKVersion);
|
OutTraceD3D("D3D10CreateDeviceAndSwapChain: DriverType=%x Flags=%x SDKVersion=%x\n", DriverType, Flags, SDKVersion);
|
||||||
//return 0x887a0004;
|
//return 0x887a0004;
|
||||||
pSwapChainDesc->OutputWindow = dxw.GethWnd();
|
if(dxw.Windowize){
|
||||||
pSwapChainDesc->Windowed = true;
|
pSwapChainDesc->OutputWindow = dxw.GethWnd();
|
||||||
|
pSwapChainDesc->Windowed = true;
|
||||||
|
}
|
||||||
res=(*pD3D10CreateDeviceAndSwapChain)(pAdapter, DriverType, Software, Flags, SDKVersion, pSwapChainDesc, ppSwapChain, ppDevice);
|
res=(*pD3D10CreateDeviceAndSwapChain)(pAdapter, DriverType, Software, Flags, SDKVersion, pSwapChainDesc, ppSwapChain, ppDevice);
|
||||||
OutTraceD3D("D3D10CreateDeviceAndSwapChain ret=%x\n", res);
|
OutTraceD3D("D3D10CreateDeviceAndSwapChain ret=%x\n", res);
|
||||||
return res;
|
return res;
|
||||||
@ -1236,8 +1234,10 @@ HRESULT WINAPI extD3D10CreateDeviceAndSwapChain1(
|
|||||||
HRESULT res;
|
HRESULT res;
|
||||||
OutTraceD3D("D3D10CreateDeviceAndSwapChain1: DriverType=%x Flags=%x SDKVersion=%x\n", DriverType, Flags, SDKVersion);
|
OutTraceD3D("D3D10CreateDeviceAndSwapChain1: DriverType=%x Flags=%x SDKVersion=%x\n", DriverType, Flags, SDKVersion);
|
||||||
//return 0x887a0004;
|
//return 0x887a0004;
|
||||||
pSwapChainDesc->OutputWindow = dxw.GethWnd();
|
if(dxw.Windowize){
|
||||||
pSwapChainDesc->Windowed = true;
|
pSwapChainDesc->OutputWindow = dxw.GethWnd();
|
||||||
|
pSwapChainDesc->Windowed = true;
|
||||||
|
}
|
||||||
res=(*pD3D10CreateDeviceAndSwapChain1)(pAdapter, DriverType, Software, Flags, SDKVersion, pSwapChainDesc, ppSwapChain, ppDevice);
|
res=(*pD3D10CreateDeviceAndSwapChain1)(pAdapter, DriverType, Software, Flags, SDKVersion, pSwapChainDesc, ppSwapChain, ppDevice);
|
||||||
OutTraceD3D("D3D10CreateDeviceAndSwapChain1 ret=%x\n", res);
|
OutTraceD3D("D3D10CreateDeviceAndSwapChain1 ret=%x\n", res);
|
||||||
return res;
|
return res;
|
||||||
@ -1294,7 +1294,7 @@ void WINAPI extRSSetViewports(ID3D11DeviceContext *This, UINT NumViewports, D3D1
|
|||||||
{
|
{
|
||||||
OutTraceD3D("RSSetViewports: NumViewports=%d\n", NumViewports);
|
OutTraceD3D("RSSetViewports: NumViewports=%d\n", NumViewports);
|
||||||
|
|
||||||
if(NumViewports==1){
|
if(dxw.Windowize && (NumViewports==1)){
|
||||||
pViewports->TopLeftX=dxw.iPosX;
|
pViewports->TopLeftX=dxw.iPosX;
|
||||||
pViewports->TopLeftY=dxw.iPosY;
|
pViewports->TopLeftY=dxw.iPosY;
|
||||||
pViewports->Width=dxw.iSizX;
|
pViewports->Width=dxw.iSizX;
|
||||||
@ -1405,8 +1405,16 @@ HRESULT WINAPI extGetDirect3D9(void *lpdd3dd, void **ppD3D9)
|
|||||||
|
|
||||||
HRESULT WINAPI extCheckFullScreen(void)
|
HRESULT WINAPI extCheckFullScreen(void)
|
||||||
{
|
{
|
||||||
OutTraceDW("CheckFullScreen: return OK\n");
|
HRESULT res;
|
||||||
return 0;
|
if(dxw.Windowize){
|
||||||
|
OutTraceDW("CheckFullScreen: return OK\n");
|
||||||
|
res=0;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
res=(*pCheckFullScreen)();
|
||||||
|
OutTraceDW("CheckFullScreen: return %x\n", res);
|
||||||
|
}
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
void WINAPI extSetGammaRamp(void *lpdd3dd, UINT iSwapChain, DWORD Flags, D3DGAMMARAMP *pRamp)
|
void WINAPI extSetGammaRamp(void *lpdd3dd, UINT iSwapChain, DWORD Flags, D3DGAMMARAMP *pRamp)
|
||||||
|
@ -517,7 +517,7 @@ FARPROC WINAPI extGetProcAddress(HMODULE hModule, LPCSTR proc)
|
|||||||
if (remap=Remap_d3d11_ProcAddress(proc, hModule)) return remap;
|
if (remap=Remap_d3d11_ProcAddress(proc, hModule)) return remap;
|
||||||
break;
|
break;
|
||||||
case SYSLIBIDX_OPENGL:
|
case SYSLIBIDX_OPENGL:
|
||||||
if (remap=Remap_gl_ProcAddress(proc, hModule)) return remap;
|
if(dxw.Windowize) if (remap=Remap_gl_ProcAddress(proc, hModule)) return remap;
|
||||||
break;
|
break;
|
||||||
// case SYSLIBIDX_GLIDE:
|
// case SYSLIBIDX_GLIDE:
|
||||||
// case SYSLIBIDX_GLIDE2X:
|
// case SYSLIBIDX_GLIDE2X:
|
||||||
|
@ -345,7 +345,8 @@ DXWEXTERN CreateDialogIndirectParam_Type pCreateDialogIndirectParam DXWINITIALIZ
|
|||||||
DXWEXTERN CreateDialogParam_Type pCreateDialogParam DXWINITIALIZED;
|
DXWEXTERN CreateDialogParam_Type pCreateDialogParam DXWINITIALIZED;
|
||||||
DXWEXTERN CreateWindowExA_Type pCreateWindowExA DXWINITIALIZED;
|
DXWEXTERN CreateWindowExA_Type pCreateWindowExA DXWINITIALIZED;
|
||||||
DXWEXTERN CreateWindowExW_Type pCreateWindowExW DXWINITIALIZED;
|
DXWEXTERN CreateWindowExW_Type pCreateWindowExW DXWINITIALIZED;
|
||||||
DXWEXTERN DefWindowProc_Type pDefWindowProc DXWINITIALIZED;
|
DXWEXTERN DefWindowProc_Type pDefWindowProcA DXWINITIALIZED;
|
||||||
|
DXWEXTERN DefWindowProc_Type pDefWindowProcW DXWINITIALIZED;
|
||||||
DXWEXTERN DrawText_Type pDrawText DXWINITIALIZED;
|
DXWEXTERN DrawText_Type pDrawText DXWINITIALIZED;
|
||||||
DXWEXTERN DrawTextEx_Type pDrawTextEx DXWINITIALIZED;
|
DXWEXTERN DrawTextEx_Type pDrawTextEx DXWINITIALIZED;
|
||||||
DXWEXTERN EndPaint_Type pEndPaint DXWINITIALIZED;
|
DXWEXTERN EndPaint_Type pEndPaint DXWINITIALIZED;
|
||||||
@ -394,6 +395,7 @@ DXWEXTERN GetForegroundWindow_Type pGetForegroundWindow DXWINITIALIZED;
|
|||||||
DXWEXTERN GetActiveWindow_Type pGetActiveWindow DXWINITIALIZED;
|
DXWEXTERN GetActiveWindow_Type pGetActiveWindow DXWINITIALIZED;
|
||||||
DXWEXTERN IsWindowVisible_Type pIsWindowVisible DXWINITIALIZED;
|
DXWEXTERN IsWindowVisible_Type pIsWindowVisible DXWINITIALIZED;
|
||||||
DXWEXTERN SystemParametersInfo_Type pSystemParametersInfoA DXWINITIALIZED;
|
DXWEXTERN SystemParametersInfo_Type pSystemParametersInfoA DXWINITIALIZED;
|
||||||
|
DXWEXTERN SystemParametersInfo_Type pSystemParametersInfoW DXWINITIALIZED;
|
||||||
DXWEXTERN KillTimer_Type pKillTimer DXWINITIALIZED;
|
DXWEXTERN KillTimer_Type pKillTimer DXWINITIALIZED;
|
||||||
DXWEXTERN GetUpdateRect_Type pGetUpdateRect DXWINITIALIZED;
|
DXWEXTERN GetUpdateRect_Type pGetUpdateRect DXWINITIALIZED;
|
||||||
|
|
||||||
@ -543,7 +545,8 @@ extern HWND WINAPI extCreateDialogIndirectParam(HINSTANCE, LPCDLGTEMPLATE, HWND,
|
|||||||
extern HWND WINAPI extCreateDialogParam(HINSTANCE, LPCSTR, HWND, DLGPROC, LPARAM);
|
extern HWND WINAPI extCreateDialogParam(HINSTANCE, LPCSTR, HWND, DLGPROC, LPARAM);
|
||||||
extern HWND WINAPI extCreateWindowExA(DWORD, LPCTSTR, LPCTSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID);
|
extern HWND WINAPI extCreateWindowExA(DWORD, LPCTSTR, LPCTSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID);
|
||||||
extern HWND WINAPI extCreateWindowExW(DWORD, LPCWSTR, LPCWSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID);
|
extern HWND WINAPI extCreateWindowExW(DWORD, LPCWSTR, LPCWSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID);
|
||||||
extern LRESULT WINAPI extDefWindowProc(HWND, UINT, WPARAM, LPARAM);
|
extern LRESULT WINAPI extDefWindowProcA(HWND, UINT, WPARAM, LPARAM);
|
||||||
|
extern LRESULT WINAPI extDefWindowProcW(HWND, UINT, WPARAM, LPARAM);
|
||||||
extern int WINAPI extDrawTextA(HDC, LPCTSTR, int, LPRECT, UINT);
|
extern int WINAPI extDrawTextA(HDC, LPCTSTR, int, LPRECT, UINT);
|
||||||
extern int WINAPI extDrawTextExA(HDC, LPTSTR, int, LPRECT, UINT, LPDRAWTEXTPARAMS);
|
extern int WINAPI extDrawTextExA(HDC, LPTSTR, int, LPRECT, UINT, LPDRAWTEXTPARAMS);
|
||||||
extern BOOL WINAPI extEndPaint(HWND, const PAINTSTRUCT *);
|
extern BOOL WINAPI extEndPaint(HWND, const PAINTSTRUCT *);
|
||||||
@ -603,6 +606,7 @@ extern HWND WINAPI extGetForegroundWindow(void);
|
|||||||
extern HWND WINAPI extGetActiveWindow(void);
|
extern HWND WINAPI extGetActiveWindow(void);
|
||||||
extern BOOL WINAPI extIsWindowVisible(HWND);
|
extern BOOL WINAPI extIsWindowVisible(HWND);
|
||||||
extern BOOL WINAPI extSystemParametersInfoA(UINT, UINT, PVOID, UINT);
|
extern BOOL WINAPI extSystemParametersInfoA(UINT, UINT, PVOID, UINT);
|
||||||
|
extern BOOL WINAPI extSystemParametersInfoW(UINT, UINT, PVOID, UINT);
|
||||||
extern BOOL WINAPI extKillTimer(HWND, UINT_PTR);
|
extern BOOL WINAPI extKillTimer(HWND, UINT_PTR);
|
||||||
extern BOOL WINAPI extGetUpdateRect(HWND, LPRECT, BOOL);
|
extern BOOL WINAPI extGetUpdateRect(HWND, LPRECT, BOOL);
|
||||||
|
|
||||||
|
294
dll/user32.cpp
294
dll/user32.cpp
@ -26,7 +26,8 @@ static HookEntry_Type Hooks[]={
|
|||||||
{"EnumDisplaySettingsA", (FARPROC)EnumDisplaySettingsA, (FARPROC *)&pEnumDisplaySettings, (FARPROC)extEnumDisplaySettings},
|
{"EnumDisplaySettingsA", (FARPROC)EnumDisplaySettingsA, (FARPROC *)&pEnumDisplaySettings, (FARPROC)extEnumDisplaySettings},
|
||||||
{"GetClipCursor", (FARPROC)GetClipCursor, (FARPROC*)&pGetClipCursor, (FARPROC)extGetClipCursor},
|
{"GetClipCursor", (FARPROC)GetClipCursor, (FARPROC*)&pGetClipCursor, (FARPROC)extGetClipCursor},
|
||||||
{"ClipCursor", (FARPROC)ClipCursor, (FARPROC *)&pClipCursor, (FARPROC)extClipCursor},
|
{"ClipCursor", (FARPROC)ClipCursor, (FARPROC *)&pClipCursor, (FARPROC)extClipCursor},
|
||||||
{"DefWindowProcA", (FARPROC)DefWindowProcA, (FARPROC *)&pDefWindowProc, (FARPROC)extDefWindowProc},
|
{"DefWindowProcA", (FARPROC)DefWindowProcA, (FARPROC *)&pDefWindowProcA, (FARPROC)extDefWindowProcA},
|
||||||
|
{"DefWindowProcW", (FARPROC)DefWindowProcW, (FARPROC *)&pDefWindowProcW, (FARPROC)extDefWindowProcW},
|
||||||
{"CreateWindowExA", (FARPROC)CreateWindowExA, (FARPROC *)&pCreateWindowExA, (FARPROC)extCreateWindowExA},
|
{"CreateWindowExA", (FARPROC)CreateWindowExA, (FARPROC *)&pCreateWindowExA, (FARPROC)extCreateWindowExA},
|
||||||
{"CreateWindowExW", (FARPROC)CreateWindowExW, (FARPROC *)&pCreateWindowExW, (FARPROC)extCreateWindowExW},
|
{"CreateWindowExW", (FARPROC)CreateWindowExW, (FARPROC *)&pCreateWindowExW, (FARPROC)extCreateWindowExW},
|
||||||
{"RegisterClassExA", (FARPROC)RegisterClassExA, (FARPROC *)&pRegisterClassExA, (FARPROC)extRegisterClassExA},
|
{"RegisterClassExA", (FARPROC)RegisterClassExA, (FARPROC *)&pRegisterClassExA, (FARPROC)extRegisterClassExA},
|
||||||
@ -46,6 +47,7 @@ static HookEntry_Type Hooks[]={
|
|||||||
//{"GetForegroundWindow", (FARPROC)NULL, (FARPROC *)&pGetForegroundWindow, (FARPROC)extGetForegroundWindow},
|
//{"GetForegroundWindow", (FARPROC)NULL, (FARPROC *)&pGetForegroundWindow, (FARPROC)extGetForegroundWindow},
|
||||||
{"IsWindowVisible", (FARPROC)NULL, (FARPROC *)&pIsWindowVisible, (FARPROC)extIsWindowVisible},
|
{"IsWindowVisible", (FARPROC)NULL, (FARPROC *)&pIsWindowVisible, (FARPROC)extIsWindowVisible},
|
||||||
{"SystemParametersInfoA", (FARPROC)SystemParametersInfoA, (FARPROC *)&pSystemParametersInfoA, (FARPROC)extSystemParametersInfoA},
|
{"SystemParametersInfoA", (FARPROC)SystemParametersInfoA, (FARPROC *)&pSystemParametersInfoA, (FARPROC)extSystemParametersInfoA},
|
||||||
|
{"SystemParametersInfoW", (FARPROC)SystemParametersInfoW, (FARPROC *)&pSystemParametersInfoW, (FARPROC)extSystemParametersInfoW},
|
||||||
{0, NULL, 0, 0} // terminator
|
{0, NULL, 0, 0} // terminator
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -559,47 +561,48 @@ LONG WINAPI extSetWindowLong(HWND hwnd, int nIndex, LONG dwNewLong, SetWindowLon
|
|||||||
OutTraceDW("SetWindowLong: hwnd=%x, Index=%x(%s) Val=%x\n",
|
OutTraceDW("SetWindowLong: hwnd=%x, Index=%x(%s) Val=%x\n",
|
||||||
hwnd, nIndex, ExplainSetWindowIndex(nIndex), dwNewLong);
|
hwnd, nIndex, ExplainSetWindowIndex(nIndex), dwNewLong);
|
||||||
|
|
||||||
//if(!hwnd) hwnd=dxw.GethWnd();
|
if (dxw.Windowize){
|
||||||
|
if(dxw.dwFlags1 & LOCKWINSTYLE){
|
||||||
if (dxw.dwFlags1 & LOCKWINSTYLE){
|
if(nIndex==GWL_STYLE){
|
||||||
if(nIndex==GWL_STYLE){
|
OutTraceDW("SetWindowLong: Lock GWL_STYLE=%x\n", dwNewLong);
|
||||||
OutTraceDW("SetWindowLong: Lock GWL_STYLE=%x\n", dwNewLong);
|
//return 1;
|
||||||
//return 1;
|
return (*pGetWindowLongA)(hwnd, nIndex);
|
||||||
return (*pGetWindowLongA)(hwnd, nIndex);
|
}
|
||||||
}
|
if(nIndex==GWL_EXSTYLE){
|
||||||
if(nIndex==GWL_EXSTYLE){
|
OutTraceDW("SetWindowLong: Lock GWL_EXSTYLE=%x\n", dwNewLong);
|
||||||
OutTraceDW("SetWindowLong: Lock GWL_EXSTYLE=%x\n", dwNewLong);
|
//return 1;
|
||||||
//return 1;
|
return (*pGetWindowLongA)(hwnd, nIndex);
|
||||||
return (*pGetWindowLongA)(hwnd, nIndex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dxw.dwFlags1 & PREVENTMAXIMIZE){
|
|
||||||
if(nIndex==GWL_STYLE){
|
|
||||||
dwNewLong &= ~WS_MAXIMIZE;
|
|
||||||
if(dxw.IsDesktop(hwnd)){
|
|
||||||
OutTraceDW("SetWindowLong: GWL_STYLE %x suppress MAXIMIZE\n", dwNewLong);
|
|
||||||
dwNewLong |= WS_OVERLAPPEDWINDOW;
|
|
||||||
dwNewLong &= ~(WS_DLGFRAME|WS_MAXIMIZE|WS_VSCROLL|WS_HSCROLL|WS_CLIPSIBLINGS);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// v2.02.32: disable topmost for main window only
|
|
||||||
if(dxw.IsDesktop(hwnd) && (nIndex==GWL_EXSTYLE)){
|
|
||||||
OutTraceDW("SetWindowLong: GWL_EXSTYLE %x suppress TOPMOST\n", dwNewLong);
|
|
||||||
dwNewLong = dwNewLong & ~(WS_EX_TOPMOST);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dxw.dwFlags1 & FIXWINFRAME){
|
if (dxw.dwFlags1 & PREVENTMAXIMIZE){
|
||||||
//if((nIndex==GWL_STYLE) && !(dwNewLong & WS_CHILD)){
|
if(nIndex==GWL_STYLE){
|
||||||
if((nIndex==GWL_STYLE) && !(dwNewLong & WS_CHILD) && dxw.IsDesktop(hwnd)){
|
dwNewLong &= ~WS_MAXIMIZE;
|
||||||
OutTraceDW("SetWindowLong: GWL_STYLE %x force OVERLAPPEDWINDOW\n", dwNewLong);
|
if(dxw.IsDesktop(hwnd)){
|
||||||
dwNewLong |= WS_OVERLAPPEDWINDOW;
|
OutTraceDW("SetWindowLong: GWL_STYLE %x suppress MAXIMIZE\n", dwNewLong);
|
||||||
dwNewLong &= ~WS_CLIPSIBLINGS;
|
dwNewLong |= WS_OVERLAPPEDWINDOW;
|
||||||
|
dwNewLong &= ~(WS_DLGFRAME|WS_MAXIMIZE|WS_VSCROLL|WS_HSCROLL|WS_CLIPSIBLINGS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// v2.02.32: disable topmost for main window only
|
||||||
|
if(dxw.IsDesktop(hwnd) && (nIndex==GWL_EXSTYLE)){
|
||||||
|
OutTraceDW("SetWindowLong: GWL_EXSTYLE %x suppress TOPMOST\n", dwNewLong);
|
||||||
|
dwNewLong = dwNewLong & ~(WS_EX_TOPMOST);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dxw.dwFlags1 & FIXWINFRAME){
|
||||||
|
//if((nIndex==GWL_STYLE) && !(dwNewLong & WS_CHILD)){
|
||||||
|
if((nIndex==GWL_STYLE) && !(dwNewLong & WS_CHILD) && dxw.IsDesktop(hwnd)){
|
||||||
|
OutTraceDW("SetWindowLong: GWL_STYLE %x force OVERLAPPEDWINDOW\n", dwNewLong);
|
||||||
|
dwNewLong |= WS_OVERLAPPEDWINDOW;
|
||||||
|
dwNewLong &= ~WS_CLIPSIBLINGS;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((nIndex==GWL_WNDPROC) && dxw.IsFullScreen()){ // v2.02.51 - see A10 Cuba....
|
if ((nIndex==GWL_WNDPROC) && dxw.IsFullScreen()){ // v2.02.51 - see A10 Cuba....
|
||||||
|
//if (nIndex==GWL_WNDPROC){
|
||||||
WNDPROC lres;
|
WNDPROC lres;
|
||||||
WNDPROC OldProc;
|
WNDPROC OldProc;
|
||||||
// GPL fix
|
// GPL fix
|
||||||
@ -800,6 +803,22 @@ BOOL WINAPI extGetCursorPos(LPPOINT lppoint)
|
|||||||
*lppoint=dxw.ScreenToClient(*lppoint);
|
*lppoint=dxw.ScreenToClient(*lppoint);
|
||||||
*lppoint=dxw.FixCursorPos(*lppoint);
|
*lppoint=dxw.FixCursorPos(*lppoint);
|
||||||
|
|
||||||
|
if(dxw.dwFlags4 & FRAMECOMPENSATION){
|
||||||
|
static int dx, dy, todo=TRUE;
|
||||||
|
if (todo){
|
||||||
|
RECT wrect;
|
||||||
|
POINT upleft={0, 0};
|
||||||
|
todo=FALSE;
|
||||||
|
(*pGetWindowRect)(dxw.GethWnd(), &wrect);
|
||||||
|
(*pClientToScreen)(dxw.GethWnd(), &upleft);
|
||||||
|
dx=upleft.x - wrect.left;
|
||||||
|
dy=upleft.y - wrect.top;
|
||||||
|
OutTraceC("GetCursorPos: frame compensation=(%d,%d)\n", dx, dy);
|
||||||
|
}
|
||||||
|
lppoint->x += dx;
|
||||||
|
lppoint->y += dy;
|
||||||
|
}
|
||||||
|
|
||||||
GetHookInfo()->CursorX=(short)lppoint->x;
|
GetHookInfo()->CursorX=(short)lppoint->x;
|
||||||
GetHookInfo()->CursorY=(short)lppoint->y;
|
GetHookInfo()->CursorY=(short)lppoint->y;
|
||||||
OutTraceC("GetCursorPos: FIXED pos=(%d,%d)->(%d,%d)\n", prev.x, prev.y, lppoint->x, lppoint->y);
|
OutTraceC("GetCursorPos: FIXED pos=(%d,%d)->(%d,%d)\n", prev.x, prev.y, lppoint->x, lppoint->y);
|
||||||
@ -1118,6 +1137,33 @@ static HWND WINAPI extCreateWindowCommon(
|
|||||||
WNDPROC pWindowProc;
|
WNDPROC pWindowProc;
|
||||||
BOOL isValidHandle=TRUE;
|
BOOL isValidHandle=TRUE;
|
||||||
|
|
||||||
|
if(!dxw.Windowize){
|
||||||
|
if(WideChar)
|
||||||
|
hwnd= (*pCreateWindowExW)(dwExStyle, (LPCWSTR)lpClassName, (LPCWSTR)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
|
||||||
|
else
|
||||||
|
hwnd= (*pCreateWindowExA)(dwExStyle, (LPCSTR)lpClassName, (LPCSTR)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
|
||||||
|
if ((dwStyle & WS_CHILD) && (dxw.dwFlags1 & HOOKCHILDWIN)){
|
||||||
|
// child window inherit the father's windproc, so if it's redirected to
|
||||||
|
// a hooker (either extWindowProc or extChildWindowProc) you have to retrieve
|
||||||
|
// the correct value (WhndGetWindowProc) before saving it (WhndStackPush).
|
||||||
|
long res;
|
||||||
|
pWindowProc = (WNDPROC)(*pGetWindowLongA)(hwnd, GWL_WNDPROC);
|
||||||
|
if((pWindowProc == extWindowProc) ||
|
||||||
|
(pWindowProc == extChildWindowProc) ||
|
||||||
|
(pWindowProc == extDialogWindowProc)){ // avoid recursions
|
||||||
|
HWND Father;
|
||||||
|
Father=GetParent(hwnd);
|
||||||
|
pWindowProc=WhndGetWindowProc(Father);
|
||||||
|
}
|
||||||
|
OutTraceDW("Hooking CHILD hwnd=%x father WindowProc %x->%x\n", hwnd, pWindowProc, extChildWindowProc);
|
||||||
|
res=(*pSetWindowLongA)(hwnd, GWL_WNDPROC, (LONG)extChildWindowProc);
|
||||||
|
if(!res) OutTraceE("%s: SetWindowLong ERROR %x\n", ApiName, GetLastError());
|
||||||
|
WhndStackPush(hwnd, pWindowProc);
|
||||||
|
}
|
||||||
|
OutTraceDW("%s: ret=%x\n", ApiName, hwnd);
|
||||||
|
return hwnd;
|
||||||
|
}
|
||||||
|
|
||||||
// no maximized windows in any case
|
// no maximized windows in any case
|
||||||
if (dxw.dwFlags1 & PREVENTMAXIMIZE){
|
if (dxw.dwFlags1 & PREVENTMAXIMIZE){
|
||||||
OutTraceDW("%s: handling PREVENTMAXIMIZE mode\n", ApiName);
|
OutTraceDW("%s: handling PREVENTMAXIMIZE mode\n", ApiName);
|
||||||
@ -1380,7 +1426,7 @@ LRESULT WINAPI extCallWindowProc(WNDPROC lpPrevWndFunc, HWND hwnd, UINT Msg, WPA
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
LRESULT WINAPI extDefWindowProc(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
|
LRESULT WINAPI extDefWindowProcA(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
// v2.02.30: fix (Imperialism II): apply to main window only !!!
|
// v2.02.30: fix (Imperialism II): apply to main window only !!!
|
||||||
HRESULT res;
|
HRESULT res;
|
||||||
@ -1389,7 +1435,21 @@ LRESULT WINAPI extDefWindowProc(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lPara
|
|||||||
if(hwnd == dxw.GethWnd()) res=FixWindowProc("DefWindowProc", hwnd, Msg, wParam, &lParam);
|
if(hwnd == dxw.GethWnd()) res=FixWindowProc("DefWindowProc", hwnd, Msg, wParam, &lParam);
|
||||||
|
|
||||||
if (res==(HRESULT)-1)
|
if (res==(HRESULT)-1)
|
||||||
return (*pDefWindowProc)(hwnd, Msg, wParam, lParam);
|
return (*pDefWindowProcA)(hwnd, Msg, wParam, lParam);
|
||||||
|
else
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
LRESULT WINAPI extDefWindowProcW(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
|
||||||
|
{
|
||||||
|
// v2.02.30: fix (Imperialism II): apply to main window only !!!
|
||||||
|
HRESULT res;
|
||||||
|
|
||||||
|
res = -1;
|
||||||
|
if(hwnd == dxw.GethWnd()) res=FixWindowProc("DefWindowProc", hwnd, Msg, wParam, &lParam);
|
||||||
|
|
||||||
|
if (res==(HRESULT)-1)
|
||||||
|
return (*pDefWindowProcW)(hwnd, Msg, wParam, lParam);
|
||||||
else
|
else
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
@ -1582,7 +1642,10 @@ LONG WINAPI extChangeDisplaySettingsA(DEVMODEA *lpDevMode, DWORD dwflags)
|
|||||||
OutTrace("\n");
|
OutTrace("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
return MyChangeDisplaySettings("ChangeDisplaySettingsA", FALSE, lpDevMode, dwflags);
|
if(dxw.Windowize)
|
||||||
|
return MyChangeDisplaySettings("ChangeDisplaySettingsA", FALSE, lpDevMode, dwflags);
|
||||||
|
else
|
||||||
|
return (*pChangeDisplaySettingsA)(lpDevMode, dwflags);
|
||||||
}
|
}
|
||||||
|
|
||||||
LONG WINAPI extChangeDisplaySettingsW(DEVMODEW *lpDevMode, DWORD dwflags)
|
LONG WINAPI extChangeDisplaySettingsW(DEVMODEW *lpDevMode, DWORD dwflags)
|
||||||
@ -1595,7 +1658,10 @@ LONG WINAPI extChangeDisplaySettingsW(DEVMODEW *lpDevMode, DWORD dwflags)
|
|||||||
OutTrace("\n");
|
OutTrace("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
return MyChangeDisplaySettings("ChangeDisplaySettingsW", TRUE, lpDevMode, dwflags);
|
if(dxw.Windowize)
|
||||||
|
return MyChangeDisplaySettings("ChangeDisplaySettingsW", TRUE, lpDevMode, dwflags);
|
||||||
|
else
|
||||||
|
return (*pChangeDisplaySettingsW)(lpDevMode, dwflags);
|
||||||
}
|
}
|
||||||
|
|
||||||
LONG WINAPI extChangeDisplaySettingsExA(LPCTSTR lpszDeviceName, DEVMODEA *lpDevMode, HWND hwnd, DWORD dwflags, LPVOID lParam)
|
LONG WINAPI extChangeDisplaySettingsExA(LPCTSTR lpszDeviceName, DEVMODEA *lpDevMode, HWND hwnd, DWORD dwflags, LPVOID lParam)
|
||||||
@ -1608,7 +1674,10 @@ LONG WINAPI extChangeDisplaySettingsExA(LPCTSTR lpszDeviceName, DEVMODEA *lpDevM
|
|||||||
OutTrace("\n");
|
OutTrace("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
return MyChangeDisplaySettings("ChangeDisplaySettingsExA", FALSE, lpDevMode, dwflags);
|
if(dxw.Windowize)
|
||||||
|
return MyChangeDisplaySettings("ChangeDisplaySettingsExA", FALSE, lpDevMode, dwflags);
|
||||||
|
else
|
||||||
|
return (*pChangeDisplaySettingsExA)(lpszDeviceName, lpDevMode, hwnd, dwflags, lParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
LONG WINAPI extChangeDisplaySettingsExW(LPCTSTR lpszDeviceName, DEVMODEW *lpDevMode, HWND hwnd, DWORD dwflags, LPVOID lParam)
|
LONG WINAPI extChangeDisplaySettingsExW(LPCTSTR lpszDeviceName, DEVMODEW *lpDevMode, HWND hwnd, DWORD dwflags, LPVOID lParam)
|
||||||
@ -1621,7 +1690,10 @@ LONG WINAPI extChangeDisplaySettingsExW(LPCTSTR lpszDeviceName, DEVMODEW *lpDevM
|
|||||||
OutTrace("\n");
|
OutTrace("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
return MyChangeDisplaySettings("ChangeDisplaySettingsExW", TRUE, lpDevMode, dwflags);
|
if(dxw.Windowize)
|
||||||
|
return MyChangeDisplaySettings("ChangeDisplaySettingsExW", TRUE, lpDevMode, dwflags);
|
||||||
|
else
|
||||||
|
return (*pChangeDisplaySettingsExW)(lpszDeviceName, lpDevMode, hwnd, dwflags, lParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
HDC WINAPI extGDIGetDC(HWND hwnd)
|
HDC WINAPI extGDIGetDC(HWND hwnd)
|
||||||
@ -1663,6 +1735,7 @@ HDC WINAPI extEMUGetDC(HWND hwnd)
|
|||||||
HWND lochwnd;
|
HWND lochwnd;
|
||||||
|
|
||||||
OutTraceDW("GDI.GetDC: hwnd=%x\n", hwnd);
|
OutTraceDW("GDI.GetDC: hwnd=%x\n", hwnd);
|
||||||
|
|
||||||
lochwnd=hwnd;
|
lochwnd=hwnd;
|
||||||
if (dxw.IsRealDesktop(hwnd)) {
|
if (dxw.IsRealDesktop(hwnd)) {
|
||||||
OutTraceDW("GDI.GetDC: desktop remapping hwnd=%x->%x\n", hwnd, dxw.GethWnd());
|
OutTraceDW("GDI.GetDC: desktop remapping hwnd=%x->%x\n", hwnd, dxw.GethWnd());
|
||||||
@ -1927,8 +2000,9 @@ HDC WINAPI extDDBeginPaint(HWND hwnd, LPPAINTSTRUCT lpPaint)
|
|||||||
LPDIRECTDRAWSURFACE lpDDS;
|
LPDIRECTDRAWSURFACE lpDDS;
|
||||||
DDSURFACEDESC ddsd;
|
DDSURFACEDESC ddsd;
|
||||||
res=extDirectDrawCreate(0, &lpDD, NULL);
|
res=extDirectDrawCreate(0, &lpDD, NULL);
|
||||||
//lpDD->SetCooperativeLevel(dxw.GethWnd(), DDSCL_FULLSCREEN | DDSCL_EXCLUSIVE);
|
//res=extDirectDrawCreate((GUID *)&IID_IDirectDraw, &lpDD, NULL);
|
||||||
lpDD->SetCooperativeLevel(dxw.GethWnd(), DDSCL_NORMAL);
|
lpDD->SetCooperativeLevel(dxw.GethWnd(), DDSCL_FULLSCREEN | DDSCL_EXCLUSIVE);
|
||||||
|
//lpDD->SetCooperativeLevel(dxw.GethWnd(), DDSCL_NORMAL);
|
||||||
memset((void *)&ddsd, 0, sizeof(DDSURFACEDESC));
|
memset((void *)&ddsd, 0, sizeof(DDSURFACEDESC));
|
||||||
ddsd.dwSize = sizeof(DDSURFACEDESC);
|
ddsd.dwSize = sizeof(DDSURFACEDESC);
|
||||||
ddsd.dwFlags = DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH;
|
ddsd.dwFlags = DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH;
|
||||||
@ -2031,9 +2105,12 @@ HWND WINAPI extCreateDialogIndirectParam(HINSTANCE hInstance, LPCDLGTEMPLATE lpT
|
|||||||
if(dxw.IsFullScreen() && hWndParent==NULL) hWndParent=dxw.GethWnd();
|
if(dxw.IsFullScreen() && hWndParent==NULL) hWndParent=dxw.GethWnd();
|
||||||
RetHWND=(*pCreateDialogIndirectParam)(hInstance, lpTemplate, hWndParent, lpDialogFunc, lParamInit);
|
RetHWND=(*pCreateDialogIndirectParam)(hInstance, lpTemplate, hWndParent, lpDialogFunc, lParamInit);
|
||||||
|
|
||||||
WhndStackPush(RetHWND, (WNDPROC)lpDialogFunc);
|
// v2.02.73: redirect lpDialogFunc only when it is nor NULL
|
||||||
if(!(*pSetWindowLongA)(RetHWND, DWL_DLGPROC, (LONG)extDialogWindowProc))
|
if(lpDialogFunc) {
|
||||||
OutTraceE("SetWindowLong: ERROR err=%d at %d\n", GetLastError(), __LINE__);
|
WhndStackPush(RetHWND, (WNDPROC)lpDialogFunc);
|
||||||
|
if(!(*pSetWindowLongA)(RetHWND, DWL_DLGPROC, (LONG)extDialogWindowProc))
|
||||||
|
OutTraceE("SetWindowLong: ERROR err=%d at %d\n", GetLastError(), __LINE__);
|
||||||
|
}
|
||||||
|
|
||||||
OutTraceDW("CreateDialogIndirectParam: hwnd=%x\n", RetHWND);
|
OutTraceDW("CreateDialogIndirectParam: hwnd=%x\n", RetHWND);
|
||||||
isWithinDialog=FALSE;
|
isWithinDialog=FALSE;
|
||||||
@ -2050,9 +2127,12 @@ HWND WINAPI extCreateDialogParam(HINSTANCE hInstance, LPCTSTR lpTemplateName, HW
|
|||||||
if(hWndParent==NULL) hWndParent=dxw.GethWnd();
|
if(hWndParent==NULL) hWndParent=dxw.GethWnd();
|
||||||
RetHWND=(*pCreateDialogParam)(hInstance, lpTemplateName, hWndParent, lpDialogFunc, lParamInit);
|
RetHWND=(*pCreateDialogParam)(hInstance, lpTemplateName, hWndParent, lpDialogFunc, lParamInit);
|
||||||
|
|
||||||
WhndStackPush(RetHWND, (WNDPROC)lpDialogFunc);
|
// v2.02.73: redirect lpDialogFunc only when it is nor NULL: fix for "LEGO Stunt Rally"
|
||||||
if(!(*pSetWindowLongA)(RetHWND, DWL_DLGPROC, (LONG)extDialogWindowProc))
|
if(lpDialogFunc) {
|
||||||
OutTraceE("SetWindowLong: ERROR err=%d at %d\n", GetLastError(), __LINE__);
|
WhndStackPush(RetHWND, (WNDPROC)lpDialogFunc);
|
||||||
|
if(!(*pSetWindowLongA)(RetHWND, DWL_DLGPROC, (LONG)extDialogWindowProc))
|
||||||
|
OutTraceE("SetWindowLong: ERROR err=%d at %d\n", GetLastError(), __LINE__);
|
||||||
|
}
|
||||||
|
|
||||||
OutTraceDW("CreateDialogParam: hwnd=%x\n", RetHWND);
|
OutTraceDW("CreateDialogParam: hwnd=%x\n", RetHWND);
|
||||||
isWithinDialog=FALSE;
|
isWithinDialog=FALSE;
|
||||||
@ -2066,57 +2146,59 @@ BOOL WINAPI extMoveWindow(HWND hwnd, int X, int Y, int nWidth, int nHeight, BOOL
|
|||||||
OutTraceDW("MoveWindow: hwnd=%x xy=(%d,%d) size=(%d,%d) repaint=%x indialog=%x fullscreen=%x\n",
|
OutTraceDW("MoveWindow: hwnd=%x xy=(%d,%d) size=(%d,%d) repaint=%x indialog=%x fullscreen=%x\n",
|
||||||
hwnd, X, Y, nWidth, nHeight, bRepaint, isWithinDialog, dxw.IsFullScreen());
|
hwnd, X, Y, nWidth, nHeight, bRepaint, isWithinDialog, dxw.IsFullScreen());
|
||||||
|
|
||||||
if(dxw.IsDesktop(hwnd)){
|
if(dxw.Windowize){
|
||||||
// v2.1.93: happens in "Emergency Fighters for Life" ...
|
if(dxw.IsDesktop(hwnd)){
|
||||||
// what is the meaning of this? is it related to video stretching?
|
// v2.1.93: happens in "Emergency Fighters for Life" ...
|
||||||
OutTraceDW("MoveWindow: prevent moving desktop win\n");
|
// what is the meaning of this? is it related to video stretching?
|
||||||
return TRUE;
|
OutTraceDW("MoveWindow: prevent moving desktop win\n");
|
||||||
}
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
if((hwnd==dxw.GethWnd()) || (hwnd==dxw.hParentWnd)){
|
if((hwnd==dxw.GethWnd()) || (hwnd==dxw.hParentWnd)){
|
||||||
OutTraceDW("MoveWindow: prevent moving main win\n");
|
OutTraceDW("MoveWindow: prevent moving main win\n");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dxw.IsFullScreen()){
|
if (dxw.IsFullScreen()){
|
||||||
POINT upleft={0,0};
|
POINT upleft={0,0};
|
||||||
RECT client;
|
RECT client;
|
||||||
BOOL isChild;
|
BOOL isChild;
|
||||||
(*pClientToScreen)(dxw.GethWnd(),&upleft);
|
|
||||||
(*pGetClientRect)(dxw.GethWnd(),&client);
|
|
||||||
if ((*pGetWindowLongA)(hwnd, GWL_STYLE) & WS_CHILD){
|
|
||||||
isChild=TRUE;
|
|
||||||
// child coordinate adjustement
|
|
||||||
X = (X * client.right) / dxw.GetScreenWidth();
|
|
||||||
Y = (Y * client.bottom) / dxw.GetScreenHeight();
|
|
||||||
nWidth = (nWidth * client.right) / dxw.GetScreenWidth();
|
|
||||||
nHeight = (nHeight * client.bottom) / dxw.GetScreenHeight();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
isChild=FALSE;
|
|
||||||
// regular win coordinate adjustement
|
|
||||||
X = upleft.x + (X * client.right) / dxw.GetScreenWidth();
|
|
||||||
Y = upleft.y + (Y * client.bottom) / dxw.GetScreenHeight();
|
|
||||||
nWidth = (nWidth * client.right) / dxw.GetScreenWidth();
|
|
||||||
nHeight = (nHeight * client.bottom) / dxw.GetScreenHeight();
|
|
||||||
}
|
|
||||||
OutTraceDW("MoveWindow: DEBUG client=(%d,%d) screen=(%d,%d)\n",
|
|
||||||
client.right, client.bottom, dxw.GetScreenWidth(), dxw.GetScreenHeight());
|
|
||||||
OutTraceDW("MoveWindow: hwnd=%x child=%x relocated to xy=(%d,%d) size=(%d,%d)\n",
|
|
||||||
hwnd, isChild, X, Y, nWidth, nHeight);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
if((X==0)&&(Y==0)&&(nWidth==dxw.GetScreenWidth())&&(nHeight==dxw.GetScreenHeight())){
|
|
||||||
// evidently, this was supposed to be a fullscreen window....
|
|
||||||
RECT screen;
|
|
||||||
POINT upleft = {0,0};
|
|
||||||
(*pGetClientRect)(dxw.GethWnd(),&screen);
|
|
||||||
(*pClientToScreen)(dxw.GethWnd(),&upleft);
|
(*pClientToScreen)(dxw.GethWnd(),&upleft);
|
||||||
X=upleft.x;
|
(*pGetClientRect)(dxw.GethWnd(),&client);
|
||||||
Y=upleft.y;
|
if ((*pGetWindowLongA)(hwnd, GWL_STYLE) & WS_CHILD){
|
||||||
nWidth=screen.right;
|
isChild=TRUE;
|
||||||
nHeight=screen.bottom;
|
// child coordinate adjustement
|
||||||
OutTraceDW("MoveWindow: fixed BIG win pos=(%d,%d) size=(%d,%d)\n", X, Y, nWidth, nHeight);
|
X = (X * client.right) / dxw.GetScreenWidth();
|
||||||
|
Y = (Y * client.bottom) / dxw.GetScreenHeight();
|
||||||
|
nWidth = (nWidth * client.right) / dxw.GetScreenWidth();
|
||||||
|
nHeight = (nHeight * client.bottom) / dxw.GetScreenHeight();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
isChild=FALSE;
|
||||||
|
// regular win coordinate adjustement
|
||||||
|
X = upleft.x + (X * client.right) / dxw.GetScreenWidth();
|
||||||
|
Y = upleft.y + (Y * client.bottom) / dxw.GetScreenHeight();
|
||||||
|
nWidth = (nWidth * client.right) / dxw.GetScreenWidth();
|
||||||
|
nHeight = (nHeight * client.bottom) / dxw.GetScreenHeight();
|
||||||
|
}
|
||||||
|
OutTraceDW("MoveWindow: DEBUG client=(%d,%d) screen=(%d,%d)\n",
|
||||||
|
client.right, client.bottom, dxw.GetScreenWidth(), dxw.GetScreenHeight());
|
||||||
|
OutTraceDW("MoveWindow: hwnd=%x child=%x relocated to xy=(%d,%d) size=(%d,%d)\n",
|
||||||
|
hwnd, isChild, X, Y, nWidth, nHeight);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
if((X==0)&&(Y==0)&&(nWidth==dxw.GetScreenWidth())&&(nHeight==dxw.GetScreenHeight())){
|
||||||
|
// evidently, this was supposed to be a fullscreen window....
|
||||||
|
RECT screen;
|
||||||
|
POINT upleft = {0,0};
|
||||||
|
(*pGetClientRect)(dxw.GethWnd(),&screen);
|
||||||
|
(*pClientToScreen)(dxw.GethWnd(),&upleft);
|
||||||
|
X=upleft.x;
|
||||||
|
Y=upleft.y;
|
||||||
|
nWidth=screen.right;
|
||||||
|
nHeight=screen.bottom;
|
||||||
|
OutTraceDW("MoveWindow: fixed BIG win pos=(%d,%d) size=(%d,%d)\n", X, Y, nWidth, nHeight);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2268,7 +2350,7 @@ BOOL WINAPI extUpdateWindow(HWND hwnd)
|
|||||||
BOOL ret;
|
BOOL ret;
|
||||||
OutTraceDW("UpdateWindow: hwnd=%x\n", hwnd);
|
OutTraceDW("UpdateWindow: hwnd=%x\n", hwnd);
|
||||||
|
|
||||||
if(dxw.IsRealDesktop(hwnd)){
|
if(dxw.Windowize && dxw.IsRealDesktop(hwnd)){
|
||||||
OutTraceDW("UpdateWindow: remapping hwnd=%x->%x\n", hwnd, dxw.GethWnd());
|
OutTraceDW("UpdateWindow: remapping hwnd=%x->%x\n", hwnd, dxw.GethWnd());
|
||||||
hwnd=dxw.GethWnd();
|
hwnd=dxw.GethWnd();
|
||||||
}
|
}
|
||||||
@ -2391,6 +2473,22 @@ BOOL WINAPI extSystemParametersInfoA(UINT uiAction, UINT uiParam, PVOID pvParam,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOL WINAPI extSystemParametersInfoW(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni)
|
||||||
|
{
|
||||||
|
BOOL ret;
|
||||||
|
OutTraceDW("SystemParametersInfo: Action=%x Param=%x WinIni=%x\n", uiAction, uiParam, fWinIni);
|
||||||
|
ret=(*pSystemParametersInfoW)(uiAction, uiParam, pvParam, fWinIni);
|
||||||
|
if(uiAction==SPI_GETWORKAREA){
|
||||||
|
LPRECT cli = (LPRECT)pvParam;
|
||||||
|
cli->top = 0;
|
||||||
|
cli->left = 0;
|
||||||
|
cli->bottom = dxw.GetScreenHeight();
|
||||||
|
cli->right = dxw.GetScreenWidth();
|
||||||
|
OutTraceDW("SystemParametersInfo: resized client workarea rect=(%d,%d)-(%d,%d)\n", cli->left, cli->top, cli->right, cli->bottom);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
#undef OutTraceDW
|
#undef OutTraceDW
|
||||||
#define OutTraceDW OutTrace
|
#define OutTraceDW OutTrace
|
||||||
|
|
||||||
|
@ -213,6 +213,8 @@
|
|||||||
#define IDC_DISABLEFOGGING 1175
|
#define IDC_DISABLEFOGGING 1175
|
||||||
#define IDC_RELEASEMOUSE 1176
|
#define IDC_RELEASEMOUSE 1176
|
||||||
#define IDC_HOOKGLIDE 1177
|
#define IDC_HOOKGLIDE 1177
|
||||||
|
#define IDC_RELEASEMOUSE2 1177
|
||||||
|
#define IDC_FRAMECOMPENSATION 1177
|
||||||
#define ID_MODIFY 32771
|
#define ID_MODIFY 32771
|
||||||
#define ID_DELETE 32772
|
#define ID_DELETE 32772
|
||||||
#define ID_ADD 32773
|
#define ID_ADD 32773
|
||||||
|
@ -38,6 +38,7 @@ void CTabInput::DoDataExchange(CDataExchange* pDX)
|
|||||||
DDX_Check(pDX, IDC_FIXNCHITTEST, cTarget->m_FixNCHITTEST);
|
DDX_Check(pDX, IDC_FIXNCHITTEST, cTarget->m_FixNCHITTEST);
|
||||||
DDX_Check(pDX, IDC_SLOW, cTarget->m_SlowDown);
|
DDX_Check(pDX, IDC_SLOW, cTarget->m_SlowDown);
|
||||||
DDX_Check(pDX, IDC_RELEASEMOUSE, cTarget->m_ReleaseMouse);
|
DDX_Check(pDX, IDC_RELEASEMOUSE, cTarget->m_ReleaseMouse);
|
||||||
|
DDX_Check(pDX, IDC_FRAMECOMPENSATION, cTarget->m_FrameCompensation);
|
||||||
// DirectInput
|
// DirectInput
|
||||||
DDX_Check(pDX, IDC_HOOKDI, cTarget->m_HookDI);
|
DDX_Check(pDX, IDC_HOOKDI, cTarget->m_HookDI);
|
||||||
DDX_Text(pDX, IDC_INITX, cTarget->m_InitX);
|
DDX_Text(pDX, IDC_INITX, cTarget->m_InitX);
|
||||||
|
@ -127,6 +127,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
|
|||||||
m_StretchTimers = FALSE;
|
m_StretchTimers = FALSE;
|
||||||
m_FineTiming = FALSE;
|
m_FineTiming = FALSE;
|
||||||
m_ReleaseMouse = FALSE;
|
m_ReleaseMouse = FALSE;
|
||||||
|
m_FrameCompensation = FALSE;
|
||||||
m_InterceptRDTSC = FALSE;
|
m_InterceptRDTSC = FALSE;
|
||||||
m_HookOpenGL = FALSE;
|
m_HookOpenGL = FALSE;
|
||||||
m_ForceHookOpenGL = FALSE;
|
m_ForceHookOpenGL = FALSE;
|
||||||
|
@ -110,6 +110,7 @@ public:
|
|||||||
BOOL m_StretchTimers;
|
BOOL m_StretchTimers;
|
||||||
BOOL m_FineTiming;
|
BOOL m_FineTiming;
|
||||||
BOOL m_ReleaseMouse;
|
BOOL m_ReleaseMouse;
|
||||||
|
BOOL m_FrameCompensation;
|
||||||
BOOL m_InterceptRDTSC;
|
BOOL m_InterceptRDTSC;
|
||||||
BOOL m_HookOpenGL;
|
BOOL m_HookOpenGL;
|
||||||
BOOL m_ForceHookOpenGL;
|
BOOL m_ForceHookOpenGL;
|
||||||
|
Binary file not shown.
@ -359,15 +359,15 @@ BEGIN
|
|||||||
CONTROL "Correct mouse position",IDC_MODIFYMOUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,38,107,12
|
CONTROL "Correct mouse position",IDC_MODIFYMOUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,38,107,12
|
||||||
CONTROL "Hide Cursor",IDC_HIDEHWCURSOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,15,100,10
|
CONTROL "Hide Cursor",IDC_HIDEHWCURSOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,15,100,10
|
||||||
CONTROL "Intercept GDI Cursor Clipping",IDC_ENABLECLIPPING,
|
CONTROL "Intercept GDI Cursor Clipping",IDC_ENABLECLIPPING,
|
||||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,85,109,10
|
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,97,109,10
|
||||||
GROUPBOX "Cursor handling",IDC_STATIC,7,3,129,148
|
GROUPBOX "Cursor handling",IDC_STATIC,7,3,129,162
|
||||||
CONTROL "Keep cursor within window",IDC_KEEPCURSORWITHIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,61,108,10
|
CONTROL "Keep cursor within window",IDC_KEEPCURSORWITHIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,73,108,10
|
||||||
CONTROL "Force cursor clipping",IDC_CLIPCURSOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,50,108,10
|
CONTROL "Force cursor clipping",IDC_CLIPCURSOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,62,108,10
|
||||||
CONTROL "Message processing",IDC_MESSAGEPROC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,96,103,10
|
CONTROL "Message processing",IDC_MESSAGEPROC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,108,103,10
|
||||||
CONTROL "Keep cursor fixed",IDC_KEEPCURSORFIXED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,73,107,10
|
CONTROL "Keep cursor fixed",IDC_KEEPCURSORFIXED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,85,107,10
|
||||||
CONTROL "fix WM_NCHITTEST",IDC_FIXNCHITTEST,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,107,103,10
|
CONTROL "fix WM_NCHITTEST",IDC_FIXNCHITTEST,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,119,103,10
|
||||||
CONTROL "Show Cursor",IDC_SHOWHWCURSOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,27,104,10
|
CONTROL "Show Cursor",IDC_SHOWHWCURSOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,27,104,10
|
||||||
CONTROL "Slow down mouse polling",IDC_SLOW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,118,103,12
|
CONTROL "Slow down mouse polling",IDC_SLOW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,130,103,12
|
||||||
LTEXT "Initial coord.",IDC_STATIC,148,33,46,9
|
LTEXT "Initial coord.",IDC_STATIC,148,33,46,9
|
||||||
LTEXT "X",IDC_STATIC,234,34,9,9
|
LTEXT "X",IDC_STATIC,234,34,9,9
|
||||||
LTEXT "Y",IDC_STATIC,261,34,9,9
|
LTEXT "Y",IDC_STATIC,261,34,9,9
|
||||||
@ -388,7 +388,8 @@ BEGIN
|
|||||||
CONTROL "Filter offending messages",IDC_FILTERMESSAGES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,150,96,114,10
|
CONTROL "Filter offending messages",IDC_FILTERMESSAGES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,150,96,114,10
|
||||||
CONTROL "Peek all messages in queue",IDC_PEEKALLMESSAGES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,150,108,114,10
|
CONTROL "Peek all messages in queue",IDC_PEEKALLMESSAGES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,150,108,114,10
|
||||||
GROUPBOX "Message handling",IDC_STATIC,142,79,151,72
|
GROUPBOX "Message handling",IDC_STATIC,142,79,151,72
|
||||||
CONTROL "Release mouse outside window",IDC_RELEASEMOUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,130,114,12
|
CONTROL "Release mouse outside window",IDC_RELEASEMOUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,142,114,12
|
||||||
|
CONTROL "Window frame compensation",IDC_FRAMECOMPENSATION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,50,114,12
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_TAB_TIMING DIALOGEX 0, 0, 300, 240
|
IDD_TAB_TIMING DIALOGEX 0, 0, 300, 240
|
||||||
|
Binary file not shown.
@ -241,6 +241,7 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
|
|||||||
if(dlg->m_StretchTimers) t->flags4 |= STRETCHTIMERS;
|
if(dlg->m_StretchTimers) t->flags4 |= STRETCHTIMERS;
|
||||||
if(dlg->m_FineTiming) t->flags4 |= FINETIMING;
|
if(dlg->m_FineTiming) t->flags4 |= FINETIMING;
|
||||||
if(dlg->m_ReleaseMouse) t->flags4 |= RELEASEMOUSE;
|
if(dlg->m_ReleaseMouse) t->flags4 |= RELEASEMOUSE;
|
||||||
|
if(dlg->m_FrameCompensation) t->flags4 |= FRAMECOMPENSATION;
|
||||||
if(dlg->m_InterceptRDTSC) t->flags4 |= INTERCEPTRDTSC;
|
if(dlg->m_InterceptRDTSC) t->flags4 |= INTERCEPTRDTSC;
|
||||||
if(dlg->m_HookOpenGL) t->flags2 |= HOOKOPENGL;
|
if(dlg->m_HookOpenGL) t->flags2 |= HOOKOPENGL;
|
||||||
if(dlg->m_ForceHookOpenGL) t->flags3 |= FORCEHOOKOPENGL;
|
if(dlg->m_ForceHookOpenGL) t->flags3 |= FORCEHOOKOPENGL;
|
||||||
@ -406,6 +407,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
|
|||||||
dlg->m_StretchTimers = t->flags4 & STRETCHTIMERS ? 1 : 0;
|
dlg->m_StretchTimers = t->flags4 & STRETCHTIMERS ? 1 : 0;
|
||||||
dlg->m_FineTiming = t->flags4 & FINETIMING ? 1 : 0;
|
dlg->m_FineTiming = t->flags4 & FINETIMING ? 1 : 0;
|
||||||
dlg->m_ReleaseMouse = t->flags4 & RELEASEMOUSE ? 1 : 0;
|
dlg->m_ReleaseMouse = t->flags4 & RELEASEMOUSE ? 1 : 0;
|
||||||
|
dlg->m_FrameCompensation = t->flags4 & FRAMECOMPENSATION ? 1 : 0;
|
||||||
dlg->m_InterceptRDTSC = t->flags4 & INTERCEPTRDTSC ? 1 : 0;
|
dlg->m_InterceptRDTSC = t->flags4 & INTERCEPTRDTSC ? 1 : 0;
|
||||||
dlg->m_HookOpenGL = t->flags2 & HOOKOPENGL ? 1 : 0;
|
dlg->m_HookOpenGL = t->flags2 & HOOKOPENGL ? 1 : 0;
|
||||||
dlg->m_ForceHookOpenGL = t->flags3 & FORCEHOOKOPENGL ? 1 : 0;
|
dlg->m_ForceHookOpenGL = t->flags3 & FORCEHOOKOPENGL ? 1 : 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user