mirror of
https://github.com/DxWnd/DxWnd.reloaded
synced 2024-12-30 09:25:35 +01:00
v2_03_95_src
Former-commit-id: adab4a2a08a147e905d42ffcd996639aac05b1ab
This commit is contained in:
parent
025aaa26ae
commit
94f575cc42
@ -63,7 +63,7 @@
|
|||||||
#define HIDEMULTIMONITOR 0x00008000 // hide multimonitor configurations: GetAdapterCount returns 1.
|
#define HIDEMULTIMONITOR 0x00008000 // hide multimonitor configurations: GetAdapterCount returns 1.
|
||||||
#define TIMESTRETCH 0x00010000 // make system time stretchable
|
#define TIMESTRETCH 0x00010000 // make system time stretchable
|
||||||
#define HOOKOPENGL 0x00020000 // Hook OpenGL calls
|
#define HOOKOPENGL 0x00020000 // Hook OpenGL calls
|
||||||
//#define WALLPAPERMODE 0x00040000 // mouse events are discarded (good for screensaver-like)
|
#define LOCKEDSIZE 0x00040000 // window resizzing is not allowed
|
||||||
#define SHOWHWCURSOR 0x00080000 // enable hardware cursor
|
#define SHOWHWCURSOR 0x00080000 // enable hardware cursor
|
||||||
#define GDISTRETCHED 0x00100000 // Stretch GDI/user32 coordinates to adapt to window size
|
#define GDISTRETCHED 0x00100000 // Stretch GDI/user32 coordinates to adapt to window size
|
||||||
#define SHOWFPSOVERLAY 0x00200000 // shows FPS value to status win / log / screen overlay
|
#define SHOWFPSOVERLAY 0x00200000 // shows FPS value to status win / log / screen overlay
|
||||||
@ -243,6 +243,7 @@
|
|||||||
#define LOCKCOLORDEPTH 0x02000000 // lock ddraw color depth to current desktop value (used in SetDisplayMode)
|
#define LOCKCOLORDEPTH 0x02000000 // lock ddraw color depth to current desktop value (used in SetDisplayMode)
|
||||||
#define FIXSMACKLOOP 0x04000000 // fix Smack loop by insert processmessage and blit between frames
|
#define FIXSMACKLOOP 0x04000000 // fix Smack loop by insert processmessage and blit between frames
|
||||||
#define FIXFREELIBRARY 0x08000000 // fix FreeLibrary simulating retcode 0(error) when attempting free of unallocated module
|
#define FIXFREELIBRARY 0x08000000 // fix FreeLibrary simulating retcode 0(error) when attempting free of unallocated module
|
||||||
|
#define ANCHORED 0x10000000 // Anchored position & size, mo stretching or sliding is allowed
|
||||||
|
|
||||||
// eighth flags DWORD dxw.dwFlags8:
|
// eighth flags DWORD dxw.dwFlags8:
|
||||||
|
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:287b4afcae41e705bf3b4f67be71fce5403a26b7494cad40d5f1e4dbf5bf2925
|
oid sha256:e98419de58b94f79d91d5044fe603e7754db6ea3d79e641b4fc16d9df5ea17e5
|
||||||
size 698368
|
size 700416
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:46c4384a402e3f5d23af6b3f6f9649833e7aefedf0c46bfd7eee282d8029f6ff
|
oid sha256:a75eed6fc7414d986f53c430fc32131c3052a40abfabdac6c13e0ba6a8900b08
|
||||||
size 664576
|
size 664576
|
||||||
|
107
build/dxwnd.ini
107
build/dxwnd.ini
@ -3,8 +3,19 @@ exepath=D:\Games\Year Dead\
|
|||||||
posx=1164
|
posx=1164
|
||||||
posy=243
|
posy=243
|
||||||
sizx=320
|
sizx=320
|
||||||
sizy=200
|
sizy=494
|
||||||
exportpath=G:\DxWnd.develop\v2_03_94fx3_src\build\exports\
|
exportpath=G:\DxWnd.develop\v2_03_94fx3_src\build\exports\
|
||||||
|
debug=1
|
||||||
|
autohide=0
|
||||||
|
checkadmin=0
|
||||||
|
namefromfolder=0
|
||||||
|
multiprocesshook=0
|
||||||
|
updatepaths=1
|
||||||
|
defaultcoord=0
|
||||||
|
defaultposx=50
|
||||||
|
defaultposy=50
|
||||||
|
defaultsizx=800
|
||||||
|
defaultsizy=600
|
||||||
[target]
|
[target]
|
||||||
title0=NITRO.EXE
|
title0=NITRO.EXE
|
||||||
path0=D:\Games\WCW Nitro\NITRO.EXE
|
path0=D:\Games\WCW Nitro\NITRO.EXE
|
||||||
@ -109,7 +120,7 @@ slowratio2=2
|
|||||||
initresw2=640
|
initresw2=640
|
||||||
initresh2=480
|
initresh2=480
|
||||||
title3=yeardead.exe
|
title3=yeardead.exe
|
||||||
path3=D:\Games\Year Dead\yeardead.exe
|
path3=f:\Games\Year Dead\yeardead.exe
|
||||||
startfolder3=
|
startfolder3=
|
||||||
launchpath3=
|
launchpath3=
|
||||||
module3=
|
module3=
|
||||||
@ -176,3 +187,95 @@ maxddinterface4=7
|
|||||||
slowratio4=1
|
slowratio4=1
|
||||||
initresw4=0
|
initresw4=0
|
||||||
initresh4=0
|
initresh4=0
|
||||||
|
title5=Adrenix 3D
|
||||||
|
path5=F:\Games\Adrenix\AdrenixD.exe
|
||||||
|
startfolder5=
|
||||||
|
launchpath5=
|
||||||
|
module5=
|
||||||
|
opengllib5=
|
||||||
|
notes5=
|
||||||
|
registry5=
|
||||||
|
ver5=0
|
||||||
|
monitorid5=0
|
||||||
|
coord5=0
|
||||||
|
flag5=134235174
|
||||||
|
flagg5=1216413696
|
||||||
|
flagh5=20
|
||||||
|
flagi5=138412036
|
||||||
|
flagj5=5248
|
||||||
|
flagk5=65536
|
||||||
|
flagl5=0
|
||||||
|
flagm5=0
|
||||||
|
tflag5=6402
|
||||||
|
dflag5=0
|
||||||
|
posx5=50
|
||||||
|
posy5=50
|
||||||
|
sizx5=800
|
||||||
|
sizy5=600
|
||||||
|
maxfps5=0
|
||||||
|
initts5=0
|
||||||
|
winver5=0
|
||||||
|
maxres5=-1
|
||||||
|
swapeffect5=0
|
||||||
|
maxddinterface5=7
|
||||||
|
slowratio5=1
|
||||||
|
initresw5=0
|
||||||
|
initresh5=0
|
||||||
|
title6=Adrenix
|
||||||
|
path6=F:\Games\Adrenix\Adrenix.exe
|
||||||
|
startfolder6=
|
||||||
|
launchpath6=
|
||||||
|
module6=
|
||||||
|
opengllib6=
|
||||||
|
notes6=
|
||||||
|
registry6=
|
||||||
|
ver6=0
|
||||||
|
monitorid6=0
|
||||||
|
coord6=0
|
||||||
|
flag6=136314918
|
||||||
|
flagg6=1207959552
|
||||||
|
flagh6=20
|
||||||
|
flagi6=138412036
|
||||||
|
flagj6=4224
|
||||||
|
flagk6=0
|
||||||
|
flagl6=0
|
||||||
|
flagm6=0
|
||||||
|
tflag6=0
|
||||||
|
dflag6=0
|
||||||
|
posx6=50
|
||||||
|
posy6=50
|
||||||
|
sizx6=800
|
||||||
|
sizy6=600
|
||||||
|
maxfps6=0
|
||||||
|
initts6=0
|
||||||
|
winver6=0
|
||||||
|
maxres6=-1
|
||||||
|
swapeffect6=0
|
||||||
|
maxddinterface6=7
|
||||||
|
slowratio6=1
|
||||||
|
initresw6=0
|
||||||
|
initresh6=0
|
||||||
|
[texture]
|
||||||
|
MinTexX=0
|
||||||
|
MinTexY=0
|
||||||
|
MaxTexX=0
|
||||||
|
MaxTexY=0
|
||||||
|
[keymapping]
|
||||||
|
timetoggle=
|
||||||
|
timefast=
|
||||||
|
timeslow=
|
||||||
|
altf4=
|
||||||
|
cliptoggle=
|
||||||
|
refresh=
|
||||||
|
logtoggle=
|
||||||
|
plogtoggle=
|
||||||
|
fpstoggle=
|
||||||
|
printscreen=
|
||||||
|
corner=
|
||||||
|
freezetime=
|
||||||
|
fullscreen=
|
||||||
|
workarea=
|
||||||
|
desktop=
|
||||||
|
minimize=
|
||||||
|
restore=
|
||||||
|
kill=
|
||||||
|
35
build/exports/Medford Asylum.dxw
Normal file
35
build/exports/Medford Asylum.dxw
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[target]
|
||||||
|
title0=Medford Asylum
|
||||||
|
path0=F:\Games\Medford Asylum\MedfordAsylum.exe
|
||||||
|
startfolder0=
|
||||||
|
launchpath0=
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
notes0=
|
||||||
|
registry0=
|
||||||
|
ver0=0
|
||||||
|
monitorid0=-1
|
||||||
|
coord0=0
|
||||||
|
flag0=136314914
|
||||||
|
flagg0=1207959552
|
||||||
|
flagh0=20
|
||||||
|
flagi0=675282948
|
||||||
|
flagj0=4224
|
||||||
|
flagk0=65536
|
||||||
|
flagl0=25165824
|
||||||
|
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=2
|
||||||
|
initresw0=800
|
||||||
|
initresh0=600
|
@ -1,31 +1,6 @@
|
|||||||
OnRun idx=16 prog="F:\Games\Adrenix\Adrenix.exe"
|
OnRun idx=7 prog="F:\Games\Warhammer 40K Rites Of War\RoW.exe"
|
||||||
setwindowshook mode
|
setwindowshook mode
|
||||||
OnRun idx=17 prog="F:\Games\Adrenix\AdrenixD.exe"
|
OnRun idx=7 prog="F:\Games\Warhammer 40K Rites Of War\RoW.exe"
|
||||||
setwindowshook mode
|
setwindowshook mode
|
||||||
OnRun idx=16 prog="F:\Games\Adrenix\Adrenix.exe"
|
OnRun idx=7 prog="F:\Games\Warhammer 40K Rites Of War\RoW.exe"
|
||||||
checksafediscversion
|
|
||||||
setwindowshook mode
|
|
||||||
OnRun idx=16 prog="F:\Games\Adrenix\Adrenix.exe"
|
|
||||||
setwindowshook mode
|
|
||||||
OnRun idx=16 prog="F:\Games\Adrenix\Adrenix.exe"
|
|
||||||
setwindowshook mode
|
|
||||||
OnRun idx=18 prog="V:\ADRENIX.EXE"
|
|
||||||
setwindowshook mode
|
|
||||||
OnRun idx=19 prog="V:\ADRENIXD.EXE"
|
|
||||||
setwindowshook mode
|
|
||||||
OnRun idx=20 prog="V:\ADRHEAT.EXE"
|
|
||||||
setwindowshook mode
|
|
||||||
OnRun idx=21 prog="V:\ADRHEATD.EXE"
|
|
||||||
setwindowshook mode
|
|
||||||
OnRun idx=22 prog="V:\ADX_VID.EXE"
|
|
||||||
setwindowshook mode
|
|
||||||
OnRun idx=16 prog="F:\Games\Adrenix\Adrenix.exe"
|
|
||||||
setwindowshook mode
|
|
||||||
OnRun idx=17 prog="F:\Games\Adrenix\AdrenixD.exe"
|
|
||||||
setwindowshook mode
|
|
||||||
OnRun idx=17 prog="F:\Games\Adrenix\AdrenixD.exe"
|
|
||||||
setwindowshook mode
|
|
||||||
OnRun idx=16 prog="F:\Games\Adrenix\Adrenix.exe"
|
|
||||||
setwindowshook mode
|
|
||||||
OnRun idx=16 prog="F:\Games\Adrenix\Adrenix.exe"
|
|
||||||
setwindowshook mode
|
setwindowshook mode
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
|
|
||||||
[HKEY_LOCAL_MACHINE\SOFTWARE\Interplay]
|
|
||||||
|
|
||||||
[HKEY_LOCAL_MACHINE\SOFTWARE\Interplay\Dragon Dice]
|
|
||||||
"ApplicationPath"="d:\\games\\ddice\\"
|
|
||||||
"StarfleetDemo"=dword:00000001
|
|
||||||
"GameInstalled"=dword:00000001
|
|
||||||
"ZoomLevel"=dword:00000000
|
|
||||||
"DieSortType"=dword:00000001
|
|
||||||
"DisplayDieFaceType"=dword:00000000
|
|
||||||
"DisplayRoll"=dword:00000001
|
|
||||||
"DisplayBattle"=dword:00000001
|
|
||||||
"DisplayDragonVsDragon"=dword:00000001
|
|
||||||
"PlaySounds"=dword:00000001
|
|
||||||
"PlayMusic"=dword:00000001
|
|
||||||
"DemoMode"=dword:00000001
|
|
||||||
"DisplayGameMessages"=dword:00000001
|
|
||||||
|
|
||||||
[HKEY_LOCAL_MACHINE\SOFTWARE\Interplay\Dragon Dice\1.0]
|
|
||||||
|
|
@ -1330,4 +1330,12 @@ add: more logging in mciSendCommand - possibly some regression problem...
|
|||||||
fix: corrected clipping bug introduced in v2.03.93.
|
fix: corrected clipping bug introduced in v2.03.93.
|
||||||
fix: SetWindowLog hooker preventing to set DxWnd windowproc when not in fullscreen mode. Fixes "Nascar Racing 3" recursion and crash.
|
fix: SetWindowLog hooker preventing to set DxWnd windowproc when not in fullscreen mode. Fixes "Nascar Racing 3" recursion and crash.
|
||||||
fix: eliminated useless filter to suppress high resolutions detection in PREVENTMAXIMAZE mode
|
fix: eliminated useless filter to suppress high resolutions detection in PREVENTMAXIMAZE mode
|
||||||
fix: fixed mciSendCommand wrapper log messages that could crash the program
|
fix: fixed mciSendCommand wrapper log messages that could crash the program
|
||||||
|
|
||||||
|
v2.03.95:
|
||||||
|
fix: fixed prototype for ICDrawBegin wrapper
|
||||||
|
add: extended logging for mci multimedia API
|
||||||
|
add: window position selector & "locked size" + "anchored" modes
|
||||||
|
fix: transient mode when system tray is not available
|
||||||
|
fix: recursion problem in kernel32 LoadLibrary* wrappers. Allows "Hot patch" on WinXP.
|
||||||
|
fix: initial position problem.
|
||||||
|
@ -41,15 +41,15 @@ void gShowHideTaskBar(BOOL bHide /*=FALSE*/)
|
|||||||
// Code to Hide the System Task Bar
|
// Code to Hide the System Task Bar
|
||||||
rectWorkArea.bottom += (rectTaskBar.bottom - rectTaskBar.top);
|
rectWorkArea.bottom += (rectTaskBar.bottom - rectTaskBar.top);
|
||||||
(*pSystemParametersInfoA)(SPI_SETWORKAREA, 0, (LPVOID)&rectWorkArea, 0);
|
(*pSystemParametersInfoA)(SPI_SETWORKAREA, 0, (LPVOID)&rectWorkArea, 0);
|
||||||
ShowWindow(pWnd, SW_HIDE);
|
(*pShowWindow)(pWnd, SW_HIDE);
|
||||||
ShowWindow(pStart, SW_HIDE);
|
(*pShowWindow)(pStart, SW_HIDE);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
// Code to Show the System Task Bar
|
// Code to Show the System Task Bar
|
||||||
rectWorkArea.bottom -= (rectTaskBar.bottom - rectTaskBar.top);
|
rectWorkArea.bottom -= (rectTaskBar.bottom - rectTaskBar.top);
|
||||||
(*pSystemParametersInfoA)(SPI_SETWORKAREA, 0, (LPVOID)&rectWorkArea, 0);
|
(*pSystemParametersInfoA)(SPI_SETWORKAREA, 0, (LPVOID)&rectWorkArea, 0);
|
||||||
ShowWindow(pWnd, SW_SHOW);
|
(*pShowWindow)(pWnd, SW_SHOW);
|
||||||
ShowWindow(pStart, SW_SHOW);
|
(*pShowWindow)(pStart, SW_SHOW);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,7 +78,7 @@ static char *Flag2Names[32]={
|
|||||||
"KEEPASPECTRATIO", "INIT8BPP", "FORCEWINRESIZE", "INIT16BPP",
|
"KEEPASPECTRATIO", "INIT8BPP", "FORCEWINRESIZE", "INIT16BPP",
|
||||||
"KEEPCURSORFIXED", "DISABLEGAMMARAMP", "INDEPENDENTREFRESH", "FIXNCHITTEST",
|
"KEEPCURSORFIXED", "DISABLEGAMMARAMP", "INDEPENDENTREFRESH", "FIXNCHITTEST",
|
||||||
"LIMITFPS", "SKIPFPS", "SHOWFPS", "HIDEMULTIMONITOR",
|
"LIMITFPS", "SKIPFPS", "SHOWFPS", "HIDEMULTIMONITOR",
|
||||||
"TIMESTRETCH", "HOOKOPENGL", "-------", "SHOWHWCURSOR",
|
"TIMESTRETCH", "HOOKOPENGL", "LOCKEDSIZE", "SHOWHWCURSOR",
|
||||||
"GDISTRETCHED", "SHOWFPSOVERLAY", "FAKEVERSION", "FULLRECTBLT",
|
"GDISTRETCHED", "SHOWFPSOVERLAY", "FAKEVERSION", "FULLRECTBLT",
|
||||||
"NOPALETTEUPDATE", "SUPPRESSIME", "NOBANNER", "WINDOWIZE",
|
"NOPALETTEUPDATE", "SUPPRESSIME", "NOBANNER", "WINDOWIZE",
|
||||||
"LIMITRESOURCES", "STARTDEBUG", "SETCOMPATIBILITY", "WIREFRAME",
|
"LIMITRESOURCES", "STARTDEBUG", "SETCOMPATIBILITY", "WIREFRAME",
|
||||||
@ -136,7 +136,7 @@ static char *Flag7Names[32]={
|
|||||||
"SSUPPRESSDIERRORS", "HOOKNORUN", "FIXBINDTEXTURE", "ENUM16BITMODES",
|
"SSUPPRESSDIERRORS", "HOOKNORUN", "FIXBINDTEXTURE", "ENUM16BITMODES",
|
||||||
"SHAREDKEYBOARD", "HOOKNOUPDATE", "HOOKGLUT32", "INITIALRES",
|
"SHAREDKEYBOARD", "HOOKNOUPDATE", "HOOKGLUT32", "INITIALRES",
|
||||||
"MAXIMUMRES", "LOCKCOLORDEPTH", "FIXSMACKLOOP", "FIXFREELIBRARY",
|
"MAXIMUMRES", "LOCKCOLORDEPTH", "FIXSMACKLOOP", "FIXFREELIBRARY",
|
||||||
"", "", "", "",
|
"ANCHORED", "", "", "",
|
||||||
};
|
};
|
||||||
|
|
||||||
static char *Flag8Names[32]={
|
static char *Flag8Names[32]={
|
||||||
@ -1616,7 +1616,7 @@ void HookLibraryEx(HMODULE hModule, HookEntryEx_Type *Hooks, char *DLLName)
|
|||||||
((dxw.dwFlags4 & HOTPATCHALWAYS) && (Hooks->HookStatus != HOOK_HOT_LINKED))) // force hot patch and not already hooked
|
((dxw.dwFlags4 & HOTPATCHALWAYS) && (Hooks->HookStatus != HOOK_HOT_LINKED))) // force hot patch and not already hooked
|
||||||
&&
|
&&
|
||||||
Hooks->StoreAddress){ // and save ptr available
|
Hooks->StoreAddress){ // and save ptr available
|
||||||
// Hot Patch - beware! This way yo're likely to hook unneeded libraries.
|
// Hot Patch - beware! This way you're likely to hook unneeded libraries.
|
||||||
if(!Hooks->OriginalAddress) {
|
if(!Hooks->OriginalAddress) {
|
||||||
if(!hDLL) {
|
if(!hDLL) {
|
||||||
hDLL = (*pLoadLibraryA)(DLLName);
|
hDLL = (*pLoadLibraryA)(DLLName);
|
||||||
|
@ -410,6 +410,10 @@ void dxwCore::CalculateWindowPos(HWND hwnd, DWORD width, DWORD height, LPWINDOWP
|
|||||||
if(dxw.dwFlags4 & BILINEAR2XFILTER) MaxY <<= 1; // double
|
if(dxw.dwFlags4 & BILINEAR2XFILTER) MaxY <<= 1; // double
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
if((dxw.dwFlags2 & LOCKEDSIZE) || (dxw.dwFlags7 & ANCHORED)){
|
||||||
|
iSizX = iSiz0X;
|
||||||
|
iSizY = iSiz0Y;
|
||||||
|
}
|
||||||
MaxX = iSizX;
|
MaxX = iSizX;
|
||||||
MaxY = iSizY;
|
MaxY = iSizY;
|
||||||
}
|
}
|
||||||
|
@ -126,8 +126,8 @@ void dxwCore::InitTarget(TARGETMAP *target)
|
|||||||
pTimeShifter = TimeShifterCoarse;
|
pTimeShifter = TimeShifterCoarse;
|
||||||
pTimeShifter64 = TimeShifter64Coarse;
|
pTimeShifter64 = TimeShifter64Coarse;
|
||||||
}
|
}
|
||||||
iSizX = target->sizx;
|
iSiz0X = iSizX = target->sizx;
|
||||||
iSizY = target->sizy;
|
iSiz0Y = iSizY = target->sizy;
|
||||||
iPosX = target->posx;
|
iPosX = target->posx;
|
||||||
iPosY = target->posy;
|
iPosY = target->posy;
|
||||||
iMaxW = target->resw;
|
iMaxW = target->resw;
|
||||||
@ -1013,6 +1013,8 @@ void dxwCore::ShowBanner(HWND hwnd)
|
|||||||
|
|
||||||
hClientDC=(*pGDIGetDC)(hwnd);
|
hClientDC=(*pGDIGetDC)(hwnd);
|
||||||
(*pGetClientRect)(hwnd, &client);
|
(*pGetClientRect)(hwnd, &client);
|
||||||
|
//(*pInvalidateRect)((*pGetDesktopWindow)(), NULL, FALSE); // invalidate full desktop, no erase.
|
||||||
|
(*pInvalidateRect)(0, NULL, FALSE); // invalidate full desktop, no erase.
|
||||||
(*pGDIBitBlt)(hClientDC, 0, 0, client.right, client.bottom, NULL, 0, 0, BLACKNESS);
|
(*pGDIBitBlt)(hClientDC, 0, 0, client.right, client.bottom, NULL, 0, 0, BLACKNESS);
|
||||||
|
|
||||||
if(JustOnce || (dwFlags2 & NOBANNER)) return;
|
if(JustOnce || (dwFlags2 & NOBANNER)) return;
|
||||||
|
@ -176,6 +176,8 @@ public: // simple data variables
|
|||||||
long iPosY;
|
long iPosY;
|
||||||
long iSizX;
|
long iSizX;
|
||||||
long iSizY;
|
long iSizY;
|
||||||
|
long iSiz0X;
|
||||||
|
long iSiz0Y;
|
||||||
long iMaxW;
|
long iMaxW;
|
||||||
long iMaxH;
|
long iMaxH;
|
||||||
int iRatioX;
|
int iRatioX;
|
||||||
|
BIN
dll/dxwnd.aps
BIN
dll/dxwnd.aps
Binary file not shown.
@ -27,7 +27,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
#include "TlHelp32.h"
|
#include "TlHelp32.h"
|
||||||
|
|
||||||
#define VERSION "2.03.94.fx3"
|
#define VERSION "2.03.95"
|
||||||
|
|
||||||
#define DDTHREADLOCK 1
|
#define DDTHREADLOCK 1
|
||||||
//#define LOCKTHREADS
|
//#define LOCKTHREADS
|
||||||
@ -59,6 +59,8 @@ BOOL APIENTRY DllMain( HANDLE hmodule,
|
|||||||
HANDLE hCurrentThread;
|
HANDLE hCurrentThread;
|
||||||
|
|
||||||
if(dwreason == DLL_PROCESS_DETACH){
|
if(dwreason == DLL_PROCESS_DETACH){
|
||||||
|
//if(pInvalidateRect && pGetDesktopWindow) (*pInvalidateRect)((*pGetDesktopWindow)(), NULL, FALSE); // invalidate full desktop, no erase.
|
||||||
|
if(pInvalidateRect) (*pInvalidateRect)(0, NULL, FALSE); // invalidate full desktop, no erase.
|
||||||
UnmapViewOfFile(pMapping);
|
UnmapViewOfFile(pMapping);
|
||||||
CloseHandle(hMapping);
|
CloseHandle(hMapping);
|
||||||
}
|
}
|
||||||
|
20
dll/dxwnd.vs2008.sln
Normal file
20
dll/dxwnd.vs2008.sln
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||||
|
# Visual Studio 2008
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dxwnd", "dxwnd.vs2008.vcproj", "{579E7FE7-2745-4100-A802-23511711FCDE}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Win32 = Debug|Win32
|
||||||
|
Release|Win32 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{579E7FE7-2745-4100-A802-23511711FCDE}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{579E7FE7-2745-4100-A802-23511711FCDE}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{579E7FE7-2745-4100-A802-23511711FCDE}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{579E7FE7-2745-4100-A802-23511711FCDE}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
Binary file not shown.
@ -98,4 +98,4 @@ void *HotPatch(void *apiproc, const char *apiname, void *hookproc)
|
|||||||
OutTrace("HotPatch: api=%s addr=%x->%x hook=%x\n", apiname, apiproc, orig_address, hookproc);
|
OutTrace("HotPatch: api=%s addr=%x->%x hook=%x\n", apiname, apiproc, orig_address, hookproc);
|
||||||
return orig_address;
|
return orig_address;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
@ -521,12 +521,25 @@ LoadLibrary (hooking) related APIs
|
|||||||
|
|
||||||
HMODULE SysLibs[SYSLIBIDX_MAX];
|
HMODULE SysLibs[SYSLIBIDX_MAX];
|
||||||
|
|
||||||
HMODULE WINAPI LoadLibraryExWrapper(LPCTSTR lpFileName, HANDLE hFile, DWORD dwFlags, char *api)
|
HMODULE WINAPI LoadLibraryExWrapper(LPVOID lpFileName, BOOL IsWidechar, HANDLE hFile, DWORD dwFlags, char *api)
|
||||||
{
|
{
|
||||||
HMODULE libhandle;
|
HMODULE libhandle;
|
||||||
int idx;
|
int idx;
|
||||||
|
// recursion control: this is necessary so far only on WinXP while other OS like Win7,8,10 don't get into
|
||||||
|
// recursion problems, but in any case better to leave it here, you never know ....
|
||||||
|
static BOOL Recursed = FALSE;
|
||||||
|
|
||||||
libhandle=(*pLoadLibraryExA)(lpFileName, hFile, dwFlags);
|
if(IsWidechar){
|
||||||
|
OutTraceB("%s: file=%ls flags=%x\n", api, lpFileName, dwFlags);
|
||||||
|
libhandle=(*pLoadLibraryExW)((LPCWSTR)lpFileName, hFile, dwFlags);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
OutTraceB("%s: file=%s flags=%x\n", api, lpFileName, dwFlags);
|
||||||
|
libhandle=(*pLoadLibraryExA)((LPCTSTR)lpFileName, hFile, dwFlags);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Recursed) return libhandle;
|
||||||
|
Recursed = TRUE;
|
||||||
|
|
||||||
// found in "The Rage" (1996): loading a module with relative path after a SetCurrentDirectory may fail, though
|
// found in "The Rage" (1996): loading a module with relative path after a SetCurrentDirectory may fail, though
|
||||||
// the module is present in the current directory folder. To fix this problem in case of failure it is possible
|
// the module is present in the current directory folder. To fix this problem in case of failure it is possible
|
||||||
@ -534,14 +547,23 @@ HMODULE WINAPI LoadLibraryExWrapper(LPCTSTR lpFileName, HANDLE hFile, DWORD dwFl
|
|||||||
if(!libhandle){
|
if(!libhandle){
|
||||||
char lpBuffer[MAX_PATH+1];
|
char lpBuffer[MAX_PATH+1];
|
||||||
GetCurrentDirectory(MAX_PATH, lpBuffer);
|
GetCurrentDirectory(MAX_PATH, lpBuffer);
|
||||||
|
if(IsWidechar)
|
||||||
|
sprintf_s(lpBuffer, MAX_PATH, "%s/%ls", lpBuffer, lpFileName);
|
||||||
|
else
|
||||||
sprintf_s(lpBuffer, MAX_PATH, "%s/%s", lpBuffer, lpFileName);
|
sprintf_s(lpBuffer, MAX_PATH, "%s/%s", lpBuffer, lpFileName);
|
||||||
OutTrace("GHODEBUG: fullpath=\"%s\"\n", lpBuffer);
|
|
||||||
|
OutTrace("LoadLibrary: RETRY fullpath=\"%s\"\n", lpBuffer);
|
||||||
libhandle=(*pLoadLibraryExA)(lpBuffer, hFile, dwFlags);
|
libhandle=(*pLoadLibraryExA)(lpBuffer, hFile, dwFlags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(IsWidechar)
|
||||||
|
OutTraceDW("%s: FileName=%ls hFile=%x Flags=%x(%s) hmodule=%x\n", api, lpFileName, hFile, dwFlags, ExplainLoadLibFlags(dwFlags), libhandle);
|
||||||
|
else
|
||||||
OutTraceDW("%s: FileName=%s hFile=%x Flags=%x(%s) hmodule=%x\n", api, lpFileName, hFile, dwFlags, ExplainLoadLibFlags(dwFlags), libhandle);
|
OutTraceDW("%s: FileName=%s hFile=%x Flags=%x(%s) hmodule=%x\n", api, lpFileName, hFile, dwFlags, ExplainLoadLibFlags(dwFlags), libhandle);
|
||||||
|
|
||||||
if(!libhandle){
|
if(!libhandle){
|
||||||
OutTraceE("%s: ERROR FileName=%s err=%d\n", api, lpFileName, GetLastError());
|
OutTraceE("%s: ERROR FileName=%s err=%d\n", api, lpFileName, GetLastError());
|
||||||
|
Recursed = FALSE;
|
||||||
return libhandle;
|
return libhandle;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -549,46 +571,45 @@ HMODULE WINAPI LoadLibraryExWrapper(LPCTSTR lpFileName, HANDLE hFile, DWORD dwFl
|
|||||||
// there's no symbol map, then itìs no possible to hook function calls.
|
// there's no symbol map, then itìs no possible to hook function calls.
|
||||||
if(dwFlags & (LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE|LOAD_LIBRARY_AS_DATAFILE)) return libhandle;
|
if(dwFlags & (LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE|LOAD_LIBRARY_AS_DATAFILE)) return libhandle;
|
||||||
|
|
||||||
|
char *AnsiFileName;
|
||||||
|
if(IsWidechar){
|
||||||
|
static char sFileName[256+1];
|
||||||
|
wcstombs_s(NULL, sFileName, (LPCWSTR)lpFileName, 80);
|
||||||
|
AnsiFileName = sFileName;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
AnsiFileName = (char *)lpFileName;
|
||||||
|
|
||||||
idx=dxw.GetDLLIndex((char *)lpFileName);
|
idx=dxw.GetDLLIndex((char *)lpFileName);
|
||||||
if(idx != -1) {
|
if(idx != -1) {
|
||||||
OutTraceDW("%s: push idx=%x library=%s hdl=%x\n", api, idx, lpFileName, libhandle);
|
OutTraceDW("%s: push idx=%x library=%s hdl=%x\n", api, idx, AnsiFileName, libhandle);
|
||||||
SysLibs[idx]=libhandle;
|
SysLibs[idx]=libhandle;
|
||||||
}
|
}
|
||||||
// handle custom OpenGL library
|
// handle custom OpenGL library
|
||||||
if(!lstrcmpi(lpFileName,dxw.CustomOpenGLLib)){
|
if(!lstrcmpi(AnsiFileName,dxw.CustomOpenGLLib)){
|
||||||
idx=SYSLIBIDX_OPENGL;
|
idx=SYSLIBIDX_OPENGL;
|
||||||
SysLibs[idx]=libhandle;
|
SysLibs[idx]=libhandle;
|
||||||
}
|
}
|
||||||
if (idx == -1) {
|
if (idx == -1) {
|
||||||
OutTraceDW("%s: hooking lib=\"%s\" handle=%x\n", api, lpFileName, libhandle);
|
OutTraceDW("%s: hooking lib=\"%s\" handle=%x\n", api, AnsiFileName, libhandle);
|
||||||
HookModule(libhandle, 0);
|
HookModule(libhandle, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Recursed = FALSE;
|
||||||
return libhandle;
|
return libhandle;
|
||||||
}
|
}
|
||||||
|
|
||||||
HMODULE WINAPI extLoadLibraryA(LPCTSTR lpFileName)
|
HMODULE WINAPI extLoadLibraryA(LPCTSTR lpFileName)
|
||||||
{
|
{ return LoadLibraryExWrapper((LPVOID)lpFileName, FALSE, NULL, 0, "LoadLibraryA"); }
|
||||||
return LoadLibraryExWrapper(lpFileName, NULL, 0, "LoadLibraryA");
|
|
||||||
}
|
|
||||||
|
|
||||||
HMODULE WINAPI extLoadLibraryW(LPCWSTR lpFileName)
|
HMODULE WINAPI extLoadLibraryW(LPCWSTR lpFileName)
|
||||||
{
|
{ return LoadLibraryExWrapper((LPVOID)lpFileName, TRUE, NULL, 0, "LoadLibraryW"); }
|
||||||
char sFileName[256+1];
|
|
||||||
wcstombs_s(NULL, sFileName, lpFileName, 80);
|
|
||||||
return LoadLibraryExWrapper(sFileName, NULL, 0, "LoadLibraryW");;
|
|
||||||
}
|
|
||||||
|
|
||||||
HMODULE WINAPI extLoadLibraryExA(LPCTSTR lpFileName, HANDLE hFile, DWORD dwFlags)
|
HMODULE WINAPI extLoadLibraryExA(LPCTSTR lpFileName, HANDLE hFile, DWORD dwFlags)
|
||||||
{
|
{ return LoadLibraryExWrapper((LPVOID)lpFileName, FALSE, hFile, dwFlags, "LoadLibraryExA"); }
|
||||||
return LoadLibraryExWrapper(lpFileName, hFile, dwFlags, "LoadLibraryExA");
|
|
||||||
}
|
|
||||||
|
|
||||||
HMODULE WINAPI extLoadLibraryExW(LPCWSTR lpFileName, HANDLE hFile, DWORD dwFlags)
|
HMODULE WINAPI extLoadLibraryExW(LPCWSTR lpFileName, HANDLE hFile, DWORD dwFlags)
|
||||||
{
|
{ return LoadLibraryExWrapper((LPVOID)lpFileName, TRUE, hFile, dwFlags, "LoadLibraryExW"); }
|
||||||
char sFileName[256+1];
|
|
||||||
wcstombs_s(NULL, sFileName, lpFileName, 80);
|
|
||||||
return LoadLibraryExWrapper(sFileName, hFile, dwFlags, "LoadLibraryExW");;
|
|
||||||
}
|
|
||||||
|
|
||||||
extern DirectDrawCreate_Type pDirectDrawCreate;
|
extern DirectDrawCreate_Type pDirectDrawCreate;
|
||||||
extern DirectDrawCreateEx_Type pDirectDrawCreateEx;
|
extern DirectDrawCreateEx_Type pDirectDrawCreateEx;
|
||||||
|
@ -10,9 +10,9 @@
|
|||||||
#include "msvfwhook.h"
|
#include "msvfwhook.h"
|
||||||
#undef DXWDECLARATIONS
|
#undef DXWDECLARATIONS
|
||||||
|
|
||||||
typedef DWORD (WINAPI *ICDrawBegin_Type)(HIC, DWORD, HPALETTE, HWND, HDC, int, int, int, int, LPBITMAPINFOHEADER, int, int, int, int, DWORD, DWORD);
|
typedef DWORD (WINAPIV *ICDrawBegin_Type)(HIC, DWORD, HPALETTE, HWND, HDC, int, int, int, int, LPBITMAPINFOHEADER, int, int, int, int, DWORD, DWORD);
|
||||||
ICDrawBegin_Type pICDrawBegin = NULL;
|
ICDrawBegin_Type pICDrawBegin = NULL;
|
||||||
DWORD WINAPI extICDrawBegin(HIC, DWORD, HPALETTE, HWND, HDC, int, int, int, int, LPBITMAPINFOHEADER, int, int, int, int, DWORD, DWORD);
|
DWORD WINAPIV extICDrawBegin(HIC, DWORD, HPALETTE, HWND, HDC, int, int, int, int, LPBITMAPINFOHEADER, int, int, int, int, DWORD, DWORD);
|
||||||
typedef BOOL (WINAPI *DrawDibDraw_Type)(HDRAWDIB, HDC, int, int, int, int, LPBITMAPINFOHEADER, LPVOID, int, int, int, int, UINT);
|
typedef BOOL (WINAPI *DrawDibDraw_Type)(HDRAWDIB, HDC, int, int, int, int, LPBITMAPINFOHEADER, LPVOID, int, int, int, int, UINT);
|
||||||
DrawDibDraw_Type pDrawDibDraw = NULL;
|
DrawDibDraw_Type pDrawDibDraw = NULL;
|
||||||
BOOL WINAPI extDrawDibDraw(HDRAWDIB, HDC, int, int, int, int, LPBITMAPINFOHEADER, LPVOID, int, int, int, int, UINT);
|
BOOL WINAPI extDrawDibDraw(HDRAWDIB, HDC, int, int, int, int, LPBITMAPINFOHEADER, LPVOID, int, int, int, int, UINT);
|
||||||
@ -34,7 +34,7 @@ static HookEntryEx_Type Hooks[]={
|
|||||||
//{HOOK_HOT_CANDIDATE, 0, "ICOpen", (FARPROC)NULL, (FARPROC *)&pICOpen, (FARPROC)extICOpen},
|
//{HOOK_HOT_CANDIDATE, 0, "ICOpen", (FARPROC)NULL, (FARPROC *)&pICOpen, (FARPROC)extICOpen},
|
||||||
{HOOK_HOT_CANDIDATE, 0, "MCIWndCreateA", (FARPROC)NULL, (FARPROC *)&pMCIWndCreateA, (FARPROC)extMCIWndCreateA}, // "Man in Black" - beware: this is NOT STDCALL!!!
|
{HOOK_HOT_CANDIDATE, 0, "MCIWndCreateA", (FARPROC)NULL, (FARPROC *)&pMCIWndCreateA, (FARPROC)extMCIWndCreateA}, // "Man in Black" - beware: this is NOT STDCALL!!!
|
||||||
{HOOK_HOT_CANDIDATE, 0, "ICGetDisplayFormat", (FARPROC)NULL, (FARPROC *)&pICGetDisplayFormat, (FARPROC)extICGetDisplayFormat}, // "Man in Black" - beware: this is NOT STDCALL!!!
|
{HOOK_HOT_CANDIDATE, 0, "ICGetDisplayFormat", (FARPROC)NULL, (FARPROC *)&pICGetDisplayFormat, (FARPROC)extICGetDisplayFormat}, // "Man in Black" - beware: this is NOT STDCALL!!!
|
||||||
{HOOK_HOT_CANDIDATE, 0, "ICDrawBegin", (FARPROC)NULL, (FARPROC *)&pICDrawBegin, (FARPROC)extICDrawBegin},
|
{HOOK_HOT_CANDIDATE, 0, "ICDrawBegin", (FARPROC)NULL, (FARPROC *)&pICDrawBegin, (FARPROC)extICDrawBegin}, // AoE demo: not a STDCALL !!
|
||||||
{HOOK_HOT_CANDIDATE, 0, "DrawDibDraw", (FARPROC)NULL, (FARPROC *)&pDrawDibDraw, (FARPROC)extDrawDibDraw},
|
{HOOK_HOT_CANDIDATE, 0, "DrawDibDraw", (FARPROC)NULL, (FARPROC *)&pDrawDibDraw, (FARPROC)extDrawDibDraw},
|
||||||
{HOOK_HOT_CANDIDATE, 0, "DrawDibBegin", (FARPROC)NULL, (FARPROC *)&pDrawDibBegin, (FARPROC)extDrawDibBegin},
|
{HOOK_HOT_CANDIDATE, 0, "DrawDibBegin", (FARPROC)NULL, (FARPROC *)&pDrawDibBegin, (FARPROC)extDrawDibBegin},
|
||||||
{HOOK_HOT_CANDIDATE, 0, "DrawDibStart", (FARPROC)NULL, (FARPROC *)&pDrawDibStart, (FARPROC)extDrawDibStart},
|
{HOOK_HOT_CANDIDATE, 0, "DrawDibStart", (FARPROC)NULL, (FARPROC *)&pDrawDibStart, (FARPROC)extDrawDibStart},
|
||||||
@ -237,7 +237,7 @@ HIC WINAPI extICGetDisplayFormat(HIC hic, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINF
|
|||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
DWORD WINAPI extICDrawBegin(HIC hic, DWORD dwFlags, HPALETTE hpal, HWND hwnd, HDC hdc, int xDst, int yDst, int dxDst, int dyDst, LPBITMAPINFOHEADER lpbi, int xSrc, int ySrc, int dxSrc, int dySrc, DWORD dwRate, DWORD dwScale)
|
DWORD WINAPIV extICDrawBegin(HIC hic, DWORD dwFlags, HPALETTE hpal, HWND hwnd, HDC hdc, int xDst, int yDst, int dxDst, int dyDst, LPBITMAPINFOHEADER lpbi, int xSrc, int ySrc, int dxSrc, int dySrc, DWORD dwRate, DWORD dwScale)
|
||||||
{
|
{
|
||||||
OutTrace("ICDrawBegin\n");
|
OutTrace("ICDrawBegin\n");
|
||||||
|
|
||||||
@ -253,6 +253,7 @@ BOOL WINAPI extDrawDibDraw(HDRAWDIB hdd, HDC hdc, int xDst, int yDst, int dxDst,
|
|||||||
ret = (*pDrawDibDraw)(hdd, hdc, xDst, yDst, dxDst, dyDst, lpbi, lpBits, xSrc, ySrc, dxSrc, dySrc, wFlags);
|
ret = (*pDrawDibDraw)(hdd, hdc, xDst, yDst, dxDst, dyDst, lpbi, lpBits, xSrc, ySrc, dxSrc, dySrc, wFlags);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL WINAPI extDrawDibBegin(HDRAWDIB hdd, HDC hdc, int dxDest, int dyDest, LPBITMAPINFOHEADER lpbi, int dxSrc, int dySrc, UINT wFlags)
|
BOOL WINAPI extDrawDibBegin(HDRAWDIB hdd, HDC hdc, int dxDest, int dyDest, LPBITMAPINFOHEADER lpbi, int dxSrc, int dySrc, UINT wFlags)
|
||||||
{
|
{
|
||||||
// Reah game transitions
|
// Reah game transitions
|
||||||
|
@ -342,12 +342,11 @@ void HookUser32(HMODULE hModule)
|
|||||||
{
|
{
|
||||||
|
|
||||||
HookLibraryEx(hModule, Hooks, libname);
|
HookLibraryEx(hModule, Hooks, libname);
|
||||||
|
HookLibraryEx(hModule, WinHooks, libname);
|
||||||
|
|
||||||
if (dxw.GDIEmulationMode != GDIMODE_NONE) HookLibraryEx(hModule, SyscallHooks, libname);
|
if (dxw.GDIEmulationMode != GDIMODE_NONE) HookLibraryEx(hModule, SyscallHooks, libname);
|
||||||
if (dxw.dwFlags2 & GDISTRETCHED) HookLibraryEx(hModule, ScaledHooks, libname);
|
if (dxw.dwFlags2 & GDISTRETCHED) HookLibraryEx(hModule, ScaledHooks, libname);
|
||||||
|
|
||||||
if (dxw.dwFlags1 & CLIENTREMAPPING) HookLibraryEx(hModule, RemapHooks, libname);
|
if (dxw.dwFlags1 & CLIENTREMAPPING) HookLibraryEx(hModule, RemapHooks, libname);
|
||||||
//if (dxw.dwFlags1 & (PREVENTMAXIMIZE|FIXWINFRAME|LOCKWINPOS|LOCKWINSTYLE)) HookLibraryEx(hModule, WinHooks, libname);
|
|
||||||
HookLibraryEx(hModule, WinHooks, libname);
|
|
||||||
if ((dxw.dwFlags1 & (MODIFYMOUSE|SLOWDOWN|KEEPCURSORWITHIN)) || (dxw.dwFlags2 & KEEPCURSORFIXED)) HookLibraryEx(hModule, MouseHooks, libname);
|
if ((dxw.dwFlags1 & (MODIFYMOUSE|SLOWDOWN|KEEPCURSORWITHIN)) || (dxw.dwFlags2 & KEEPCURSORFIXED)) HookLibraryEx(hModule, MouseHooks, libname);
|
||||||
if (dxw.dwFlags3 & PEEKALLMESSAGES) HookLibraryEx(hModule, PeekAllHooks, libname);
|
if (dxw.dwFlags3 & PEEKALLMESSAGES) HookLibraryEx(hModule, PeekAllHooks, libname);
|
||||||
if (dxw.dwFlags2 & TIMESTRETCH) HookLibraryEx(hModule, TimeHooks, libname);
|
if (dxw.dwFlags2 & TIMESTRETCH) HookLibraryEx(hModule, TimeHooks, libname);
|
||||||
@ -370,14 +369,15 @@ FARPROC Remap_user32_ProcAddress(LPCSTR proc, HMODULE hModule)
|
|||||||
{
|
{
|
||||||
FARPROC addr;
|
FARPROC addr;
|
||||||
if (addr=RemapLibraryEx(proc, hModule, Hooks)) return addr;
|
if (addr=RemapLibraryEx(proc, hModule, Hooks)) return addr;
|
||||||
if (dxw.dwFlags1 & CLIENTREMAPPING) if (addr=RemapLibraryEx(proc, hModule, RemapHooks)) return addr;
|
if (addr=RemapLibraryEx(proc, hModule, WinHooks)) return addr;
|
||||||
if (dxw.GDIEmulationMode != GDIMODE_NONE) if(addr=RemapLibraryEx(proc, hModule, SyscallHooks)) return addr;
|
|
||||||
|
|
||||||
if (dxw.dwFlags2 & GDISTRETCHED)
|
if (dxw.dwFlags1 & CLIENTREMAPPING)
|
||||||
|
if (addr=RemapLibraryEx(proc, hModule, RemapHooks)) return addr;
|
||||||
|
if (dxw.GDIEmulationMode != GDIMODE_NONE)
|
||||||
|
if(addr=RemapLibraryEx(proc, hModule, SyscallHooks)) return addr;
|
||||||
|
if (dxw.dwFlags2 & GDISTRETCHED)
|
||||||
if (addr=RemapLibraryEx(proc, hModule, ScaledHooks)) return addr;
|
if (addr=RemapLibraryEx(proc, hModule, ScaledHooks)) return addr;
|
||||||
if (dxw.dwFlags1 & (PREVENTMAXIMIZE|FIXWINFRAME|LOCKWINPOS|LOCKWINSTYLE))
|
if ((dxw.dwFlags1 & (MODIFYMOUSE|SLOWDOWN|KEEPCURSORWITHIN)) || (dxw.dwFlags2 & KEEPCURSORFIXED))
|
||||||
if (addr=RemapLibraryEx(proc, hModule, WinHooks)) return addr;
|
|
||||||
if ((dxw.dwFlags1 & (MODIFYMOUSE|SLOWDOWN|KEEPCURSORWITHIN)) || (dxw.dwFlags2 & KEEPCURSORFIXED))
|
|
||||||
if (addr=RemapLibraryEx(proc, hModule, MouseHooks)) return addr;
|
if (addr=RemapLibraryEx(proc, hModule, MouseHooks)) return addr;
|
||||||
if (dxw.dwFlags3 & PEEKALLMESSAGES)
|
if (dxw.dwFlags3 & PEEKALLMESSAGES)
|
||||||
if (addr=RemapLibraryEx(proc, hModule, PeekAllHooks)) return addr;
|
if (addr=RemapLibraryEx(proc, hModule, PeekAllHooks)) return addr;
|
||||||
@ -536,13 +536,31 @@ void dxwFixWindowPos(char *ApiName, HWND hwnd, LPARAM lParam)
|
|||||||
if(wp->cx>MaxPos.cx) { wp->cx=MaxPos.cx; UpdFlag=1; }
|
if(wp->cx>MaxPos.cx) { wp->cx=MaxPos.cx; UpdFlag=1; }
|
||||||
if(wp->cy>MaxPos.cy) { wp->cy=MaxPos.cy; UpdFlag=1; }
|
if(wp->cy>MaxPos.cy) { wp->cy=MaxPos.cy; UpdFlag=1; }
|
||||||
if (UpdFlag)
|
if (UpdFlag)
|
||||||
OutTraceDW("%s: SET max dim=(%d,%d)\n", ApiName, wp->cx, wp->cy);
|
OutTraceDW("%s: SET max size=(%dx%d)\n", ApiName, wp->cx, wp->cy);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((dxw.dwFlags1 & LOCKWINPOS) && dxw.IsFullScreen() && (hwnd==dxw.GethWnd())){
|
if (dxw.IsFullScreen() && (hwnd==dxw.GethWnd())){
|
||||||
dxw.CalculateWindowPos(hwnd, MaxX, MaxY, wp);
|
if (dxw.dwFlags1 & LOCKWINPOS){
|
||||||
OutTraceDW("%s: LOCK pos=(%d,%d) dim=(%d,%d)\n", ApiName, wp->x, wp->y, wp->cx, wp->cy);
|
dxw.CalculateWindowPos(hwnd, MaxX, MaxY, wp);
|
||||||
}
|
OutTraceDW("%s: LOCK pos=(%d,%d) size=(%dx%d)\n", ApiName, wp->x, wp->y, wp->cx, wp->cy);
|
||||||
|
}
|
||||||
|
// v2.03.95: locked size
|
||||||
|
if (dxw.dwFlags2 & LOCKEDSIZE){
|
||||||
|
WINDOWPOS MaxPos;
|
||||||
|
dxw.CalculateWindowPos(hwnd, MaxX, MaxY, &MaxPos);
|
||||||
|
wp->cx = MaxPos.cx;
|
||||||
|
wp->cy = MaxPos.cy;
|
||||||
|
OutTraceDW("%s: SET locked size=(%dx%d)\n", ApiName, wp->cx, wp->cy);
|
||||||
|
}
|
||||||
|
if (dxw.dwFlags7 & ANCHORED){
|
||||||
|
WINDOWPOS MaxPos;
|
||||||
|
dxw.CalculateWindowPos(hwnd, MaxX, MaxY, &MaxPos);
|
||||||
|
wp->cx = MaxPos.cx;
|
||||||
|
wp->cy = MaxPos.cy;
|
||||||
|
wp->x = MaxPos.x;
|
||||||
|
wp->y = MaxPos.y;
|
||||||
|
OutTraceDW("%s: SET anchored pos=(%d,%d) size=(%dx%d)\n", ApiName, wp->x, wp->y, wp->cx, wp->cy);
|
||||||
|
} }
|
||||||
|
|
||||||
if ((dxw.dwFlags2 & KEEPASPECTRATIO) && dxw.IsFullScreen() && (hwnd==dxw.GethWnd())){
|
if ((dxw.dwFlags2 & KEEPASPECTRATIO) && dxw.IsFullScreen() && (hwnd==dxw.GethWnd())){
|
||||||
// note: while keeping aspect ration, resizing from one corner doesn't tell
|
// note: while keeping aspect ration, resizing from one corner doesn't tell
|
||||||
@ -739,6 +757,8 @@ BOOL WINAPI extShowWindow(HWND hwnd, int nCmdShow)
|
|||||||
{
|
{
|
||||||
BOOL res;
|
BOOL res;
|
||||||
extern HWND hTrayWnd;
|
extern HWND hTrayWnd;
|
||||||
|
static long iLastSizX, iLastSizY;
|
||||||
|
//static long iLastPosX, iLastPosY;
|
||||||
|
|
||||||
OutTraceDW("ShowWindow: hwnd=%x, CmdShow=%x(%s)\n", hwnd, nCmdShow, ExplainShowCmd(nCmdShow));
|
OutTraceDW("ShowWindow: hwnd=%x, CmdShow=%x(%s)\n", hwnd, nCmdShow, ExplainShowCmd(nCmdShow));
|
||||||
|
|
||||||
@ -765,6 +785,25 @@ BOOL WINAPI extShowWindow(HWND hwnd, int nCmdShow)
|
|||||||
}
|
}
|
||||||
|
|
||||||
res=(*pShowWindow)(hwnd, nCmdShow);
|
res=(*pShowWindow)(hwnd, nCmdShow);
|
||||||
|
// v2.03.95: force zero size when minimize and drefresh window coordinates
|
||||||
|
if(hwnd == dxw.GethWnd()){
|
||||||
|
if(nCmdShow==SW_MINIMIZE) {
|
||||||
|
iLastSizX = dxw.iSizX;
|
||||||
|
iLastSizY = dxw.iSizY;
|
||||||
|
//iLastPosX = dxw.iPosX;
|
||||||
|
//iLastPosY = dxw.iPosY;
|
||||||
|
dxw.iSizX = dxw.iSizY = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if((dxw.iSizX == 0) && (dxw.iSizY == 0)){
|
||||||
|
dxw.iSizX = iLastSizX;
|
||||||
|
dxw.iSizY = iLastSizY;
|
||||||
|
//dxw.iPosX = iLastPosX;
|
||||||
|
//dxw.iPosY = iLastPosY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//dxw.UpdateDesktopCoordinates();
|
||||||
OutTraceDW("ShowWindow: res=%x\n", res);
|
OutTraceDW("ShowWindow: res=%x\n", res);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
@ -3012,12 +3051,33 @@ BOOL WINAPI extUpdateWindow(HWND hwnd)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char *sRedrawFlags(UINT flags)
|
||||||
|
{
|
||||||
|
static char s[256];
|
||||||
|
strcpy(s, "RDW_");
|
||||||
|
if(flags & RDW_ERASE) strcat(s, "ERASE+");
|
||||||
|
if(flags & RDW_FRAME) strcat(s, "FRAME+");
|
||||||
|
if(flags & RDW_INTERNALPAINT) strcat(s, "INTERNALPAINT+");
|
||||||
|
if(flags & RDW_INVALIDATE) strcat(s, "INVALIDATE+");
|
||||||
|
if(flags & RDW_NOERASE) strcat(s, "NOERASE+");
|
||||||
|
if(flags & RDW_NOFRAME) strcat(s, "NOFRAME+");
|
||||||
|
if(flags & RDW_NOINTERNALPAINT) strcat(s, "NOINTERNALPAINT+");
|
||||||
|
if(flags & RDW_VALIDATE) strcat(s, "VALIDATE+");
|
||||||
|
if(flags & RDW_ERASENOW) strcat(s, "ERASENOW+");
|
||||||
|
if(flags & RDW_UPDATENOW) strcat(s, "UPDATENOW+");
|
||||||
|
if(flags & RDW_ALLCHILDREN) strcat(s, "ALLCHILDREN+");
|
||||||
|
if(flags & RDW_NOCHILDREN) strcat(s, "NOCHILDREN+");
|
||||||
|
if(strlen(s)>strlen("RDW_")) s[strlen(s)-1]=0;
|
||||||
|
else s[0]=0;
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
BOOL WINAPI extRedrawWindow(HWND hWnd, const RECT *lprcUpdate, HRGN hrgnUpdate, UINT flags)
|
BOOL WINAPI extRedrawWindow(HWND hWnd, const RECT *lprcUpdate, HRGN hrgnUpdate, UINT flags)
|
||||||
{
|
{
|
||||||
RECT rcUpdate;
|
RECT rcUpdate;
|
||||||
BOOL ret;
|
BOOL ret;
|
||||||
|
|
||||||
OutTraceDW("RedrawWindow: hwnd=%x hrgn=%x flags=%x\n", hWnd, hrgnUpdate, flags);
|
OutTraceDW("RedrawWindow: hwnd=%x hrgn=%x flags=%x(%s)\n", hWnd, hrgnUpdate, flags, sRedrawFlags(flags));
|
||||||
|
|
||||||
// v2.03.64 fix: if hrgnUpdate is set, lprcUpdate is ignored, so it can't be scaled
|
// v2.03.64 fix: if hrgnUpdate is set, lprcUpdate is ignored, so it can't be scaled
|
||||||
// beware: they both could be null, and that means the whole window
|
// beware: they both could be null, and that means the whole window
|
||||||
|
@ -40,6 +40,18 @@ MMRESULT WINAPI extjoyGetPos(DWORD, LPJOYINFO);
|
|||||||
typedef MMRESULT (WINAPI *auxGetNumDevs_Type)(void);
|
typedef MMRESULT (WINAPI *auxGetNumDevs_Type)(void);
|
||||||
auxGetNumDevs_Type pauxGetNumDevs = NULL;
|
auxGetNumDevs_Type pauxGetNumDevs = NULL;
|
||||||
MMRESULT WINAPI extauxGetNumDevs(void);
|
MMRESULT WINAPI extauxGetNumDevs(void);
|
||||||
|
typedef BOOL (WINAPI *mciGetErrorStringA_Type)(DWORD, LPCSTR, UINT);
|
||||||
|
mciGetErrorStringA_Type pmciGetErrorStringA;
|
||||||
|
BOOL WINAPI extmciGetErrorStringA(DWORD, LPCSTR, UINT);
|
||||||
|
typedef MMRESULT (WINAPI *mixerGetLineControlsA_Type)(HMIXEROBJ, LPMIXERLINECONTROLS, DWORD);
|
||||||
|
mixerGetLineControlsA_Type pmixerGetLineControlsA;
|
||||||
|
MMRESULT WINAPI extmixerGetLineControlsA(HMIXEROBJ, LPMIXERLINECONTROLS, DWORD);
|
||||||
|
typedef UINT (WINAPI *waveOutGetNumDevs_Type)(void);
|
||||||
|
waveOutGetNumDevs_Type pwaveOutGetNumDevs;
|
||||||
|
UINT WINAPI extwaveOutGetNumDevs(void);
|
||||||
|
typedef UINT (WINAPI *mixerGetNumDevs_Type)(void);
|
||||||
|
mixerGetNumDevs_Type pmixerGetNumDevs;
|
||||||
|
UINT WINAPI extmixerGetNumDevs(void);
|
||||||
|
|
||||||
static HookEntryEx_Type Hooks[]={
|
static HookEntryEx_Type Hooks[]={
|
||||||
{HOOK_IAT_CANDIDATE, 0, "mciSendCommandA", NULL, (FARPROC *)&pmciSendCommandA, (FARPROC)extmciSendCommandA},
|
{HOOK_IAT_CANDIDATE, 0, "mciSendCommandA", NULL, (FARPROC *)&pmciSendCommandA, (FARPROC)extmciSendCommandA},
|
||||||
@ -71,12 +83,22 @@ static HookEntryEx_Type JoyHooks[]={
|
|||||||
{HOOK_IAT_CANDIDATE, 0, 0, NULL, 0, 0} // terminator
|
{HOOK_IAT_CANDIDATE, 0, 0, NULL, 0, 0} // terminator
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static HookEntryEx_Type DebugHooks[]={
|
||||||
|
{HOOK_IAT_CANDIDATE, 0, "mciGetErrorStringA", NULL, (FARPROC *)&pmciGetErrorStringA, (FARPROC)extmciGetErrorStringA},
|
||||||
|
{HOOK_IAT_CANDIDATE, 0, "mixerGetLineControlsA", NULL, (FARPROC *)&pmixerGetLineControlsA, (FARPROC)extmixerGetLineControlsA},
|
||||||
|
{HOOK_IAT_CANDIDATE, 0, "waveOutGetNumDevs", NULL, (FARPROC *)&pwaveOutGetNumDevs, (FARPROC)extwaveOutGetNumDevs},
|
||||||
|
{HOOK_IAT_CANDIDATE, 0, "auxGetNumDevs", NULL, (FARPROC *)&pauxGetNumDevs, (FARPROC)extauxGetNumDevs},
|
||||||
|
{HOOK_IAT_CANDIDATE, 0, "mixerGetNumDevs", NULL, (FARPROC *)&pmixerGetNumDevs, (FARPROC)extmixerGetNumDevs},
|
||||||
|
{HOOK_IAT_CANDIDATE, 0, 0, NULL, 0, 0} // terminator
|
||||||
|
};
|
||||||
|
|
||||||
void HookWinMM(HMODULE module, char *libname)
|
void HookWinMM(HMODULE module, char *libname)
|
||||||
{
|
{
|
||||||
HookLibraryEx(module, Hooks, libname);
|
HookLibraryEx(module, Hooks, libname);
|
||||||
if(dxw.dwFlags2 & TIMESTRETCH) HookLibraryEx(module, TimeHooks, libname);
|
if(dxw.dwFlags2 & TIMESTRETCH) HookLibraryEx(module, TimeHooks, libname);
|
||||||
if(dxw.dwFlags5 & REMAPMCI) HookLibraryEx(module, RemapHooks, libname);
|
if(dxw.dwFlags5 & REMAPMCI) HookLibraryEx(module, RemapHooks, libname);
|
||||||
if(dxw.dwFlags6 & VIRTUALJOYSTICK) HookLibraryEx(module, JoyHooks, libname);
|
if(dxw.dwFlags6 & VIRTUALJOYSTICK) HookLibraryEx(module, JoyHooks, libname);
|
||||||
|
if(IsDebug) HookLibraryEx(module, DebugHooks, libname);
|
||||||
}
|
}
|
||||||
|
|
||||||
FARPROC Remap_WinMM_ProcAddress(LPCSTR proc, HMODULE hModule)
|
FARPROC Remap_WinMM_ProcAddress(LPCSTR proc, HMODULE hModule)
|
||||||
@ -90,6 +112,8 @@ FARPROC Remap_WinMM_ProcAddress(LPCSTR proc, HMODULE hModule)
|
|||||||
if (addr=RemapLibraryEx(proc, hModule, RemapHooks)) return addr;
|
if (addr=RemapLibraryEx(proc, hModule, RemapHooks)) return addr;
|
||||||
if(dxw.dwFlags6 & VIRTUALJOYSTICK)
|
if(dxw.dwFlags6 & VIRTUALJOYSTICK)
|
||||||
if (addr=RemapLibraryEx(proc, hModule, JoyHooks)) return addr;
|
if (addr=RemapLibraryEx(proc, hModule, JoyHooks)) return addr;
|
||||||
|
if(IsDebug)
|
||||||
|
if (addr=RemapLibraryEx(proc, hModule, DebugHooks)) return addr;
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -651,9 +675,42 @@ static void ShowJoystick(LONG x, LONG y, DWORD dwButtons)
|
|||||||
DeleteDC(hdcMem);
|
DeleteDC(hdcMem);
|
||||||
}
|
}
|
||||||
|
|
||||||
// dangerous thing to do: it interferes with "Imperialism II" !!!
|
|
||||||
MMRESULT WINAPI extauxGetNumDevs(void)
|
MMRESULT WINAPI extauxGetNumDevs(void)
|
||||||
{
|
{
|
||||||
OutTraceDW("auxGetNumDevs: returning fake 1\n");
|
UINT ret;
|
||||||
return 1;
|
ret = (*pauxGetNumDevs)();
|
||||||
|
OutTrace("auxGetNumDevs: ret=%d\n", ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL WINAPI extmciGetErrorStringA(DWORD fdwError, LPCSTR lpszErrorText, UINT cchErrorText)
|
||||||
|
{
|
||||||
|
BOOL ret;
|
||||||
|
ret = (*pmciGetErrorStringA)(fdwError, lpszErrorText, cchErrorText);
|
||||||
|
OutTrace("mciGetErrorStringA: ret=%x err=%d text=(%d)\"%s\"\n", ret, fdwError, cchErrorText, lpszErrorText);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
MMRESULT WINAPI extmixerGetLineControlsA(HMIXEROBJ hmxobj, LPMIXERLINECONTROLS pmxlc, DWORD fdwControls)
|
||||||
|
{
|
||||||
|
MMRESULT ret;
|
||||||
|
ret = (*pmixerGetLineControlsA)(hmxobj, pmxlc, fdwControls);
|
||||||
|
OutTrace("mixerGetLineControlsA: ret=%x hmxobj=%x Controls=%x\n", ret, hmxobj, fdwControls);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
UINT WINAPI extwaveOutGetNumDevs(void)
|
||||||
|
{
|
||||||
|
UINT ret;
|
||||||
|
ret = (*pwaveOutGetNumDevs)();
|
||||||
|
OutTrace("waveOutGetNumDevs: ret=%d\n", ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
UINT WINAPI extmixerGetNumDevs(void)
|
||||||
|
{
|
||||||
|
UINT ret;
|
||||||
|
ret = (*pmixerGetNumDevs)();
|
||||||
|
OutTrace("mixerGetNumDevs: ret=%d\n", ret);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,10 @@ void CTabDirect3D::DoDataExchange(CDataExchange* pDX)
|
|||||||
DDX_Check(pDX, IDC_SUPPRESSD3DEXT, cTarget->m_SuppressD3DExt);
|
DDX_Check(pDX, IDC_SUPPRESSD3DEXT, cTarget->m_SuppressD3DExt);
|
||||||
DDX_Check(pDX, IDC_ENUM16BITMODES, cTarget->m_Enum16bitModes);
|
DDX_Check(pDX, IDC_ENUM16BITMODES, cTarget->m_Enum16bitModes);
|
||||||
|
|
||||||
|
// Direct3D window tweaks
|
||||||
|
DDX_Check(pDX, IDC_FIXD3DFRAME, cTarget->m_FixD3DFrame);
|
||||||
|
DDX_Check(pDX, IDC_NOWINDOWMOVE, cTarget->m_NoWindowMove);
|
||||||
|
|
||||||
// Texture management
|
// Texture management
|
||||||
DDX_Radio(pDX, IDC_TEXTURENONE, cTarget->m_TextureHandling);
|
DDX_Radio(pDX, IDC_TEXTURENONE, cTarget->m_TextureHandling);
|
||||||
|
|
||||||
|
@ -32,26 +32,24 @@ void CTabWindow::DoDataExchange(CDataExchange* pDX)
|
|||||||
// window management
|
// window management
|
||||||
DDX_Check(pDX, IDC_FIXWINFRAME, cTarget->m_FixWinFrame);
|
DDX_Check(pDX, IDC_FIXWINFRAME, cTarget->m_FixWinFrame);
|
||||||
DDX_Check(pDX, IDC_PREVENTMAXIMIZE, cTarget->m_PreventMaximize);
|
DDX_Check(pDX, IDC_PREVENTMAXIMIZE, cTarget->m_PreventMaximize);
|
||||||
DDX_Check(pDX, IDC_LOCKWINPOS, cTarget->m_LockWinPos);
|
|
||||||
DDX_Check(pDX, IDC_LOCKWINSTYLE, cTarget->m_LockWinStyle);
|
DDX_Check(pDX, IDC_LOCKWINSTYLE, cTarget->m_LockWinStyle);
|
||||||
DDX_Check(pDX, IDC_FIXPARENTWIN, cTarget->m_FixParentWin);
|
DDX_Check(pDX, IDC_FIXPARENTWIN, cTarget->m_FixParentWin);
|
||||||
DDX_Check(pDX, IDC_MODALSTYLE, cTarget->m_ModalStyle);
|
DDX_Check(pDX, IDC_MODALSTYLE, cTarget->m_ModalStyle);
|
||||||
DDX_Check(pDX, IDC_FORCEWINRESIZE, cTarget->m_ForceWinResize);
|
DDX_Check(pDX, IDC_FORCEWINRESIZE, cTarget->m_ForceWinResize);
|
||||||
DDX_Check(pDX, IDC_HIDEMULTIMONITOR, cTarget->m_HideMultiMonitor);
|
DDX_Check(pDX, IDC_HIDEMULTIMONITOR, cTarget->m_HideMultiMonitor);
|
||||||
//DDX_Check(pDX, IDC_WALLPAPERMODE, cTarget->m_WallpaperMode);
|
|
||||||
DDX_Check(pDX, IDC_RECOVERSCREENMODE, cTarget->m_RecoverScreenMode);
|
DDX_Check(pDX, IDC_RECOVERSCREENMODE, cTarget->m_RecoverScreenMode);
|
||||||
DDX_Check(pDX, IDC_REFRESHONRESIZE, cTarget->m_RefreshOnResize);
|
DDX_Check(pDX, IDC_REFRESHONRESIZE, cTarget->m_RefreshOnResize);
|
||||||
DDX_Check(pDX, IDC_FIXD3DFRAME, cTarget->m_FixD3DFrame);
|
|
||||||
DDX_Check(pDX, IDC_NOWINDOWMOVE, cTarget->m_NoWindowMove);
|
|
||||||
DDX_Check(pDX, IDC_HIDETASKBAR, cTarget->m_HideTaskbar);
|
DDX_Check(pDX, IDC_HIDETASKBAR, cTarget->m_HideTaskbar);
|
||||||
DDX_Check(pDX, IDC_UNLOCKZORDER, cTarget->m_UnlockZOrder);
|
DDX_Check(pDX, IDC_UNLOCKZORDER, cTarget->m_UnlockZOrder);
|
||||||
DDX_Check(pDX, IDC_NODESTROYWINDOW, cTarget->m_NoDestroyWindow);
|
DDX_Check(pDX, IDC_NODESTROYWINDOW, cTarget->m_NoDestroyWindow);
|
||||||
DDX_Check(pDX, IDC_ACTIVATEAPP, cTarget->m_ActivateApp);
|
DDX_Check(pDX, IDC_ACTIVATEAPP, cTarget->m_ActivateApp);
|
||||||
|
|
||||||
|
DDX_Radio(pDX, IDC_FREEMOVE, cTarget->m_WinMovementType);
|
||||||
|
|
||||||
// color management
|
// color management
|
||||||
DDX_Radio(pDX, IDC_COLORCURRENT, cTarget->m_InitColorDepth);
|
DDX_Radio(pDX, IDC_COLORCURRENT, cTarget->m_InitColorDepth);
|
||||||
DDX_Check(pDX, IDC_DISABLEGAMMARAMP, cTarget->m_DisableGammaRamp);
|
DDX_Check(pDX, IDC_DISABLEGAMMARAMP, cTarget->m_DisableGammaRamp);
|
||||||
DDX_Check(pDX, IDC_FORCE16BPP, cTarget->m_Force16BPP);
|
//DDX_Check(pDX, IDC_FORCE16BPP, cTarget->m_Force16BPP);
|
||||||
DDX_Check(pDX, IDC_LOCKSYSCOLORS, cTarget->m_LockSysColors);
|
DDX_Check(pDX, IDC_LOCKSYSCOLORS, cTarget->m_LockSysColors);
|
||||||
DDX_Check(pDX, IDC_LOCKRESERVEDPALETTE, cTarget->m_LockReservedPalette);
|
DDX_Check(pDX, IDC_LOCKRESERVEDPALETTE, cTarget->m_LockReservedPalette);
|
||||||
|
|
||||||
|
@ -174,17 +174,15 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
|
|||||||
m_GDIColorConv = FALSE;
|
m_GDIColorConv = FALSE;
|
||||||
m_PreventMaximize = FALSE;
|
m_PreventMaximize = FALSE;
|
||||||
m_ClientRemapping = TRUE; // default true !!
|
m_ClientRemapping = TRUE; // default true !!
|
||||||
m_LockWinPos = FALSE;
|
|
||||||
m_LockWinStyle = FALSE;
|
m_LockWinStyle = FALSE;
|
||||||
m_FixParentWin = FALSE;
|
m_FixParentWin = FALSE;
|
||||||
m_ModalStyle = FALSE;
|
m_ModalStyle = FALSE;
|
||||||
m_KeepAspectRatio = FALSE;
|
m_KeepAspectRatio = FALSE;
|
||||||
m_ForceWinResize = FALSE;
|
m_ForceWinResize = FALSE;
|
||||||
m_HideMultiMonitor = FALSE;
|
m_HideMultiMonitor = FALSE;
|
||||||
//m_WallpaperMode = FALSE;
|
|
||||||
m_FixD3DFrame = FALSE;
|
m_FixD3DFrame = FALSE;
|
||||||
m_NoWindowMove = FALSE;
|
m_NoWindowMove = FALSE;
|
||||||
m_Force16BPP = FALSE;
|
//m_Force16BPP = FALSE;
|
||||||
m_HookChildWin = FALSE;
|
m_HookChildWin = FALSE;
|
||||||
m_MessageProc = FALSE;
|
m_MessageProc = FALSE;
|
||||||
//m_NoMouseProc = FALSE;
|
//m_NoMouseProc = FALSE;
|
||||||
@ -250,6 +248,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
|
|||||||
m_InitTS = 8;
|
m_InitTS = 8;
|
||||||
m_SwapEffect = 0;
|
m_SwapEffect = 0;
|
||||||
m_InjectionMode = 0;
|
m_InjectionMode = 0;
|
||||||
|
m_WinMovementType = 0;
|
||||||
//}}AFX_DATA_INIT
|
//}}AFX_DATA_INIT
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,7 @@ public:
|
|||||||
int m_SlowRatio;
|
int m_SlowRatio;
|
||||||
int m_LogMode;
|
int m_LogMode;
|
||||||
int m_MonitorId;
|
int m_MonitorId;
|
||||||
|
int m_WinMovementType;
|
||||||
BOOL m_HookDI;
|
BOOL m_HookDI;
|
||||||
BOOL m_HookDI8;
|
BOOL m_HookDI8;
|
||||||
BOOL m_EmulateRelMouse;
|
BOOL m_EmulateRelMouse;
|
||||||
@ -135,14 +136,12 @@ public:
|
|||||||
BOOL m_GDIColorConv;
|
BOOL m_GDIColorConv;
|
||||||
BOOL m_PreventMaximize;
|
BOOL m_PreventMaximize;
|
||||||
BOOL m_ClientRemapping;
|
BOOL m_ClientRemapping;
|
||||||
BOOL m_LockWinPos;
|
|
||||||
BOOL m_LockWinStyle;
|
BOOL m_LockWinStyle;
|
||||||
BOOL m_FixParentWin;
|
BOOL m_FixParentWin;
|
||||||
BOOL m_ModalStyle;
|
BOOL m_ModalStyle;
|
||||||
BOOL m_KeepAspectRatio;
|
BOOL m_KeepAspectRatio;
|
||||||
BOOL m_ForceWinResize;
|
BOOL m_ForceWinResize;
|
||||||
BOOL m_HideMultiMonitor;
|
BOOL m_HideMultiMonitor;
|
||||||
//BOOL m_WallpaperMode;
|
|
||||||
BOOL m_FixD3DFrame;
|
BOOL m_FixD3DFrame;
|
||||||
BOOL m_NoWindowMove;
|
BOOL m_NoWindowMove;
|
||||||
BOOL m_HookChildWin;
|
BOOL m_HookChildWin;
|
||||||
@ -253,7 +252,7 @@ public:
|
|||||||
BOOL m_BlackWhite;
|
BOOL m_BlackWhite;
|
||||||
BOOL m_SuppressD3DExt;
|
BOOL m_SuppressD3DExt;
|
||||||
BOOL m_Enum16bitModes;
|
BOOL m_Enum16bitModes;
|
||||||
BOOL m_Force16BPP;
|
//BOOL m_Force16BPP;
|
||||||
BOOL m_LimitScreenRes;
|
BOOL m_LimitScreenRes;
|
||||||
BOOL m_InitialRes;
|
BOOL m_InitialRes;
|
||||||
BOOL m_MaximumRes;
|
BOOL m_MaximumRes;
|
||||||
|
Binary file not shown.
@ -64,6 +64,8 @@ void CNewCommandLineInfo::ParseParam(LPCTSTR lpszParam, BOOL bFlag, BOOL bLast)
|
|||||||
// /e -- terminates (Ends) the active dxwnd session
|
// /e -- terminates (Ends) the active dxwnd session
|
||||||
// /r:<n> -- run the n-th game in configuration and terminate together with it
|
// /r:<n> -- run the n-th game in configuration and terminate together with it
|
||||||
// /a -- auto-hide mode while a game is running
|
// /a -- auto-hide mode while a game is running
|
||||||
|
// /q -- quiet mode, no error/message dialog boxes
|
||||||
|
|
||||||
if(bFlag) {
|
if(bFlag) {
|
||||||
CString sParam(lpszParam);
|
CString sParam(lpszParam);
|
||||||
if (sParam.MakeLower() == "t"){
|
if (sParam.MakeLower() == "t"){
|
||||||
|
Binary file not shown.
20
host/dxwndhost.vs2008.sln
Normal file
20
host/dxwndhost.vs2008.sln
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||||
|
# Visual Studio 2008
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dxwndhost", "dxwndhost.vs2008.vcproj", "{FD0B0234-8EC5-43C0-A384-1B881DD3D925}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Win32 = Debug|Win32
|
||||||
|
Release|Win32 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{FD0B0234-8EC5-43C0-A384-1B881DD3D925}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{FD0B0234-8EC5-43C0-A384-1B881DD3D925}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{FD0B0234-8EC5-43C0-A384-1B881DD3D925}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{FD0B0234-8EC5-43C0-A384-1B881DD3D925}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
Binary file not shown.
@ -302,6 +302,13 @@ void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
|
|||||||
case 3: t->tflags |= (OUTTRACE|OUTSEPARATED); break;
|
case 3: t->tflags |= (OUTTRACE|OUTSEPARATED); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch(dlg->m_WinMovementType){
|
||||||
|
case 0: break;
|
||||||
|
case 1: t->flags |= LOCKWINPOS; break;
|
||||||
|
case 2: t->flags |= LOCKWINPOS; t->flags2 |= LOCKEDSIZE; break;
|
||||||
|
case 3: t->flags |= LOCKWINPOS; t->flags7 |= ANCHORED; break;
|
||||||
|
}
|
||||||
|
|
||||||
if(dlg->m_HookDI) t->flags |= HOOKDI;
|
if(dlg->m_HookDI) t->flags |= HOOKDI;
|
||||||
if(dlg->m_HookDI8) t->flags |= HOOKDI8;
|
if(dlg->m_HookDI8) t->flags |= HOOKDI8;
|
||||||
if(dlg->m_EmulateRelMouse) t->flags6 |= EMULATERELMOUSE;
|
if(dlg->m_EmulateRelMouse) t->flags6 |= EMULATERELMOUSE;
|
||||||
@ -419,17 +426,15 @@ void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
|
|||||||
if(dlg->m_GDIColorConv) t->flags5 |= GDICOLORCONV;
|
if(dlg->m_GDIColorConv) t->flags5 |= GDICOLORCONV;
|
||||||
if(dlg->m_PreventMaximize) t->flags |= PREVENTMAXIMIZE;
|
if(dlg->m_PreventMaximize) t->flags |= PREVENTMAXIMIZE;
|
||||||
if(dlg->m_ClientRemapping) t->flags |= CLIENTREMAPPING;
|
if(dlg->m_ClientRemapping) t->flags |= CLIENTREMAPPING;
|
||||||
if(dlg->m_LockWinPos) t->flags |= LOCKWINPOS;
|
|
||||||
if(dlg->m_LockWinStyle) t->flags |= LOCKWINSTYLE;
|
if(dlg->m_LockWinStyle) t->flags |= LOCKWINSTYLE;
|
||||||
if(dlg->m_FixParentWin) t->flags |= FIXPARENTWIN;
|
if(dlg->m_FixParentWin) t->flags |= FIXPARENTWIN;
|
||||||
if(dlg->m_ModalStyle) t->flags2 |= MODALSTYLE;
|
if(dlg->m_ModalStyle) t->flags2 |= MODALSTYLE;
|
||||||
if(dlg->m_KeepAspectRatio) t->flags2 |= KEEPASPECTRATIO;
|
if(dlg->m_KeepAspectRatio) t->flags2 |= KEEPASPECTRATIO;
|
||||||
if(dlg->m_ForceWinResize) t->flags2 |= FORCEWINRESIZE;
|
if(dlg->m_ForceWinResize) t->flags2 |= FORCEWINRESIZE;
|
||||||
if(dlg->m_HideMultiMonitor) t->flags2 |= HIDEMULTIMONITOR;
|
if(dlg->m_HideMultiMonitor) t->flags2 |= HIDEMULTIMONITOR;
|
||||||
// if(dlg->m_WallpaperMode) t->flags2 |= WALLPAPERMODE;
|
|
||||||
if(dlg->m_FixD3DFrame) t->flags3 |= FIXD3DFRAME;
|
if(dlg->m_FixD3DFrame) t->flags3 |= FIXD3DFRAME;
|
||||||
if(dlg->m_NoWindowMove) t->flags3 |= NOWINDOWMOVE;
|
if(dlg->m_NoWindowMove) t->flags3 |= NOWINDOWMOVE;
|
||||||
if(dlg->m_Force16BPP) t->flags3 |= FORCE16BPP;
|
//if(dlg->m_Force16BPP) t->flags3 |= FORCE16BPP;
|
||||||
if(dlg->m_HookChildWin) t->flags |= HOOKCHILDWIN;
|
if(dlg->m_HookChildWin) t->flags |= HOOKCHILDWIN;
|
||||||
if(dlg->m_MessageProc) t->flags |= MESSAGEPROC;
|
if(dlg->m_MessageProc) t->flags |= MESSAGEPROC;
|
||||||
//if(dlg->m_NoMouseProc) t->flags6 |= NOMOUSEPROC;
|
//if(dlg->m_NoMouseProc) t->flags6 |= NOMOUSEPROC;
|
||||||
@ -589,6 +594,11 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
|
|||||||
if(t->tflags & ERASELOGFILE) dlg->m_LogMode = 1;
|
if(t->tflags & ERASELOGFILE) dlg->m_LogMode = 1;
|
||||||
if(t->tflags & OUTSEPARATED) dlg->m_LogMode = 3;
|
if(t->tflags & OUTSEPARATED) dlg->m_LogMode = 3;
|
||||||
|
|
||||||
|
dlg->m_WinMovementType = 0;
|
||||||
|
if(t->flags & LOCKWINPOS) dlg->m_WinMovementType = 1;
|
||||||
|
if(t->flags2 & LOCKEDSIZE) dlg->m_WinMovementType = 2;
|
||||||
|
if(t->flags7 & ANCHORED) dlg->m_WinMovementType = 3;
|
||||||
|
|
||||||
dlg->m_HookDI = t->flags & HOOKDI ? 1 : 0;
|
dlg->m_HookDI = t->flags & HOOKDI ? 1 : 0;
|
||||||
dlg->m_HookDI8 = t->flags & HOOKDI8 ? 1 : 0;
|
dlg->m_HookDI8 = t->flags & HOOKDI8 ? 1 : 0;
|
||||||
dlg->m_EmulateRelMouse = t->flags6 & EMULATERELMOUSE ? 1 : 0;
|
dlg->m_EmulateRelMouse = t->flags6 & EMULATERELMOUSE ? 1 : 0;
|
||||||
@ -706,17 +716,15 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
|
|||||||
dlg->m_GDIColorConv = t->flags5 & GDICOLORCONV ? 1 : 0;
|
dlg->m_GDIColorConv = t->flags5 & GDICOLORCONV ? 1 : 0;
|
||||||
dlg->m_PreventMaximize = t->flags & PREVENTMAXIMIZE ? 1 : 0;
|
dlg->m_PreventMaximize = t->flags & PREVENTMAXIMIZE ? 1 : 0;
|
||||||
dlg->m_ClientRemapping = t->flags & CLIENTREMAPPING ? 1 : 0;
|
dlg->m_ClientRemapping = t->flags & CLIENTREMAPPING ? 1 : 0;
|
||||||
dlg->m_LockWinPos = t->flags & LOCKWINPOS ? 1 : 0;
|
|
||||||
dlg->m_LockWinStyle = t->flags & LOCKWINSTYLE ? 1 : 0;
|
dlg->m_LockWinStyle = t->flags & LOCKWINSTYLE ? 1 : 0;
|
||||||
dlg->m_FixParentWin = t->flags & FIXPARENTWIN ? 1 : 0;
|
dlg->m_FixParentWin = t->flags & FIXPARENTWIN ? 1 : 0;
|
||||||
dlg->m_ModalStyle = t->flags2 & MODALSTYLE ? 1 : 0;
|
dlg->m_ModalStyle = t->flags2 & MODALSTYLE ? 1 : 0;
|
||||||
dlg->m_KeepAspectRatio = t->flags2 & KEEPASPECTRATIO ? 1 : 0;
|
dlg->m_KeepAspectRatio = t->flags2 & KEEPASPECTRATIO ? 1 : 0;
|
||||||
dlg->m_ForceWinResize = t->flags2 & FORCEWINRESIZE ? 1 : 0;
|
dlg->m_ForceWinResize = t->flags2 & FORCEWINRESIZE ? 1 : 0;
|
||||||
dlg->m_HideMultiMonitor = t->flags2 & HIDEMULTIMONITOR ? 1 : 0;
|
dlg->m_HideMultiMonitor = t->flags2 & HIDEMULTIMONITOR ? 1 : 0;
|
||||||
//dlg->m_WallpaperMode = t->flags2 & WALLPAPERMODE ? 1 : 0;
|
|
||||||
dlg->m_FixD3DFrame = t->flags3 & FIXD3DFRAME ? 1 : 0;
|
dlg->m_FixD3DFrame = t->flags3 & FIXD3DFRAME ? 1 : 0;
|
||||||
dlg->m_NoWindowMove = t->flags3 & NOWINDOWMOVE ? 1 : 0;
|
dlg->m_NoWindowMove = t->flags3 & NOWINDOWMOVE ? 1 : 0;
|
||||||
dlg->m_Force16BPP = t->flags3 & FORCE16BPP ? 1 : 0;
|
//dlg->m_Force16BPP = t->flags3 & FORCE16BPP ? 1 : 0;
|
||||||
dlg->m_HookChildWin = t->flags & HOOKCHILDWIN ? 1 : 0;
|
dlg->m_HookChildWin = t->flags & HOOKCHILDWIN ? 1 : 0;
|
||||||
dlg->m_MessageProc = t->flags & MESSAGEPROC ? 1 : 0;
|
dlg->m_MessageProc = t->flags & MESSAGEPROC ? 1 : 0;
|
||||||
dlg->m_FixNCHITTEST = t->flags2 & FIXNCHITTEST ? 1 : 0;
|
dlg->m_FixNCHITTEST = t->flags2 & FIXNCHITTEST ? 1 : 0;
|
||||||
@ -2271,6 +2279,24 @@ void CDxwndhostView::OnClearAllLogs()
|
|||||||
_unlink(FilePath);
|
_unlink(FilePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DWORD WINAPI SilentUpdate(CSystemTray *Tray)
|
||||||
|
{
|
||||||
|
int DxStatus;
|
||||||
|
int IdleCount;
|
||||||
|
IdleCount=0;
|
||||||
|
while (TRUE) {
|
||||||
|
// once a second ...
|
||||||
|
Sleep(1000);
|
||||||
|
DxStatus=GetHookStatus(NULL);
|
||||||
|
if (DxStatus != DXW_RUNNING){
|
||||||
|
IdleCount++;
|
||||||
|
if(IdleCount >= 2) exit(0);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
IdleCount=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
DWORD WINAPI TrayIconUpdate(CSystemTray *Tray)
|
DWORD WINAPI TrayIconUpdate(CSystemTray *Tray)
|
||||||
{
|
{
|
||||||
@ -2359,6 +2385,8 @@ void CDxwndhostView::OnGoToTrayIcon()
|
|||||||
"DxWnd",
|
"DxWnd",
|
||||||
NIIF_INFO, 10)){
|
NIIF_INFO, 10)){
|
||||||
MessageBoxLang(DXW_STRING_TRAYFAIL, DXW_STRING_ERROR, MB_OK);
|
MessageBoxLang(DXW_STRING_TRAYFAIL, DXW_STRING_ERROR, MB_OK);
|
||||||
|
// error path: if can't create a system tray icon, transient logic must be silently placed here
|
||||||
|
if (gTransientMode) StatusThread= CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)SilentUpdate, (LPVOID)NULL, 0, &dwThrdId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
IconId=(menu->GetMenuState(ID_HOOK_START, MF_BYCOMMAND)==MF_CHECKED)?IDI_DXWAIT:IDI_DXIDLE;
|
IconId=(menu->GetMenuState(ID_HOOK_START, MF_BYCOMMAND)==MF_CHECKED)?IDI_DXWAIT:IDI_DXIDLE;
|
||||||
|
BIN
host/resource
BIN
host/resource
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user