1
0
mirror of https://github.com/DxWnd/DxWnd.reloaded synced 2024-12-30 09:25:35 +01:00

v2_04_09_src_fx1

Former-commit-id: 34ead633e5a81cb2e9ec4181e14a991f756bd540
This commit is contained in:
gho tik 2017-01-30 11:49:56 -05:00 committed by Refael ACkermann
parent a8a8f52868
commit 4b8141b136
37 changed files with 648 additions and 349 deletions

View File

@ -1 +0,0 @@
*.{dll,exe} filter=lfs diff=lfs merge=lfs -text

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:941f77bf133938a99ebdcbea0c35f2f33248ac7c1d4e7d5fe9d799ce470b433d
size 782336

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:941f77bf133938a99ebdcbea0c35f2f33248ac7c1d4e7d5fe9d799ce470b433d oid sha256:5fc4cf8ef5a8514260d213b7d89caebe950a9dcfc43e948b25bb835c57e2df28
size 782336 size 782848

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:743ed4e87aa9d02d8b85936799f99eb83bab948207f13d1a98497644ddd27b20 oid sha256:0478367b7c87124f807b20c7a3f5e3c6337815e9f8d63619ae023702f0efd817
size 673792 size 673792

View File

@ -0,0 +1,36 @@
[target]
title0=Dominant Species
path0=F:\Games\Dominant Species\DominantSpecies.exe
startfolder0=
launchpath0=
module0=
opengllib0=
notes0=
registry0=
ver0=0
monitorid0=-1
coord0=0
flag0=673185826
flagg0=1207959552
flagh0=20
flagi0=138412036
flagj0=4224
flagk0=65536
flagl0=0
flagm0=4194304
tflag0=0
dflag0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0
winver0=0
maxres0=0
swapeffect0=0
maxddinterface0=7
slowratio0=2
scanline0=0
initresw0=800
initresh0=600

View File

@ -0,0 +1,36 @@
[target]
title0=Hexen II (GDI)
path0=D:\Games\Hexen II - RIP\h2.exe
startfolder0=
launchpath0=
module0=
opengllib0=
notes0=
registry0=
ver0=0
monitorid0=-1
coord0=0
flag0=673185827
flagg0=1209401344
flagh0=65556
flagi0=138412036
flagj0=4224
flagk0=65536
flagl0=0
flagm0=0
tflag0=0
dflag0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0
winver0=0
maxres0=0
swapeffect0=0
maxddinterface0=7
slowratio0=2
scanline0=0
initresw0=800
initresh0=600

View File

@ -0,0 +1,36 @@
[target]
title0=Hexen II (OpenGl)
path0=D:\Games\Hexen II - RIP\glh2.exe
startfolder0=
launchpath0=
module0=
opengllib0=
notes0=
registry0=
ver0=0
monitorid0=-1
coord0=0
flag0=673185827
flagg0=1209401344
flagh0=65556
flagi0=138412036
flagj0=4224
flagk0=65536
flagl0=0
flagm0=0
tflag0=0
dflag0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0
winver0=0
maxres0=0
swapeffect0=0
maxddinterface0=7
slowratio0=2
scanline0=0
initresw0=800
initresh0=600

View File

@ -0,0 +1,36 @@
[target]
title0=Interstate 76 Nitro Pack
path0=F:\Games\Interstate 76 Nitro Pack\nitro.exe
startfolder0=
launchpath0=
module0=
opengllib0=
notes0=
registry0=
ver0=0
monitorid0=0
coord0=0
flag0=134217762
flagg0=2013265920
flagh0=20
flagi0=138412036
flagj0=4224
flagk0=65536
flagl0=0
flagm0=0
tflag0=0
dflag0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0
winver0=0
maxres0=-1
swapeffect0=0
maxddinterface0=7
slowratio0=1
scanline0=1
initresw0=0
initresh0=0

View File

@ -0,0 +1,36 @@
[target]
title0=Man TT Super Bike
path0=D:\Games\ManTT\MANXTT.EXE
startfolder0=
launchpath0=
module0=
opengllib0=
notes0=
registry0=
ver0=0
monitorid0=-1
coord0=2
flag0=673185827
flagg0=1241514008
flagh0=65556
flagi0=138444804
flagj0=1073747072
flagk0=327680
flagl0=25165824
flagm0=1024
tflag0=0
dflag0=0
posx0=150
posy0=150
sizx0=800
sizy0=600
maxfps0=0
initts0=0
winver0=0
maxres0=0
swapeffect0=0
maxddinterface0=7
slowratio0=2
scanline0=0
initresw0=640
initresh0=480

View File

@ -1,6 +1,6 @@
[target] [target]
title0=Man TT Super Bike title0=Man TT Super Bike
path0=F:\Games\ManTTSuperBike\MANXTT.EXE path0=D:\Games\ManTT\MANXTT.EXE
startfolder0= startfolder0=
launchpath0= launchpath0=
module0= module0=
@ -10,14 +10,14 @@ registry0=
ver0=0 ver0=0
monitorid0=-1 monitorid0=-1
coord0=0 coord0=0
flag0=673194022 flag0=673185827
flagg0=1207959552 flagg0=1241513984
flagh0=327700 flagh0=65556
flagi0=138412036 flagi0=138412036
flagj0=4224 flagj0=4224
flagk0=17104896 flagk0=327680
flagl0=276824576 flagl0=0
flagm0=0 flagm0=1024
tflag0=0 tflag0=0
dflag0=0 dflag0=0
posx0=50 posx0=50

View File

@ -6,7 +6,7 @@ opengllib0=
ver0=0 ver0=0
coord0=0 coord0=0
flag0=134217762 flag0=134217762
flagg0=1207959552 flagg0=1275068416
flagh0=20 flagh0=20
flagi0=4194308 flagi0=4194308
tflag0=0 tflag0=0
@ -26,7 +26,7 @@ launchpath0=
notes0= notes0=
registry0= registry0=
flagj0=0 flagj0=0
flagk0=65536 flagk0=98304
flagl0=0 flagl0=0
flagm0=0 flagm0=0
dflag0=0 dflag0=0
@ -34,3 +34,9 @@ winver0=0
maxres0=0 maxres0=0
swapeffect0=0 swapeffect0=0
maxddinterface0=7 maxddinterface0=7
startfolder0=
monitorid0=0
slowratio0=1
scanline0=1
initresw0=0
initresh0=0

View File

@ -0,0 +1,36 @@
[target]
title0=NASCAR 2000
path0=F:\Games\Nascar 2000\NASCAR 2000.exe
startfolder0=
launchpath0=
module0=
opengllib0=
notes0=
registry0=
ver0=0
monitorid0=-1
coord0=0
flag0=673202210
flagg0=1207959552
flagh0=20
flagi0=138412036
flagj0=4224
flagk0=65536
flagl0=0
flagm0=0
tflag0=0
dflag0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0
winver0=0
maxres0=0
swapeffect0=0
maxddinterface0=7
slowratio0=2
scanline0=0
initresw0=800
initresh0=600

View File

@ -0,0 +1,36 @@
[target]
title0=ShipWreckers demo
path0=F:\Games\ShipWreckers demo\SW.EXE
startfolder0=
launchpath0=
module0=
opengllib0=
notes0=
registry0=
ver0=0
monitorid0=-1
coord0=0
flag0=673185826
flagg0=1207959552
flagh0=20
flagi0=138412036
flagj0=4224
flagk0=65536
flagl0=1048576
flagm0=0
tflag0=0
dflag0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0
winver0=0
maxres0=0
swapeffect0=0
maxddinterface0=7
slowratio0=2
scanline0=0
initresw0=800
initresh0=600

View File

@ -0,0 +1,36 @@
[target]
title0=SuperBike 2000
path0=F:\Games\SBK2000\SBK2000.exe
startfolder0=
launchpath0=
module0=
opengllib0=
notes0=N.b.\nCD rom in\nHKEY_LOCAL_MACHINE/SOFTWARE/EA SPORTS/Superbike 2000/CD\nor \nHKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/EA SPORTS/Superbike 2000/CD
registry0=
ver0=0
monitorid0=-1
coord0=0
flag0=673202210
flagg0=1207959552
flagh0=20
flagi0=138412036
flagj0=4224
flagk0=65536
flagl0=524288
flagm0=1312
tflag0=0
dflag0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0
winver0=0
maxres0=0
swapeffect0=0
maxddinterface0=7
slowratio0=2
scanline0=0
initresw0=800
initresh0=600

View File

@ -0,0 +1,36 @@
[target]
title0=V-Rally 3
path0=F:\Games\V-Rally 3\Vrally3.exe
startfolder0=
launchpath0=
module0=
opengllib0=
notes0=
registry0=
ver0=0
monitorid0=-1
coord0=0
flag0=673185826
flagg0=1207959552
flagh0=65556
flagi0=138412036
flagj0=4224
flagk0=65536
flagl0=0
flagm0=0
tflag0=0
dflag0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0
winver0=0
maxres0=0
swapeffect0=0
maxddinterface0=7
slowratio0=2
scanline0=0
initresw0=800
initresh0=600

View File

@ -0,0 +1,36 @@
[target]
title0=Warcraft Adventures - Lord Of The Clans
path0=F:\Games\Warcraft Adventures - Lord Of The Clans\PlayWin.exe
startfolder0=
launchpath0=
module0=
opengllib0=
notes0=
registry0=
ver0=0
monitorid0=-1
coord0=0
flag0=673185826
flagg0=1207959552
flagh0=20
flagi0=134217732
flagj0=4224
flagk0=65536
flagl0=0
flagm0=0
tflag0=0
dflag0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0
winver0=0
maxres0=0
swapeffect0=0
maxddinterface0=7
slowratio0=2
scanline0=0
initresw0=800
initresh0=600

View File

@ -1,6 +1,6 @@
[target] [target]
title0=Warhammer - Shadow of the Horned Rat title0=Warhammer - Shadow of the Horned Rat
path0=D:\Games\Warhammer - Shadow of the Horned Rat\WHSHR.EXE path0=F:\Games\Warhammer - Shadow of the Horned Rat\WHSHR.EXE
startfolder0= startfolder0=
launchpath0= launchpath0=
module0=GAMEF.DLL module0=GAMEF.DLL

View File

@ -0,0 +1,36 @@
[target]
title0=Wrestling MPire Remix
path0=F:\Games\Wrestling MPire Remix (Career)\Wrestling MPire Remix (Fullscreen).exe
startfolder0=
launchpath0=
module0=
opengllib0=
notes0=
registry0=
ver0=0
monitorid0=-1
coord0=0
flag0=673185826
flagg0=1207959552
flagh0=65556
flagi0=138412036
flagj0=4224
flagk0=65536
flagl0=268435456
flagm0=0
tflag0=0
dflag0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0
winver0=0
maxres0=0
swapeffect0=0
maxddinterface0=7
slowratio0=2
scanline0=0
initresw0=800
initresh0=600

View File

@ -1,5 +1,41 @@
[window] [window]
posx=1235 posx=1165
posy=551 posy=618
sizx=320 sizx=320
sizy=200 sizy=200
[target]
title0=administrator
path0=administrator
startfolder0=
launchpath0=
module0=
opengllib0=
notes0=
registry0=
ver0=0
monitorid0=-1
coord0=0
flag0=673185826
flagg0=1207959552
flagh0=20
flagi0=134217732
flagj0=4224
flagk0=65536
flagl0=0
flagm0=0
tflag0=0
dflag0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0
winver0=0
maxres0=0
swapeffect0=0
maxddinterface0=7
slowratio0=2
scanline0=0
initresw0=800
initresh0=600

View File

@ -1,228 +1,2 @@
OnRun idx=6 prog="F:\RhemE\RhemE\RHEM.noshim.exe" unhooked=0 OnRun idx=28 prog="D:\Games\ManTT\MANXTT.EXE" unhooked=0
setwindowshook mode
OnRun idx=6 prog="F:\RhemE\RhemE\RHEM.noshim.exe" unhooked=0
setwindowshook mode
OnRun idx=6 prog="F:\RhemE\RhemE\RHEM.noshim.exe" unhooked=0
setwindowshook mode
OnRun idx=6 prog="F:\RhemE\RhemE\RHEM.noshim.exe" unhooked=0
setwindowshook mode
OnRun idx=6 prog="F:\RhemE\RhemE\RHEM.noshim.exe" unhooked=0
setwindowshook mode
OnRun idx=6 prog="F:\RhemE\RhemE\RHEM.noshim.exe" unhooked=0
setwindowshook mode
OnRun idx=7 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
setwindowshook mode
OnRun idx=7 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
setwindowshook mode
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
setwindowshook mode
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
setwindowshook mode
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
injectsuspended mode
InjectSuspended: exe="F:\RhemE\RhemE\RHEM1(scalable).exe.noshim" dir="F:\RhemE\RhemE"
Target handle=67c
NT Header offset=E8
AddressOfEntryPoint=3D84 ImageBase=20000000
Thread start address=20003d84
wait cycle 0 eip=20003d84
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
injectsuspended mode
InjectSuspended: exe="F:\RhemE\RhemE\RHEM1(scalable).exe.noshim" dir="F:\RhemE\RhemE"
Target handle=908
NT Header offset=E8
AddressOfEntryPoint=3D84 ImageBase=20000000
Thread start address=20003d84
wait cycle 0 eip=20003d84
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
debugger mode
create process: path="F:\RhemE\RhemE"
create process: base=0x20000000 path="F:\RhemE\RhemE\RHEM1(scalable).exe"
create thread: th=0xA18 base=0x2F1000 start=0x76C68500
load dll: base=0x77BD0000 path="C:\Windows\SysWOW64\ntdll.dll"
unload dll: base=0x540000
load dll: base=0x76C40000 path="C:\Windows\SysWOW64\kernel32.dll"
unload dll: base=0x76C40000
unload dll: base=0x540000
unload dll: base=0x6A0000
load dll: base=0x76C40000 path="C:\Windows\SysWOW64\kernel32.dll"
load dll: base=0x74830000 path="C:\Windows\SysWOW64\KernelBase.dll"
load dll: base=0x6E490000 path="C:\Windows\SysWOW64\apphelp.dll"
load dll: base=0x78E50000 path="C:\Windows\AppPatch\AcLayers.dll"
load dll: base=0x773E0000 path="C:\Windows\SysWOW64\msvcrt.dll"
load dll: base=0x74C00000 path="C:\Windows\SysWOW64\user32.dll"
load dll: base=0x774A0000 path="C:\Windows\SysWOW64\win32u.dll"
load dll: base=0x75600000 path="C:\Windows\SysWOW64\gdi32.dll"
load dll: base=0x75450000 path="C:\Windows\SysWOW64\gdi32full.dll"
load dll: base=0x75850000 path="C:\Windows\SysWOW64\shell32.dll"
load dll: base=0x75800000 path="C:\Windows\SysWOW64\cfgmgr32.dll"
load dll: base=0x76DD0000 path="C:\Windows\SysWOW64\windows.storage.dll"
load dll: base=0x749E0000 path="C:\Windows\SysWOW64\combase.dll"
load dll: base=0x75630000 path="C:\Windows\SysWOW64\ucrtbase.dll"
load dll: base=0x75300000 path="C:\Windows\SysWOW64\rpcrt4.dll"
load dll: base=0x74690000 path="C:\Windows\SysWOW64\sspicli.dll"
load dll: base=0x74680000 path="C:\Windows\SysWOW64\cryptbase.dll"
load dll: base=0x76D70000 path="C:\Windows\SysWOW64\bcryptprimitives.dll"
load dll: base=0x77980000 path="C:\Windows\SysWOW64\sechost.dll"
load dll: base=0x777F0000 path="C:\Windows\SysWOW64\powrprof.dll"
load dll: base=0x779D0000 path="C:\Windows\SysWOW64\advapi32.dll"
load dll: base=0x76D20000 path="C:\Windows\SysWOW64\shlwapi.dll"
load dll: base=0x77BC0000 path="C:\Windows\SysWOW64\kernel.appcore.dll"
load dll: base=0x776F0000 path="C:\Windows\SysWOW64\SHCore.dll"
load dll: base=0x773A0000 path="C:\Windows\SysWOW64\profapi.dll"
load dll: base=0x77650000 path="C:\Windows\SysWOW64\oleaut32.dll"
load dll: base=0x74D60000 path="C:\Windows\SysWOW64\msvcp_win.dll"
load dll: base=0x74E40000 path="C:\Windows\SysWOW64\setupapi.dll"
load dll: base=0x74000000 path="C:\Windows\SysWOW64\mpr.dll"
load dll: base=0x66680000 path="C:\Windows\SysWOW64\sfc.dll"
load dll: base=0x73930000 path="C:\Windows\SysWOW64\winspool.drv"
load dll: base=0x72FA0000 path="C:\Windows\SysWOW64\bcrypt.dll"
load dll: base=0x640C0000 path="C:\Windows\SysWOW64\sfc_os.dll"
output debug: len=115 unicode=0
output debug: len=115 unicode=0
load dll: base=0x67100000 path="C:\Windows\SysWOW64\SortServer2003Compat.dll"
load dll: base=0x773B0000 path="C:\Windows\SysWOW64\imm32.dll"
exception: code=0x80000003(Breakpoint) addr=0x77C7748C first=1
exit thread: exitcode=0x0
load dll: base=0x10000000 path="C:\Users\user\AppData\Local\Temp\TempFolder.aad\proj.dll"
create thread: th=0x414 base=0x2F4000 start=0x77C067C0
create thread: th=0x670 base=0x2F7000 start=0x77C067C0
load dll: base=0x69000000 path="C:\Users\user\AppData\Local\Temp\TempFolder.aad\iml32.dll"
load dll: base=0x774C0000 path="C:\Windows\SysWOW64\comdlg32.dll"
create thread: th=0x670 base=0x2FA000 start=0x77C067C0
load dll: base=0x72DE0000 path="C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.14393.447_none_5507ded2cb4f7f4c\comctl32.dll"
load dll: base=0x75710000 path="C:\Windows\SysWOW64\ole32.dll"
load dll: base=0x68000000 path="C:\Users\user\AppData\Local\Temp\TempFolder.aad\dirapi.dll"
load dll: base=0x73050000 path="C:\Windows\SysWOW64\winmm.dll"
load dll: base=0x740F0000 path="C:\Windows\SysWOW64\version.dll"
load dll: base=0x72F70000 path="C:\Windows\SysWOW64\winmmbase.dll"
load dll: base=0x720000 path="C:\Windows\SysWOW64\winmmbase.dll"
load dll: base=0x2180000 path="C:\Windows\SysWOW64\winmmbase.dll"
unload dll: base=0x72F70000
unload dll: base=0x720000
load dll: base=0x6C670000 path="C:\Windows\SysWOW64\uxtheme.dll"
create thread: th=0x414 base=0x2FD000 start=0x78E7C3C0
load dll: base=0x77840000 path="C:\Windows\SysWOW64\msctf.dll"
load dll: base=0x92E0000 path="D:\DxWnd.develop\v2_04_07_beta\Release\dxwnd.dll"
create thread: th=0xC88 base=0x300000 start=0x73953B70
load dll: base=0x64080000 path="C:\Windows\SysWOW64\msvfw32.dll"
load dll: base=0x755B0000 path="C:\Windows\SysWOW64\wintrust.dll"
load dll: base=0x9400000 path="C:\Windows\SysWOW64\msasn1.dll"
load dll: base=0x746B0000 path="C:\Windows\SysWOW64\crypt32.dll"
load dll: base=0x64590000 path="C:\Windows\SysWOW64\avifil32.dll"
load dll: base=0x72FD0000 path="C:\Windows\SysWOW64\msacm32.dll"
exit thread: exitcode=0x1
exit thread: exitcode=0x1
exit thread: exitcode=0x1
exit thread: exitcode=0x1
exit thread: exitcode=0x1
exit process
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
setwindowshook mode
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
setwindowshook mode
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
setwindowshook mode
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
setwindowshook mode
OnRun idx=6 prog="F:\RhemE\RhemE\RHEM.noshim.exe" unhooked=0
setwindowshook mode
OnRun idx=6 prog="F:\RhemE\RhemE\RHEM.noshim.exe" unhooked=0
setwindowshook mode
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
setwindowshook mode
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
setwindowshook mode
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
setwindowshook mode
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
setwindowshook mode
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
setwindowshook mode
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
setwindowshook mode
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
setwindowshook mode
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
setwindowshook mode
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
setwindowshook mode
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
setwindowshook mode
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
injectsuspended mode
InjectSuspended: exe="F:\RhemE\RhemE\RHEM1(scalable).exe" dir="F:\RhemE\RhemE"
Target handle=888
NT Header offset=E8
AddressOfEntryPoint=3D84 ImageBase=20000000
Thread start address=20003d84
wait cycle 0 eip=20003d84
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
self elevation
injectsuspended mode
InjectSuspended: exe="F:\RhemE\RhemE\RHEM1(scalable).exe" dir="F:\RhemE\RhemE"
Target handle=828
NT Header offset=E8
AddressOfEntryPoint=3D84 ImageBase=20000000
Thread start address=20003d84
wait cycle 0 eip=20003d84
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
self elevation
injectsuspended mode
InjectSuspended: exe="F:\RhemE\RhemE\RHEM1(scalable).exe" dir="F:\RhemE\RhemE"
Target handle=a04
NT Header offset=E8
AddressOfEntryPoint=3D84 ImageBase=20000000
Thread start address=20003d84
wait cycle 0 eip=20003d84
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
self elevation
injectsuspended mode
InjectSuspended: exe="F:\RhemE\RhemE\RHEM1(scalable).exe" dir="F:\RhemE\RhemE"
Target handle=6bc
NT Header offset=E8
AddressOfEntryPoint=3D84 ImageBase=20000000
Thread start address=20003d84
wait cycle 0 eip=20003d84
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
self elevation
injectsuspended mode
InjectSuspended: exe="F:\RhemE\RhemE\RHEM1(scalable).exe" dir="F:\RhemE\RhemE"
Target handle=878
NT Header offset=E8
AddressOfEntryPoint=3D84 ImageBase=20000000
Thread start address=20003d84
wait cycle 0 eip=20003d84
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM1(scalable).exe" unhooked=0
self elevation
injectsuspended mode
InjectSuspended: exe="F:\RhemE\RhemE\RHEM1(scalable).exe" dir="F:\RhemE\RhemE"
Target handle=86c
NT Header offset=E8
AddressOfEntryPoint=3D84 ImageBase=20000000
Thread start address=20003d84
wait cycle 0 eip=20003d84
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM.noshim.exe" unhooked=0
self elevation
injectsuspended mode
InjectSuspended: exe="F:\RhemE\RhemE\RHEM.noshim.exe" dir="F:\RhemE\RhemE"
Target handle=8a0
NT Header offset=E8
AddressOfEntryPoint=3D84 ImageBase=20000000
Thread start address=20003d84
wait cycle 0 eip=20003d84
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM.noshim.exe" unhooked=0
self elevation
injectsuspended mode
InjectSuspended: exe="F:\RhemE\RhemE\RHEM.noshim.exe" dir="F:\RhemE\RhemE"
Target handle=cb0
NT Header offset=E8
AddressOfEntryPoint=3D84 ImageBase=20000000
Thread start address=20003d84
wait cycle 0 eip=20003d84
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM.noshim.exe" unhooked=0
self elevation
setwindowshook mode
OnRun idx=8 prog="F:\RhemE\RhemE\RHEM.noshim.exe" unhooked=0
self elevation
setwindowshook mode setwindowshook mode

View File

@ -1,11 +1,11 @@
[HKEY_LOCAL_MACHINE\SOFTWARE] [HKEY_LOCAL_MACHINE\SOFTWARE]
[HKEY_LOCAL_MACHINE\SOFTWARE\Mindscape] [HKEY_LOCAL_MACHINE\SOFTWARE\Mindscape]
[HKEY_LOCAL_MACHINE\SOFTWARE\Mindscape\WarHammerFB] [HKEY_LOCAL_MACHINE\SOFTWARE\Mindscape\WarHammerFB]
;"Options"="1,1,1,1,1,2,1,1" // digital audio on ;"Options"="3,1,1,2,1,1,0,0" // High Quality, digital audio off
"Options"="1,1,1,1,1,2,0,0" // digital audio off "Options"="3,1,1,2,1,1,1,1" // High Quality, digital audio on
;"Options"="0,0,0,0,0,0,0,0" //all off
[HKEY_LOCAL_MACHINE\SOFTWARE\Mindscape\WarHammerFB\InstallDir] [HKEY_LOCAL_MACHINE\SOFTWARE\Mindscape\WarHammerFB\InstallDir]
@="\{path}" @="\{path}"

View File

@ -1486,3 +1486,11 @@ fix: ddraw surface capability regression for emulated backbuffer: fixes "Dominan
fix: ddraw surface capability regression for direct primary/backbuffer: should fix "Tomb raider 3" in HW mode fix: ddraw surface capability regression for direct primary/backbuffer: should fix "Tomb raider 3" in HW mode
fix: ddraw surface capability regression for zbuffer: fixes "Toca Touring Car" in SW mode fix: ddraw surface capability regression for zbuffer: fixes "Toca Touring Car" in SW mode
fix: in fx1, bug crashing app when querying unknown interfaces! fix: in fx1, bug crashing app when querying unknown interfaces!
v2.04.09
add: hook USER32 AdjustWindowRect/Ex calls: fix window position problems for "Man TT Superbike"
add: hook for USER32 GetActiveWindow() tracing.
fix: version hooking for IDIrectDraw methods called by IDIrectDrawSurface methods: fixes many crashes on ddraw games
fix: capability registration passed in IDIrectDrawSurface::QueryInterface() calls: fixes settings for ZBUFFER surfaces
fix: capsdb logging (developer's use only)
fix: handling of WM_NCCALCSIZE & WM_NCPAINT messages in winproc hooker to align behaviour to comment. To be tested ...

View File

@ -352,14 +352,7 @@ static HRESULT BuildPrimaryFullscreen(LPDIRECTDRAW lpdd, CreateSurface_Type pCre
if (res==DDERR_PRIMARYSURFACEALREADYEXISTS){ if (res==DDERR_PRIMARYSURFACEALREADYEXISTS){
LPDIRECTDRAWSURFACE lpPrim; LPDIRECTDRAWSURFACE lpPrim;
GetGDISurface_Type pGetGDISurface; GetGDISurface_Type pGetGDISurface;
switch(dxversion){ pGetGDISurface = pGetGDISurfaceMethod(dxversion);
default:
case 1: pGetGDISurface = pGetGDISurface1; break;
case 2: pGetGDISurface = pGetGDISurface2; break;
case 3: pGetGDISurface = pGetGDISurface3; break;
case 4: pGetGDISurface = pGetGDISurface4; break;
case 7: pGetGDISurface = pGetGDISurface7; break;
}
OutTraceE("BuildPrimaryFullscreen: CreateSurface DDERR_PRIMARYSURFACEALREADYEXISTS workaround\n"); OutTraceE("BuildPrimaryFullscreen: CreateSurface DDERR_PRIMARYSURFACEALREADYEXISTS workaround\n");
(*pGetGDISurface)(lpPrimaryDD, &lpPrim); (*pGetGDISurface)(lpPrimaryDD, &lpPrim);
while ((*pReleaseSMethod(dxversion))(lpPrim)); while ((*pReleaseSMethod(dxversion))(lpPrim));
@ -411,14 +404,7 @@ static HRESULT BuildPrimaryDir(LPDIRECTDRAW lpdd, CreateSurface_Type pCreateSurf
if (res==DDERR_PRIMARYSURFACEALREADYEXISTS){ if (res==DDERR_PRIMARYSURFACEALREADYEXISTS){
LPDIRECTDRAWSURFACE lpPrim; LPDIRECTDRAWSURFACE lpPrim;
GetGDISurface_Type pGetGDISurface; GetGDISurface_Type pGetGDISurface;
switch(dxversion){ pGetGDISurface = pGetGDISurfaceMethod(dxversion);
default:
case 1: pGetGDISurface = pGetGDISurface1; break;
case 2: pGetGDISurface = pGetGDISurface2; break;
case 3: pGetGDISurface = pGetGDISurface3; break;
case 4: pGetGDISurface = pGetGDISurface4; break;
case 7: pGetGDISurface = pGetGDISurface7; break;
}
OutTraceE("BuildPrimaryDir: CreateSurface DDERR_PRIMARYSURFACEALREADYEXISTS workaround\n"); OutTraceE("BuildPrimaryDir: CreateSurface DDERR_PRIMARYSURFACEALREADYEXISTS workaround\n");
(*pGetGDISurface)(lpPrimaryDD, &lpPrim); (*pGetGDISurface)(lpPrimaryDD, &lpPrim);
while ((*pReleaseSMethod(dxversion))(lpPrim)); while ((*pReleaseSMethod(dxversion))(lpPrim));
@ -668,14 +654,7 @@ static HRESULT BuildBackBufferDir(LPDIRECTDRAW lpdd, CreateSurface_Type pCreateS
LPDIRECTDRAWSURFACE lpPrim; LPDIRECTDRAWSURFACE lpPrim;
DDSURFACEDESC2 prim; DDSURFACEDESC2 prim;
GetGDISurface_Type pGetGDISurface; GetGDISurface_Type pGetGDISurface;
switch(dxversion){ pGetGDISurface = pGetGDISurfaceMethod(dxversion);
default:
case 1: pGetGDISurface = pGetGDISurface1; break;
case 2: pGetGDISurface = pGetGDISurface2; break;
case 3: pGetGDISurface = pGetGDISurface3; break;
case 4: pGetGDISurface = pGetGDISurface4; break;
case 7: pGetGDISurface = pGetGDISurface7; break;
}
(*pGetGDISurface)(lpPrimaryDD, &lpPrim); (*pGetGDISurface)(lpPrimaryDD, &lpPrim);
memset(&prim, 0, sizeof(DDSURFACEDESC2)); memset(&prim, 0, sizeof(DDSURFACEDESC2));
prim.dwSize = (dxversion >= 4) ? sizeof(DDSURFACEDESC2) : sizeof(DDSURFACEDESC); prim.dwSize = (dxversion >= 4) ? sizeof(DDSURFACEDESC2) : sizeof(DDSURFACEDESC);
@ -1007,13 +986,20 @@ HRESULT WINAPI extCreateSurface(int dxversion, CreateSurface_Type pCreateSurface
if(res) return res; if(res) return res;
lpDDSPrim = *lplpdds; lpDDSPrim = *lplpdds;
dxwss.PushPrimarySurface(lpDDSPrim, dxversion); dxwss.PushPrimarySurface(lpDDSPrim, dxversion);
dxwcdb.PushCaps(*lplpdds, lpddsd->ddsCaps.dwCaps);
RegisterPixelFormat(dxversion, lpDDSPrim); RegisterPixelFormat(dxversion, lpDDSPrim);
if (BBCount){ if (BBCount){
DWORD dwCaps;
// build emulated backbuffer surface // build emulated backbuffer surface
res=AttachBackBuffer(lpdd, pCreateSurface, lpddsd, dxversion, &lpDDSBack, NULL); res=AttachBackBuffer(lpdd, pCreateSurface, lpddsd, dxversion, &lpDDSBack, NULL);
if(res) return res; if(res) return res;
dxwss.PushBackBufferSurface(lpDDSBack, dxversion); dxwss.PushBackBufferSurface(lpDDSBack, dxversion);
// here we try to guess what sort of capabilities would expose a built-in backbuffer surface
dwCaps = lpddsd->ddsCaps.dwCaps;
dwCaps &= ~DDSCAPS_PRIMARYSURFACE;
dwCaps |= (DDSCAPS_BACKBUFFER|DDSCAPS_VIDEOMEMORY);
dxwcdb.PushCaps(lpDDSBack, dwCaps);
} }
if(IsTraceDDRAW){ if(IsTraceDDRAW){

View File

@ -956,6 +956,20 @@ SetClipper_Type pSetClipperMethod(int dxversion)
return pSetClipper; return pSetClipper;
} }
Blt_Type pGetBltMethod(int dxversion)
{
Blt_Type pBlt;
switch(dxversion){
case 1: pBlt=pBlt1; break;
case 2: pBlt=pBlt2; break;
case 3: pBlt=pBlt3; break;
case 4: pBlt=pBlt4; break;
case 7: pBlt=pBlt7; break;
}
CHECKPTR(pBlt, "Blt");
return pBlt;
}
Blt_Type pBltMethod() Blt_Type pBltMethod()
{ {
Blt_Type pBlt; Blt_Type pBlt;
@ -2307,7 +2321,7 @@ void FixSurfaceCaps(LPDDSURFACEDESC2 lpddsd, int dxversion)
if((lpddsd->dwFlags & DDSD_CAPS) && (lpddsd->ddsCaps.dwCaps & DDSCAPS_ZBUFFER)) { // z-buffer surface - set to memory if((lpddsd->dwFlags & DDSD_CAPS) && (lpddsd->ddsCaps.dwCaps & DDSCAPS_ZBUFFER)) { // z-buffer surface - set to memory
lpddsd->ddsCaps.dwCaps = DDSCAPS_ZBUFFER; lpddsd->ddsCaps.dwCaps = DDSCAPS_ZBUFFER;
if(dxw.dwFlags8 & ALLOWSYSMEMON3DDEV) lpddsd->ddsCaps.dwCaps = DDSCAPS_SYSTEMMEMORY|DDSCAPS_ZBUFFER; if (dxw.dwFlags8 & ALLOWSYSMEMON3DDEV) lpddsd->ddsCaps.dwCaps = DDSCAPS_SYSTEMMEMORY|DDSCAPS_ZBUFFER;
return; return;
} }
@ -2456,6 +2470,29 @@ HRESULT WINAPI extGetAttachedSurface(int dxversion, GetAttachedSurface_Type pGet
} }
else { else {
OutTraceDDRAW("GetAttachedSurface(%d): attached=%x\n", dxversion, *lplpddas); OutTraceDDRAW("GetAttachedSurface(%d): attached=%x\n", dxversion, *lplpddas);
if(lpddsc->dwCaps & DDSCAPS_ZBUFFER){
char *sMode;
// Martian Gothic and others: if the ZBUFFER is unknown, then you must register virtual capabilities
// compatible with those of the original surface!
DWORD dwCaps;
lpDDZBuffer = *lplpddas;
dwCaps = dxwcdb.GetCaps(*lplpddas);
if(!dwCaps){
dwCaps = dxwcdb.GetCaps(lpdds);
if(dwCaps){
dwCaps &= ~(DDSCAPS_PRIMARYSURFACE|DDSCAPS_FLIP|DDSCAPS_BACKBUFFER|DDSCAPS_3DDEVICE|DDSCAPS_COMPLEX);
dwCaps |= DDSCAPS_ZBUFFER;
//if(dwCaps & DDSCAPS_VIDEOMEMORY) dwCaps|=DDSCAPS_LOCALVIDMEM;
dxwcdb.PushCaps(*lplpddas, dwCaps);
sMode = "derived";
}
else sMode = "unknown";
}
else sMode = "known";
OutTraceDW("GetAttachedSurface(%d): ZBUFFER caps=%x(%s) (%s)\n", dxversion, dwCaps, ExplainDDSCaps(dwCaps), sMode);
}
} }
return res; return res;
@ -2860,13 +2897,7 @@ HRESULT WINAPI ColorConversionEmulated(int dxversion, LPDIRECTDRAWSURFACE lpdds,
HRESULT res; HRESULT res;
Blt_Type pBlt; Blt_Type pBlt;
RECT srcrect, destrect; RECT srcrect, destrect;
switch(dxversion){ pBlt = pGetBltMethod(dxversion);
case 1: pBlt=pBlt1; break;
case 2: pBlt=pBlt2; break;
case 3: pBlt=pBlt3; break;
case 4: pBlt=pBlt4; break;
case 7: pBlt=pBlt7; break;
}
// v2.04.01.fx6: copy emurect since pEmuBlt will alter values! // v2.04.01.fx6: copy emurect since pEmuBlt will alter values!
srcrect=destrect=emurect; srcrect=destrect=emurect;
res=(*pEmuBlt)(dxversion, pBlt, lpDDSEmu_Back, &destrect, lpdds, &srcrect, DDBLT_WAIT, 0); res=(*pEmuBlt)(dxversion, pBlt, lpDDSEmu_Back, &destrect, lpdds, &srcrect, DDBLT_WAIT, 0);
@ -2944,13 +2975,7 @@ HRESULT WINAPI extFlip(int dxversion, Flip_Type pFlip, LPDIRECTDRAWSURFACE lpdds
lpdds, IsPrim?"(PRIM)":"", lpddssrc, dwflags, ExplainFlipFlags(dwflags)); lpdds, IsPrim?"(PRIM)":"", lpddssrc, dwflags, ExplainFlipFlags(dwflags));
Blt_Type pBlt; Blt_Type pBlt;
switch (dxversion){ pBlt = pGetBltMethod(dxversion);
case 1: pBlt = pBlt1; break;
case 2: pBlt = pBlt2; break;
case 3: pBlt = pBlt3; break;
case 4: pBlt = pBlt4; break;
case 7: pBlt = pBlt7; break;
}
if (!IsPrim){ if (!IsPrim){
if(lpddssrc){ if(lpddssrc){
@ -3028,7 +3053,8 @@ HRESULT WINAPI extFlip(int dxversion, Flip_Type pFlip, LPDIRECTDRAWSURFACE lpdds
ddsd.dwHeight = dxw.GetScreenHeight(); ddsd.dwHeight = dxw.GetScreenHeight();
ddsd.dwWidth = dxw.GetScreenWidth(); ddsd.dwWidth = dxw.GetScreenWidth();
} }
res2=(*pCreateSurfaceMethod(dxversion))(lpPrimaryDD, &ddsd, &lpddsTmp, NULL); // v2.04.09 fix: dxversion replaced with iBakBufferVersion - fixes "Gruntz" crash
res2=(*pCreateSurfaceMethod(iBakBufferVersion))(lpPrimaryDD, &ddsd, &lpddsTmp, NULL);
if(res2) { if(res2) {
OutTraceE("CreateSurface: ERROR %x(%s) at %d\n", res2, ExplainDDError(res2), __LINE__); OutTraceE("CreateSurface: ERROR %x(%s) at %d\n", res2, ExplainDDError(res2), __LINE__);
OutTraceE("Size=%d lpPrimaryDD=%x lpDDSBack=%x %s\n", OutTraceE("Size=%d lpPrimaryDD=%x lpDDSBack=%x %s\n",
@ -3589,13 +3615,9 @@ static HRESULT WINAPI extLockDir(int dxversion, Lock_Type pLock, LPDIRECTDRAWSUR
PushLockedRect(lpdds, lprect); PushLockedRect(lpdds, lprect);
switch(dxversion){ // v2.04.09: for IDirectDraw methods use iBakBufferVersion instead of dxversion ...
case 1: pBlt=pBlt1; pGetGDISurface=pGetGDISurface1; break; pBlt = pGetBltMethod(dxversion);
case 2: pBlt=pBlt2; pGetGDISurface=pGetGDISurface2; break; pGetGDISurface = pGetGDISurfaceMethod(iBakBufferVersion);
case 3: pBlt=pBlt3; pGetGDISurface=pGetGDISurface3; break;
case 4: pBlt=pBlt4; pGetGDISurface=pGetGDISurface4; break;
case 7: pBlt=pBlt7; pGetGDISurface=pGetGDISurface7; break;
}
// V2.02.43: Empire Earth does some test Lock operations apparently before the primary surface is created // V2.02.43: Empire Earth does some test Lock operations apparently before the primary surface is created
if(lpPrimaryDD){ if(lpPrimaryDD){
@ -3718,13 +3740,7 @@ static HRESULT WINAPI extUnlock(int dxversion, Unlock4_Type pUnlock, LPDIRECTDRA
OutTrace("Unlock(%d): lpdds=%x%s %s\n", dxversion, lpdds, (IsPrim ? "(PRIM)": (IsBack ? "(BACK)" : "")), sRect); OutTrace("Unlock(%d): lpdds=%x%s %s\n", dxversion, lpdds, (IsPrim ? "(PRIM)": (IsBack ? "(BACK)" : "")), sRect);
} }
switch(dxversion){ pBlt = pGetBltMethod(dxversion);
case 1: pBlt=pBlt1; break;
case 2: pBlt=pBlt2; break;
case 3: pBlt=pBlt3; break;
case 4: pBlt=pBlt4; break;
case 7: pBlt=pBlt7; break;
}
switch(dxversion){ switch(dxversion){
case 4: case 4:
@ -3861,14 +3877,9 @@ static HRESULT WINAPI extUnlockDir(int dxversion, Unlock4_Type pUnlock, LPDIRECT
OutTrace("Unlock(%d): lpdds=%x%s %s\n", dxversion, lpdds, (IsPrim ? "(PRIM)": (IsBack ? "(BACK)" : "")), sRect); OutTrace("Unlock(%d): lpdds=%x%s %s\n", dxversion, lpdds, (IsPrim ? "(PRIM)": (IsBack ? "(BACK)" : "")), sRect);
} }
switch(dxversion){ // v2.04.09: for IDirectDraw methods use iBakBufferVersion instead of dxversion ...
default: pBlt = pGetBltMethod(dxversion);
case 1: pGetGDISurface = pGetGDISurface1; pBlt = pBlt1; break; pGetGDISurface = pGetGDISurfaceMethod(iBakBufferVersion);
case 2: pGetGDISurface = pGetGDISurface2; pBlt = pBlt2; break;
case 3: pGetGDISurface = pGetGDISurface3; pBlt = pBlt3; break;
case 4: pGetGDISurface = pGetGDISurface4; pBlt = pBlt4; break;
case 7: pGetGDISurface = pGetGDISurface7; pBlt = pBlt7; break;
}
if(dxw.dwFlags1 & LOCKEDSURFACE){ if(dxw.dwFlags1 & LOCKEDSURFACE){
(*pGetGDISurface)(lpPrimaryDD, &lpDDSPrim); (*pGetGDISurface)(lpPrimaryDD, &lpDDSPrim);
@ -3986,14 +3997,9 @@ HRESULT WINAPI extReleaseDC(int dxversion, ReleaseDC_Type pReleaseDC, LPDIRECTDR
if((IsPrim) && (dxw.dwFlags1 & EMULATESURFACE)) {\ if((IsPrim) && (dxw.dwFlags1 & EMULATESURFACE)) {\
Blt_Type pBlt; Blt_Type pBlt;
GetGDISurface_Type pGetGDISurface; GetGDISurface_Type pGetGDISurface;
switch(dxversion){ // v2.04.09: for IDirectDraw methods use iBakBufferVersion instead of dxversion ...
default: pBlt = pGetBltMethod(dxversion);
case 1: pGetGDISurface = pGetGDISurface1; pBlt = pBlt1; break; pGetGDISurface = pGetGDISurfaceMethod(iBakBufferVersion);
case 2: pGetGDISurface = pGetGDISurface2; pBlt = pBlt2; break;
case 3: pGetGDISurface = pGetGDISurface3; pBlt = pBlt3; break;
case 4: pGetGDISurface = pGetGDISurface4; pBlt = pBlt4; break;
case 7: pGetGDISurface = pGetGDISurface7; pBlt = pBlt7; break;
}
sBlt(dxversion, pBlt, "ReleaseDC", lpdds, NULL, lpdds, NULL, 0, NULL, FALSE); sBlt(dxversion, pBlt, "ReleaseDC", lpdds, NULL, lpdds, NULL, 0, NULL, FALSE);
} }
if (res) OutTraceE("ReleaseDC: ERROR res=%x(%s)\n", res, ExplainDDError(res)); if (res) OutTraceE("ReleaseDC: ERROR res=%x(%s)\n", res, ExplainDDError(res));

View File

@ -421,6 +421,7 @@ void dxwCore::CalculateWindowPos(HWND hwnd, DWORD width, DWORD height, LPWINDOWP
break; break;
case DXW_SET_COORDINATES: case DXW_SET_COORDINATES:
default: default:
// set size
if(bAutoScale){ if(bAutoScale){
MaxX = GetScreenWidth(); MaxX = GetScreenWidth();
MaxY = GetScreenHeight(); MaxY = GetScreenHeight();
@ -443,6 +444,11 @@ void dxwCore::CalculateWindowPos(HWND hwnd, DWORD width, DWORD height, LPWINDOWP
MaxY = height; MaxY = height;
if(dxw.dwFlags4 & BILINEAR2XFILTER) MaxY <<= 1; // double if(dxw.dwFlags4 & BILINEAR2XFILTER) MaxY <<= 1; // double
} }
// set pos
if(dxw.dwFlags7 & ANCHORED){
iPosX = iPos0X;
iPosY = iPos0Y;
}
rect.left = iPosX; rect.left = iPosX;
rect.top = iPosY; //v2.02.09 rect.top = iPosY; //v2.02.09
rect.right = iPosX + MaxX; rect.right = iPosX + MaxX;
@ -459,7 +465,7 @@ void dxwCore::CalculateWindowPos(HWND hwnd, DWORD width, DWORD height, LPWINDOWP
dwExStyle=(*pGetWindowLong)(hwnd, GWL_EXSTYLE); dwExStyle=(*pGetWindowLong)(hwnd, GWL_EXSTYLE);
// BEWARE: from MSDN - If the window is a child window, the return value is undefined. // BEWARE: from MSDN - If the window is a child window, the return value is undefined.
hMenu = (dwStyle & WS_CHILD) ? NULL : GetMenu(hwnd); hMenu = (dwStyle & WS_CHILD) ? NULL : GetMenu(hwnd);
AdjustWindowRectEx(&rect, dwStyle, (hMenu!=NULL), dwExStyle); (*pAdjustWindowRectEx)(&rect, dwStyle, (hMenu!=NULL), dwExStyle);
// if (hMenu) __try {CloseHandle(hMenu);} __except(EXCEPTION_EXECUTE_HANDLER){}; // if (hMenu) __try {CloseHandle(hMenu);} __except(EXCEPTION_EXECUTE_HANDLER){};
switch(dxw.Coordinates){ switch(dxw.Coordinates){
case DXW_DESKTOP_WORKAREA: case DXW_DESKTOP_WORKAREA:

View File

@ -8,8 +8,12 @@
#include "dxwnd.h" #include "dxwnd.h"
#include "dxwcore.hpp" #include "dxwcore.hpp"
//#define DXW_SURFACE_STACK_TRACING #if 0
//#define OutTraceSDB OutTrace // uncomment (#if 1) to activate caps db tracing
#define DXW_SURFACE_STACK_TRACING
#define OutTraceSDB OutTrace
#include "dxhelper.h"
#endif
dxwCapsDB::dxwCapsDB() dxwCapsDB::dxwCapsDB()
{ {
@ -25,7 +29,7 @@ void dxwCapsDB::PushCaps(LPDIRECTDRAWSURFACE ps, DWORD dwCaps)
int i; int i;
CapsDB_Type *e; CapsDB_Type *e;
#ifdef DXW_SURFACE_STACK_TRACING #ifdef DXW_SURFACE_STACK_TRACING
OutTraceSDB(">>> CAPSDB MARK: lpdds=%x%s caps=%x(%s)\n", ps, dwCaps, ExplainDDCaps(dwCaps)); OutTraceSDB(">>> CAPSDB MARK: lpdds=%x caps=%x(%s)\n", ps, dwCaps, ExplainDDSCaps(dwCaps));
#endif #endif
for (i=0;i<DDSQLEN;i++) { for (i=0;i<DDSQLEN;i++) {
e=&CapsDB[i]; e=&CapsDB[i];
@ -49,11 +53,11 @@ DWORD dxwCapsDB::GetCaps(LPDIRECTDRAWSURFACE ps)
if (CapsDB[i].lpdds==0) return 0; if (CapsDB[i].lpdds==0) return 0;
if (CapsDB[i].lpdds==ps) break; if (CapsDB[i].lpdds==ps) break;
} }
// if found, delete it by left-copying each entry until end of array // if found, return the caps
if (CapsDB[i].lpdds==ps){ if (CapsDB[i].lpdds==ps){
#ifdef DXW_SURFACE_STACK_TRACING #ifdef DXW_SURFACE_STACK_TRACING
OutTraceSDB(">>> CAPSDB GETCAPS: i=%d lpdds=%x caps=%x(%s)\n", OutTraceSDB(">>> CAPSDB GETCAPS: i=%d lpdds=%x caps=%x(%s)\n",
i, ps, CapsDB[i].dwCaps, ExplainDDCaps(CapsDB[i].dwCaps)); i, ps, CapsDB[i].dwCaps, ExplainDDSCaps(CapsDB[i].dwCaps));
#endif #endif
return CapsDB[i].dwCaps; return CapsDB[i].dwCaps;
} }

View File

@ -131,8 +131,8 @@ void dxwCore::InitTarget(TARGETMAP *target)
} }
iSiz0X = iSizX = target->sizx; iSiz0X = iSizX = target->sizx;
iSiz0Y = iSizY = target->sizy; iSiz0Y = iSizY = target->sizy;
iPosX = target->posx; iPos0X = iPosX = target->posx;
iPosY = target->posy; iPos0Y = iPosY = target->posy;
iMaxW = target->resw; iMaxW = target->resw;
iMaxH = target->resh; iMaxH = target->resh;
// Aspect Ratio from window size, or traditional 4:3 by default // Aspect Ratio from window size, or traditional 4:3 by default
@ -1161,6 +1161,7 @@ DWORD dxwCore::FixWinExStyle(DWORD dwExStyle)
dwExStyle = 0; dwExStyle = 0;
break; break;
} }
return dwExStyle; return dwExStyle;
} }

View File

@ -187,6 +187,8 @@ public: // simple data variables
long iPosY; long iPosY;
long iSizX; long iSizX;
long iSizY; long iSizY;
long iPos0X;
long iPos0Y;
long iSiz0X; long iSiz0X;
long iSiz0Y; long iSiz0Y;
long iMaxW; long iMaxW;

View File

@ -27,7 +27,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "TlHelp32.h" #include "TlHelp32.h"
#define VERSION "2.04.08.fx1" #define VERSION "2.04.09.fx1"
#define DDTHREADLOCK 1 #define DDTHREADLOCK 1

Binary file not shown.

View File

@ -41,6 +41,7 @@ HRESULT WINAPI extQueryInterfaceDX(int dxversion, QueryInterface_Type pQueryInte
BOOL IsBack; BOOL IsBack;
int iObjectType; int iObjectType;
int iObjectVersion; int iObjectVersion;
DWORD dwCaps;
extern LPDIRECTDRAWSURFACE lpDDSEmu_Prim; extern LPDIRECTDRAWSURFACE lpDDSEmu_Prim;
IsPrim=dxwss.IsAPrimarySurface((LPDIRECTDRAWSURFACE)lpdds); IsPrim=dxwss.IsAPrimarySurface((LPDIRECTDRAWSURFACE)lpdds);
@ -177,10 +178,9 @@ HRESULT WINAPI extQueryInterfaceDX(int dxversion, QueryInterface_Type pQueryInte
} }
// added trace // added trace
OutTraceDW("QueryInterface: lpdds=%x%s REFIID=%x obp=%x obj=%s version=%d ret=0\n", OutTraceDW("QueryInterface: lpdds=%x REFIID=%x obp=%x obj=%s version=%d ret=0\n",
lpdds, IsPrim?"(PRIM)":"", riid.Data1, *obp, sLabel, iObjectVersion); lpdds, riid.Data1, *obp, sLabel, iObjectVersion);
// --------- here .....
switch(iObjectType){ switch(iObjectType){
// simulate unavailable interfaces (useful?) // simulate unavailable interfaces (useful?)
case TYPE_OBJECT_DIRECTDRAW: case TYPE_OBJECT_DIRECTDRAW:
@ -195,15 +195,18 @@ HRESULT WINAPI extQueryInterfaceDX(int dxversion, QueryInterface_Type pQueryInte
} }
else{ else{
if(IsBack) dxwss.PushBackBufferSurface((LPDIRECTDRAWSURFACE)*obp, iObjectVersion); if(IsBack) dxwss.PushBackBufferSurface((LPDIRECTDRAWSURFACE)*obp, iObjectVersion);
else dxwss.PopSurface((LPDIRECTDRAWSURFACE)*obp); else dxwss.PopSurface((LPDIRECTDRAWSURFACE)*obp); // no primary, no backbuffer, then pop.
// v2.02.13: seems that hooking inconditionally gives troubles. What is the proper safe hook condition? // v2.02.13: seems that hooking inconditionally gives troubles. What is the proper safe hook condition?
HookDDSurface((LPDIRECTDRAWSURFACE *)obp, dxw.dwDDVersion, FALSE); HookDDSurface((LPDIRECTDRAWSURFACE *)obp, dxw.dwDDVersion, FALSE);
} }
DWORD dwCaps; dwCaps = dxwcdb.GetCaps((LPDIRECTDRAWSURFACE)lpdds);
if (dwCaps = dxwcdb.GetCaps((LPDIRECTDRAWSURFACE)lpdds)) { if (dwCaps) {
OutTrace("QueryInterface(S): PASS caps=%x lpdds=%x->%x\n", dwCaps, lpdds, *obp); OutTraceDW("QueryInterface(S): PASS lpdds=%x->%x caps=%x(%s)\n", lpdds, *obp, dwCaps, ExplainDDSCaps(dwCaps));
dxwcdb.PushCaps(*(LPDIRECTDRAWSURFACE *)obp,dwCaps); dxwcdb.PushCaps(*(LPDIRECTDRAWSURFACE *)obp, dwCaps);
} }
else {
OutTraceDW("QueryInterface(S): NO CAPS\n");
}
break; break;
case TYPE_OBJECT_DIRECT3D: case TYPE_OBJECT_DIRECT3D:
HookDirect3DSession((LPDIRECTDRAW *)obp, iObjectVersion); HookDirect3DSession((LPDIRECTDRAW *)obp, iObjectVersion);

View File

@ -299,6 +299,8 @@ typedef HBITMAP (WINAPI *LoadBitmapA_Type)(HINSTANCE, LPCSTR);
typedef BOOL (WINAPI *EnumWindows_Type)(WNDENUMPROC, LPARAM); typedef BOOL (WINAPI *EnumWindows_Type)(WNDENUMPROC, LPARAM);
typedef BOOL (WINAPI *GetMessage_Type)(LPMSG, HWND, UINT, UINT); typedef BOOL (WINAPI *GetMessage_Type)(LPMSG, HWND, UINT, UINT);
typedef BOOL (WINAPI *PostMessage_Type)(HWND, UINT, WPARAM, LPARAM); typedef BOOL (WINAPI *PostMessage_Type)(HWND, UINT, WPARAM, LPARAM);
typedef BOOL (WINAPI *AdjustWindowRect_Type)(LPRECT, DWORD, BOOL);
typedef BOOL (WINAPI *AdjustWindowRectEx_Type)(LPRECT, DWORD, BOOL, DWORD);
// Winmm.dll: // Winmm.dll:
typedef MCIERROR(WINAPI *mciSendCommand_Type)(MCIDEVICEID, UINT, DWORD_PTR, DWORD_PTR); typedef MCIERROR(WINAPI *mciSendCommand_Type)(MCIDEVICEID, UINT, DWORD_PTR, DWORD_PTR);
@ -620,6 +622,8 @@ DXWEXTERN LoadBitmapA_Type pLoadBitmapA DXWINITIALIZED;
DXWEXTERN EnumWindows_Type pEnumWindows DXWINITIALIZED; DXWEXTERN EnumWindows_Type pEnumWindows DXWINITIALIZED;
DXWEXTERN GetMessage_Type pGetMessageA, pGetMessageW DXWINITIALIZED; DXWEXTERN GetMessage_Type pGetMessageA, pGetMessageW DXWINITIALIZED;
DXWEXTERN PostMessage_Type pPostMessageA, pPostMessageW DXWINITIALIZED; DXWEXTERN PostMessage_Type pPostMessageA, pPostMessageW DXWINITIALIZED;
DXWEXTERN AdjustWindowRect_Type pAdjustWindowRect DXWINITIALIZED;
DXWEXTERN AdjustWindowRectEx_Type pAdjustWindowRectEx DXWINITIALIZED;
// Winmm.dll: // Winmm.dll:
DXWEXTERN mciSendCommand_Type pmciSendCommandA DXWINITIALIZED; DXWEXTERN mciSendCommand_Type pmciSendCommandA DXWINITIALIZED;
@ -930,6 +934,8 @@ extern BOOL WINAPI extGetMessageA(LPMSG, HWND, UINT, UINT);
extern BOOL WINAPI extGetMessageW(LPMSG, HWND, UINT, UINT); extern BOOL WINAPI extGetMessageW(LPMSG, HWND, UINT, UINT);
extern BOOL WINAPI extPostMessageA(HWND, UINT, WPARAM, LPARAM); extern BOOL WINAPI extPostMessageA(HWND, UINT, WPARAM, LPARAM);
extern BOOL WINAPI extPostMessageW(HWND, UINT, WPARAM, LPARAM); extern BOOL WINAPI extPostMessageW(HWND, UINT, WPARAM, LPARAM);
extern BOOL WINAPI extAdjustWindowRect(LPRECT, DWORD, BOOL);
extern BOOL WINAPI extAdjustWindowRectEx(LPRECT, DWORD, BOOL, DWORD);
// Winmm.dll: // Winmm.dll:
extern MCIERROR WINAPI extmciSendCommandA(MCIDEVICEID, UINT, DWORD_PTR, DWORD_PTR); extern MCIERROR WINAPI extmciSendCommandA(MCIDEVICEID, UINT, DWORD_PTR, DWORD_PTR);

View File

@ -85,7 +85,6 @@ static HookEntryEx_Type Hooks[]={
#ifdef GALAPAGOSTEST #ifdef GALAPAGOSTEST
// test for Galapagos // test for Galapagos
{HOOK_HOT_CANDIDATE, 0, "GetActiveWindow", (FARPROC)NULL, (FARPROC *)&pGetActiveWindow, (FARPROC)extGetActiveWindow},
{HOOK_HOT_CANDIDATE, 0, "GetForegroundWindow", (FARPROC)GetForegroundWindow, (FARPROC *)&pGetForegroundWindow, (FARPROC)extGetForegroundWindow}, {HOOK_HOT_CANDIDATE, 0, "GetForegroundWindow", (FARPROC)GetForegroundWindow, (FARPROC *)&pGetForegroundWindow, (FARPROC)extGetForegroundWindow},
{HOOK_HOT_CANDIDATE, 0, "GetFocus", (FARPROC)GetFocus, (FARPROC *)&pGetFocus, (FARPROC)extGetFocus}, {HOOK_HOT_CANDIDATE, 0, "GetFocus", (FARPROC)GetFocus, (FARPROC *)&pGetFocus, (FARPROC)extGetFocus},
{HOOK_HOT_CANDIDATE, 0, "SetFocus", (FARPROC)SetFocus, (FARPROC *)&pSetFocus, (FARPROC)extSetFocus}, {HOOK_HOT_CANDIDATE, 0, "SetFocus", (FARPROC)SetFocus, (FARPROC *)&pSetFocus, (FARPROC)extSetFocus},
@ -138,6 +137,9 @@ static HookEntryEx_Type Hooks[]={
//{HOOK_IAT_CANDIDATE, 0, "LoadBitmapA", (FARPROC)NULL, (FARPROC *)&pLoadBitmapA, (FARPROC)extLoadBitmapA}, //{HOOK_IAT_CANDIDATE, 0, "LoadBitmapA", (FARPROC)NULL, (FARPROC *)&pLoadBitmapA, (FARPROC)extLoadBitmapA},
{HOOK_IAT_CANDIDATE, 0, "EnumWindows", (FARPROC)NULL, (FARPROC *)&pEnumWindows, (FARPROC)extEnumWindows}, {HOOK_IAT_CANDIDATE, 0, "EnumWindows", (FARPROC)NULL, (FARPROC *)&pEnumWindows, (FARPROC)extEnumWindows},
{HOOK_IAT_CANDIDATE, 0, "AdjustWindowRect", (FARPROC)NULL, (FARPROC *)&pAdjustWindowRect, (FARPROC)extAdjustWindowRect},
{HOOK_IAT_CANDIDATE, 0, "AdjustWindowRectEx", (FARPROC)AdjustWindowRectEx, (FARPROC *)&pAdjustWindowRectEx, (FARPROC)extAdjustWindowRectEx},
{HOOK_HOT_CANDIDATE, 0, "GetActiveWindow", (FARPROC)NULL, (FARPROC *)&pGetActiveWindow, (FARPROC)extGetActiveWindow},
{HOOK_IAT_CANDIDATE, 0, 0, NULL, 0, 0} // terminator {HOOK_IAT_CANDIDATE, 0, 0, NULL, 0, 0} // terminator
}; };
@ -476,7 +478,7 @@ void dxwFixWindowPos(char *ApiName, HWND hwnd, LPARAM lParam)
dwStyle=(*pGetWindowLong)(hwnd, GWL_STYLE); dwStyle=(*pGetWindowLong)(hwnd, GWL_STYLE);
dwExStyle=(*pGetWindowLong)(hwnd, GWL_EXSTYLE); dwExStyle=(*pGetWindowLong)(hwnd, GWL_EXSTYLE);
hMenu = (dwStyle & WS_CHILD) ? NULL : GetMenu(hwnd); hMenu = (dwStyle & WS_CHILD) ? NULL : GetMenu(hwnd);
AdjustWindowRectEx(&full, dwStyle, (hMenu!=NULL), dwExStyle); (*pAdjustWindowRectEx)(&full, dwStyle, (hMenu!=NULL), dwExStyle);
if (hMenu && (hMenu != (HMENU)-1)) __try {CloseHandle(hMenu);} __except(EXCEPTION_EXECUTE_HANDLER){}; if (hMenu && (hMenu != (HMENU)-1)) __try {CloseHandle(hMenu);} __except(EXCEPTION_EXECUTE_HANDLER){};
BorderX= full.right - full.left - client.right; BorderX= full.right - full.left - client.right;
BorderY= full.bottom - full.top - client.bottom; BorderY= full.bottom - full.top - client.bottom;
@ -516,7 +518,7 @@ void dxwFixWindowPos(char *ApiName, HWND hwnd, LPARAM lParam)
dwStyle=(*pGetWindowLong)(hwnd, GWL_STYLE); dwStyle=(*pGetWindowLong)(hwnd, GWL_STYLE);
dwExStyle=(*pGetWindowLong)(hwnd, GWL_EXSTYLE); dwExStyle=(*pGetWindowLong)(hwnd, GWL_EXSTYLE);
hMenu = (dwStyle & WS_CHILD) ? NULL : GetMenu(hwnd); hMenu = (dwStyle & WS_CHILD) ? NULL : GetMenu(hwnd);
AdjustWindowRectEx(&wrect, dwStyle, (hMenu!=NULL), dwExStyle); (*pAdjustWindowRectEx)(&wrect, dwStyle, (hMenu!=NULL), dwExStyle);
minx = wrect.right - wrect.left; minx = wrect.right - wrect.left;
miny = wrect.bottom - wrect.top; miny = wrect.bottom - wrect.top;
if(wp->cx < minx) wp->cx = minx; if(wp->cx < minx) wp->cx = minx;
@ -940,7 +942,7 @@ BOOL WINAPI extSetWindowPos(HWND hwnd, HWND hWndInsertAfter, int X, int Y, int c
dwExStyle=(*pGetWindowLong)(hwnd, GWL_EXSTYLE); dwExStyle=(*pGetWindowLong)(hwnd, GWL_EXSTYLE);
// BEWARE: from MSDN - If the window is a child window, the return value is undefined. // BEWARE: from MSDN - If the window is a child window, the return value is undefined.
hMenu = (dwCurStyle & WS_CHILD) ? NULL : GetMenu(hwnd); hMenu = (dwCurStyle & WS_CHILD) ? NULL : GetMenu(hwnd);
AdjustWindowRectEx(&rect, dwCurStyle, (hMenu!=NULL), dwExStyle); (*pAdjustWindowRectEx)(&rect, dwCurStyle, (hMenu!=NULL), dwExStyle);
if (hMenu && (hMenu != (HMENU)-1)) __try {CloseHandle(hMenu);} __except(EXCEPTION_EXECUTE_HANDLER){}; if (hMenu && (hMenu != (HMENU)-1)) __try {CloseHandle(hMenu);} __except(EXCEPTION_EXECUTE_HANDLER){};
cx=rect.right; cy=rect.bottom; cx=rect.right; cy=rect.bottom;
OutTraceDW("SetWindowPos: main form hwnd=%x fixed size=(%d,%d)\n", hwnd, cx, cy); OutTraceDW("SetWindowPos: main form hwnd=%x fixed size=(%d,%d)\n", hwnd, cx, cy);
@ -3084,7 +3086,7 @@ BOOL WINAPI extUpdateWindow(HWND hwnd)
} }
ret=(*pUpdateWindow)(hwnd); ret=(*pUpdateWindow)(hwnd);
if(!ret) OutTraceE("UpdateWindow: ERROR er=%d\n", GetLastError()); if(!ret) OutTraceE("UpdateWindow: ERROR err=%d\n", GetLastError());
return ret; return ret;
} }
@ -3203,7 +3205,8 @@ HWND WINAPI extGetActiveWindow(void)
{ {
HWND ret; HWND ret;
ret=(*pGetActiveWindow)(); ret=(*pGetActiveWindow)();
if(dxw.Windowize && dxw.IsFullScreen()) { OutTraceDW("GetActiveWindow: ret=%x\n", ret);
if((dxw.dwFlags8 & WININSULATION) && dxw.Windowize && dxw.IsFullScreen()) {
OutTraceDW("GetActiveWindow: ret=%x->%x\n", ret, dxw.GethWnd()); OutTraceDW("GetActiveWindow: ret=%x->%x\n", ret, dxw.GethWnd());
return dxw.GethWnd(); return dxw.GethWnd();
} }
@ -4072,7 +4075,7 @@ INT_PTR WINAPI extDialogBoxIndirectParamA(HINSTANCE hInstance, LPCDLGTEMPLATE hD
{ {
//INT_PTR ret; //INT_PTR ret;
// MessageBox(0, "DialogBoxIndirectParamA", "step", 0); // MessageBox(0, "DialogBoxIndirectParamA", "step", 0);
OutTrace("DialogBoxIndirectParamA: hInstance=%x pos=(%d,%d) size=(%dx%d) hWndParent=%x, lpDialogFunc=%x dwInitParam=%x\n", OutTraceDW("DialogBoxIndirectParamA: hInstance=%x pos=(%d,%d) size=(%dx%d) hWndParent=%x, lpDialogFunc=%x dwInitParam=%x\n",
hInstance, hDialogTemplate->x, hDialogTemplate->y, hDialogTemplate->cx, hDialogTemplate->cy, hWndParent, lpDialogFunc, dwInitParam); hInstance, hDialogTemplate->x, hDialogTemplate->y, hDialogTemplate->cx, hDialogTemplate->cy, hWndParent, lpDialogFunc, dwInitParam);
return (*pDialogBoxIndirectParamA)(hInstance, hDialogTemplate, hWndParent, lpDialogFunc, dwInitParam); return (*pDialogBoxIndirectParamA)(hInstance, hDialogTemplate, hWndParent, lpDialogFunc, dwInitParam);
} }
@ -4080,27 +4083,91 @@ INT_PTR WINAPI extDialogBoxIndirectParamA(HINSTANCE hInstance, LPCDLGTEMPLATE hD
HBITMAP WINAPI extLoadBitmapA(HINSTANCE hInstance, LPCSTR lpBitmapName) HBITMAP WINAPI extLoadBitmapA(HINSTANCE hInstance, LPCSTR lpBitmapName)
{ {
HBITMAP ret; HBITMAP ret;
OutTrace("LoadBitmapA: hinst=%x name=%s\n", hInstance, lpBitmapName); OutTraceDW("LoadBitmapA: hinst=%x name=%s\n", hInstance, lpBitmapName);
ret = (*pLoadBitmapA)(hInstance, lpBitmapName); ret = (*pLoadBitmapA)(hInstance, lpBitmapName);
if(ret){ if(ret){
OutTrace("LoadBitmapA: hbitmap=%x\n", ret); OutTraceDW("LoadBitmapA: hbitmap=%x\n", ret);
} }
else{ else{
OutTrace("LoadBitmapA: ERROR err=%d\n", GetLastError()); OutTraceE("LoadBitmapA: ERROR err=%d\n", GetLastError());
} }
return ret; return ret;
} }
BOOL WINAPI extEnumWindows(WNDENUMPROC lpEnumFunc, LPARAM lParam) BOOL WINAPI extEnumWindows(WNDENUMPROC lpEnumFunc, LPARAM lParam)
{ {
OutTrace("EnumerateWindows\n"); OutTraceDW("EnumerateWindows\n");
if(dxw.dwFlags8 & WININSULATION){ if(dxw.dwFlags8 & WININSULATION){
OutTrace("EnumerateWindows: BYPASS\n"); OutTraceDW("EnumerateWindows: BYPASS\n");
return TRUE; return TRUE;
} }
return (*pEnumWindows)(lpEnumFunc, lParam); return (*pEnumWindows)(lpEnumFunc, lParam);
} }
static void RedirectCoordinates(LPRECT lpRect)
{
BOOL IsBiggerThanWin;
BOOL IsBiggerThanScreen;
long w, h;
// try to determine if the coordinates could belong to a fullscreen main win
w = lpRect->right - lpRect->left;
h = lpRect->bottom - lpRect->top;
IsBiggerThanWin = (w >= dxw.iSizX) && (h >= dxw.iSizY);
IsBiggerThanScreen = (w >= (long)dxw.GetScreenWidth()) && (h >= (long)dxw.GetScreenHeight());
if(IsBiggerThanWin || IsBiggerThanScreen){
WINDOWPOS wp;
dxw.CalculateWindowPos(NULL, dxw.GetScreenWidth(), dxw.GetScreenHeight(), &wp);
lpRect->left = wp.x;
lpRect->right = wp.x + wp.cx;
lpRect->top = wp.y;
lpRect->bottom = wp.y + wp.cy;
OutTraceDW("AdjustWindowRect: FIX rect=(%d,%d)-(%d,%d)\n",
lpRect->left, lpRect->top, lpRect->right, lpRect->bottom);
}
}
BOOL WINAPI extAdjustWindowRect(LPRECT lpRect, DWORD dwStyle, BOOL bMenu)
{
BOOL ret;
OutTraceDW("AdjustWindowRect: IN rect=(%d,%d)-(%d,%d) style=%x(%s) menu=%x\n",
lpRect->left, lpRect->top, lpRect->right, lpRect->bottom,
dwStyle, ExplainStyle(dwStyle), bMenu);
if(dxw.dwFlags1 & LOCKWINPOS) RedirectCoordinates(lpRect);
ret = pAdjustWindowRect(lpRect, dwStyle, bMenu);
if(ret){
OutTraceDW("AdjustWindowRect: OUT rect=(%d,%d)-(%d,%d)\n",
lpRect->left, lpRect->top, lpRect->right, lpRect->bottom);
}
else{
OutTraceE("AdjustWindowRect ERROR: err=%d\n", GetLastError());
}
return ret;
}
BOOL WINAPI extAdjustWindowRectEx(LPRECT lpRect, DWORD dwStyle, BOOL bMenu, DWORD dwExStyle)
{
BOOL ret;
OutTraceDW("AdjustWindowRectEx: IN rect=(%d,%d)-(%d,%d) style=%x(%s) menu=%x exstyle=%x(%s)\n",
lpRect->left, lpRect->top, lpRect->right, lpRect->bottom,
dwStyle, ExplainStyle(dwStyle), bMenu, dwExStyle, ExplainExStyle(dwExStyle));
if(dxw.dwFlags1 & LOCKWINPOS) RedirectCoordinates(lpRect);
ret = pAdjustWindowRectEx(lpRect, dwStyle, bMenu, dwExStyle);
if(ret){
OutTraceDW("AdjustWindowRectEx: OUT rect=(%d,%d)-(%d,%d)\n",
lpRect->left, lpRect->top, lpRect->right, lpRect->bottom);
}
else{
OutTraceE("AdjustWindowRectEx ERROR: err=%d\n", GetLastError());
}
return ret;
}
// To do: // To do:
// GrayStringA // GrayStringA
// GrayStringW // GrayStringW

View File

@ -303,7 +303,9 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
break; break;
case WM_NCCALCSIZE: case WM_NCCALCSIZE:
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.... // v2.02.30: don't alter child and other windows....
// v2.04.09: comment inconsistent with code. Added '!' to if expression ....
if(!((dxw.dwFlags1 & LOCKWINPOS) && (hwnd == dxw.GethWnd()) && dxw.IsFullScreen())){
OutTraceDW("WindowProc: %s wparam=%x\n", ExplainWinMessage(message), wparam); OutTraceDW("WindowProc: %s wparam=%x\n", ExplainWinMessage(message), wparam);
return (*pDefWindowProcA)(hwnd, message, wparam, lparam); return (*pDefWindowProcA)(hwnd, message, wparam, lparam);
} }

Binary file not shown.

Binary file not shown.

Binary file not shown.