mirror of
https://github.com/DxWnd/DxWnd.reloaded
synced 2024-12-30 09:25:35 +01:00
v2_03_13_src
Former-commit-id: 638306d2c4f8094c5e0c0cc46f04b11a01b7a8f3
This commit is contained in:
parent
8050fe4ddb
commit
9018a2a20b
BIN
build/ICCVID.DLL
BIN
build/ICCVID.DLL
Binary file not shown.
@ -22,3 +22,5 @@ refresh=
|
|||||||
logtoggle=
|
logtoggle=
|
||||||
plocktoggle=
|
plocktoggle=
|
||||||
fpstoggle=
|
fpstoggle=
|
||||||
|
printscreen=0x7B
|
||||||
|
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:5005c1da2c65a47e47378d41ed67cb908a2fd475ced015bddebe715c7f1d71d7
|
oid sha256:a309ebf6376c46e11161cf10c80cfaec09dc6bb88fa7ac4d8bbd0cf92e243eb8
|
||||||
size 570368
|
size 571904
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:2e73542e5cc2b9a1fa1d6429230b756694eb361b63fe55b812cb1c31c118e938
|
oid sha256:e7bef752b0ed1dd25215248cadaae676418c24c88518b878d1328e2e34abb6ef
|
||||||
size 538112
|
size 538112
|
||||||
|
@ -6,7 +6,7 @@ module0=
|
|||||||
opengllib0=
|
opengllib0=
|
||||||
ver0=0
|
ver0=0
|
||||||
coord0=0
|
coord0=0
|
||||||
flag0=134218272
|
flag0=134217762
|
||||||
flagg0=1207959552
|
flagg0=1207959552
|
||||||
flagh0=20
|
flagh0=20
|
||||||
flagi0=138412036
|
flagi0=138412036
|
||||||
@ -25,3 +25,5 @@ maxfps0=0
|
|||||||
initts0=0
|
initts0=0
|
||||||
winver0=0
|
winver0=0
|
||||||
maxres0=-1
|
maxres0=-1
|
||||||
|
notes0=
|
||||||
|
flagj0=128
|
||||||
|
29
build/exports/Dark Fall - The Journal (GOG 2.0.0.6).dxw
Normal file
29
build/exports/Dark Fall - The Journal (GOG 2.0.0.6).dxw
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
[target]
|
||||||
|
title0=Dark Fall - The Journal (GOG 2.0.0.6)
|
||||||
|
path0=D:\Games\Dark Fall - The Journal 2_0_0_6\DarkFall.exe
|
||||||
|
launchpath0=
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
notes0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=713031682
|
||||||
|
flagg0=1242562560
|
||||||
|
flagh0=20
|
||||||
|
flagi0=205520900
|
||||||
|
flagj0=4224
|
||||||
|
tflag0=0
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=640
|
||||||
|
sizy0=480
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
@ -5,7 +5,7 @@ module0=
|
|||||||
opengllib0=
|
opengllib0=
|
||||||
ver0=1
|
ver0=1
|
||||||
coord0=0
|
coord0=0
|
||||||
flag0=138428450
|
flag0=138428448
|
||||||
flagg0=1242562576
|
flagg0=1242562576
|
||||||
flagh0=20
|
flagh0=20
|
||||||
flagi0=4194304
|
flagi0=4194304
|
||||||
@ -26,4 +26,4 @@ launchpath0=
|
|||||||
winver0=0
|
winver0=0
|
||||||
maxres0=0
|
maxres0=0
|
||||||
notes0=
|
notes0=
|
||||||
flagj0=129
|
flagj0=8388737
|
||||||
|
29
build/exports/Dink Smallwood.dxw
Normal file
29
build/exports/Dink Smallwood.dxw
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
[target]
|
||||||
|
title0=Dink Smallwood
|
||||||
|
path0=D:\Games\Dink Smallwood\dink.exe
|
||||||
|
launchpath0=
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
notes0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=134217762
|
||||||
|
flagg0=1207959552
|
||||||
|
flagh0=20
|
||||||
|
flagi0=138412038
|
||||||
|
flagj0=4224
|
||||||
|
tflag0=536870912
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
@ -5,10 +5,10 @@ module0=
|
|||||||
opengllib0=
|
opengllib0=
|
||||||
ver0=0
|
ver0=0
|
||||||
coord0=0
|
coord0=0
|
||||||
flag0=134234146
|
flag0=402669600
|
||||||
flagg0=1207959552
|
flagg0=1207959552
|
||||||
flagh0=20
|
flagh0=20
|
||||||
flagi0=4
|
flagi0=4194308
|
||||||
tflag0=0
|
tflag0=0
|
||||||
initx0=0
|
initx0=0
|
||||||
inity0=0
|
inity0=0
|
||||||
@ -24,3 +24,6 @@ maxfps0=0
|
|||||||
initts0=0
|
initts0=0
|
||||||
winver0=0
|
winver0=0
|
||||||
maxres0=-1
|
maxres0=-1
|
||||||
|
launchpath0=
|
||||||
|
notes0=
|
||||||
|
flagj0=8388736
|
||||||
|
29
build/exports/Road Rash.dxw
Normal file
29
build/exports/Road Rash.dxw
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
[target]
|
||||||
|
title0=Road Rash
|
||||||
|
path0=D:\Games\road rash\ROADRASH.EXE
|
||||||
|
launchpath0=
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
notes0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=134217762
|
||||||
|
flagg0=1744830464
|
||||||
|
flagh0=1044
|
||||||
|
flagi0=1212153860
|
||||||
|
flagj0=4224
|
||||||
|
tflag0=0
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
@ -1,5 +1,5 @@
|
|||||||
[window]
|
[window]
|
||||||
posx=1292
|
posx=541
|
||||||
posy=131
|
posy=525
|
||||||
sizx=320
|
sizx=320
|
||||||
sizy=787
|
sizy=406
|
||||||
|
@ -751,4 +751,11 @@ fix: dinput GetDeviceData
|
|||||||
add: implemented "Release mouse outside window" functionality in dinput calls
|
add: implemented "Release mouse outside window" functionality in dinput calls
|
||||||
fix: now "Release mouse outside window" leaves the mouse close to where it left the window
|
fix: now "Release mouse outside window" leaves the mouse close to where it left the window
|
||||||
fix: in GUI, keeps memory of last used paths
|
fix: in GUI, keeps memory of last used paths
|
||||||
fix: several log messages
|
fix: several log messages
|
||||||
|
|
||||||
|
v2.03.13
|
||||||
|
add: integrated printscreen facility with 8BPP paletized dump, activated by "printscreen" special key (default Alt-F12)
|
||||||
|
fix: recovery for lost surfaces (i.e. after a Ctrl+Alt+Del command)
|
||||||
|
fix: palette display form showing active entries
|
||||||
|
fix: EnumDisplayModes hook in emulate surface mode
|
||||||
|
fix: several log improvements
|
||||||
|
13
build/registry/dxwnd.road rash.reg
Normal file
13
build/registry/dxwnd.road rash.reg
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
[HKEY_LOCAL_MACHINE\SOFTWARE]
|
||||||
|
|
||||||
|
; Road Rash
|
||||||
|
|
||||||
|
[HKEY_LOCAL_MACHINE\SOFTWARE\Electronic Arts]
|
||||||
|
[HKEY_LOCAL_MACHINE\SOFTWARE\Electronic Arts\RoadRash 95]
|
||||||
|
""=""
|
||||||
|
"Path"="."
|
||||||
|
"CheckDialup"=hex:00
|
||||||
|
"ChatState"=hex:02
|
||||||
|
"MiniDash"=hex:00
|
||||||
|
"OpponentList"=hex:01
|
||||||
|
|
@ -240,6 +240,7 @@ static HRESULT sBltToPrimary(char *api, LPDIRECTDRAWSURFACE lpdds, LPRECT lpdest
|
|||||||
if (lpdds != lpddssrc){
|
if (lpdds != lpddssrc){
|
||||||
if (IsDebug) BlitTrace("SRC2EMU", &emurect, &destrect, __LINE__);
|
if (IsDebug) BlitTrace("SRC2EMU", &emurect, &destrect, __LINE__);
|
||||||
if(destrect.top == -32000) return DD_OK; // happens when window is minimized & do not notify on task switch ...
|
if(destrect.top == -32000) return DD_OK; // happens when window is minimized & do not notify on task switch ...
|
||||||
|
if(lpdds->IsLost()) lpdds->Restore(); // lpDDSEmu_Back could get lost .....
|
||||||
res=(*pBlt)(lpdds, &emurect, lpddssrc, lpsrcrect, dwflags, lpddbltfx);
|
res=(*pBlt)(lpdds, &emurect, lpddssrc, lpsrcrect, dwflags, lpddbltfx);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -282,6 +283,8 @@ static HRESULT sBltToPrimary(char *api, LPDIRECTDRAWSURFACE lpdds, LPRECT lpdest
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(lpDDSEmu_Prim->IsLost()) lpDDSEmu_Prim->Restore();
|
||||||
|
|
||||||
dxw.ShowOverlay(lpDDSSource);
|
dxw.ShowOverlay(lpDDSSource);
|
||||||
if (IsDebug) BlitTrace("BACK2PRIM", &emurect, &destrect, __LINE__);
|
if (IsDebug) BlitTrace("BACK2PRIM", &emurect, &destrect, __LINE__);
|
||||||
res=(*pPrimaryBlt)(lpDDSEmu_Prim, &destrect, lpDDSSource, &emurect);
|
res=(*pPrimaryBlt)(lpDDSEmu_Prim, &destrect, lpDDSSource, &emurect);
|
||||||
|
@ -501,10 +501,6 @@ void mySetPalette(int dwstart, int dwcount, LPPALETTEENTRY lpentries, BOOL Has25
|
|||||||
int i;
|
int i;
|
||||||
extern DXWNDSTATUS *pStatus;
|
extern DXWNDSTATUS *pStatus;
|
||||||
|
|
||||||
// copy the palette entries on the current system palette
|
|
||||||
for(int idx=0; idx<dwcount; idx++)
|
|
||||||
pStatus->Palette[dwstart+idx]= lpentries[idx];
|
|
||||||
|
|
||||||
// if has reserved palette entries, recover them
|
// if has reserved palette entries, recover them
|
||||||
if(!Has256ColorsPalette){
|
if(!Has256ColorsPalette){
|
||||||
int nStatCols, nPalEntries;
|
int nStatCols, nPalEntries;
|
||||||
@ -531,6 +527,10 @@ void mySetPalette(int dwstart, int dwcount, LPPALETTEENTRY lpentries, BOOL Has25
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// copy the palette entries on the current system palette
|
||||||
|
for(int idx=0; idx<dwcount; idx++)
|
||||||
|
pStatus->Palette[dwstart+idx]= lpentries[idx];
|
||||||
|
|
||||||
for(i = 0; i < dwcount; i ++){
|
for(i = 0; i < dwcount; i ++){
|
||||||
PALETTEENTRY PalColor;
|
PALETTEENTRY PalColor;
|
||||||
PalColor = lpentries[i];
|
PalColor = lpentries[i];
|
||||||
@ -883,6 +883,29 @@ int SurfaceDescrSize(LPDIRECTDRAWSURFACE lpdds)
|
|||||||
return sizeof(DDSURFACEDESC);
|
return sizeof(DDSURFACEDESC);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int SurfaceDescrSizeD(LPDIRECTDRAW lpdd)
|
||||||
|
{
|
||||||
|
char sMsg[81];
|
||||||
|
void *extCreateSurface = NULL;
|
||||||
|
|
||||||
|
if(lpdd){
|
||||||
|
__try{
|
||||||
|
extCreateSurface=(void *)*(DWORD *)(*(DWORD *)lpdd + 24);
|
||||||
|
}
|
||||||
|
__except (EXCEPTION_EXECUTE_HANDLER){
|
||||||
|
return sizeof(DDSURFACEDESC);
|
||||||
|
};
|
||||||
|
if(extCreateSurface==(void *)extCreateSurface7) return sizeof(DDSURFACEDESC2);
|
||||||
|
if(extCreateSurface==(void *)extCreateSurface4) return sizeof(DDSURFACEDESC2);
|
||||||
|
if(extCreateSurface==(void *)extCreateSurface2) return sizeof(DDSURFACEDESC);
|
||||||
|
if(extCreateSurface==(void *)extCreateSurface1) return sizeof(DDSURFACEDESC);
|
||||||
|
}
|
||||||
|
sprintf_s(sMsg, 80, "SurfaceDescrSizeD(%x) can't match %x\n", lpdd, extCreateSurface);
|
||||||
|
OutTraceDW(sMsg);
|
||||||
|
if (IsAssertEnabled) MessageBox(0, sMsg, "SurfaceDescrSizeD", MB_OK | MB_ICONEXCLAMATION);
|
||||||
|
return sizeof(DDSURFACEDESC);
|
||||||
|
}
|
||||||
|
|
||||||
int lpddsHookedVersion(LPDIRECTDRAWSURFACE lpdds)
|
int lpddsHookedVersion(LPDIRECTDRAWSURFACE lpdds)
|
||||||
{
|
{
|
||||||
char sMsg[81];
|
char sMsg[81];
|
||||||
@ -3150,7 +3173,6 @@ HRESULT WINAPI ColorConversionGDI(LPDIRECTDRAWSURFACE lpdds, RECT emurect, LPDIR
|
|||||||
{
|
{
|
||||||
// GDICOLORCONV: use GDI capabilities to convert color depth by BitBlt-ting between different hdc
|
// GDICOLORCONV: use GDI capabilities to convert color depth by BitBlt-ting between different hdc
|
||||||
HRESULT res;
|
HRESULT res;
|
||||||
OutTrace("STEP: GDI Color Conversion\n");
|
|
||||||
do {
|
do {
|
||||||
HDC hdc_source, hdc_dest;
|
HDC hdc_source, hdc_dest;
|
||||||
res=(*pGetDC)(lpdds, &hdc_source);
|
res=(*pGetDC)(lpdds, &hdc_source);
|
||||||
@ -3425,6 +3447,7 @@ HRESULT WINAPI extCreatePalette(LPDIRECTDRAW lpdd, DWORD dwflags, LPPALETTEENTRY
|
|||||||
|
|
||||||
//if (dwflags & ~(DDPCAPS_PRIMARYSURFACE|DDPCAPS_8BIT|DDPCAPS_ALLOW256|DDPCAPS_INITIALIZE_LEGACY)) STOPPER("Palette flags");
|
//if (dwflags & ~(DDPCAPS_PRIMARYSURFACE|DDPCAPS_8BIT|DDPCAPS_ALLOW256|DDPCAPS_INITIALIZE_LEGACY)) STOPPER("Palette flags");
|
||||||
if(dwflags & DDPCAPS_ALLOW256) Has256ColorsPalette = TRUE;
|
if(dwflags & DDPCAPS_ALLOW256) Has256ColorsPalette = TRUE;
|
||||||
|
if(!(dwflags & DDPCAPS_PRIMARYSURFACE)) Has256ColorsPalette = TRUE;
|
||||||
|
|
||||||
if(dxw.dwFlags1 & EMULATESURFACE) dwflags &= ~DDPCAPS_PRIMARYSURFACE;
|
if(dxw.dwFlags1 & EMULATESURFACE) dwflags &= ~DDPCAPS_PRIMARYSURFACE;
|
||||||
res = (*pCreatePalette)(lpdd, dwflags, lpddpa, lplpddp, pu);
|
res = (*pCreatePalette)(lpdd, dwflags, lpddpa, lplpddp, pu);
|
||||||
@ -3584,7 +3607,12 @@ HRESULT WINAPI extLock(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDDSURFACEDESC
|
|||||||
res = (*pLock)(lpdds, lprect, lpDDSurfaceDesc, flags, hEvent);
|
res = (*pLock)(lpdds, lprect, lpDDSurfaceDesc, flags, hEvent);
|
||||||
OutTraceDW("Lock RETRY: ret=%x(%s)\n", res, ExplainDDError(res));
|
OutTraceDW("Lock RETRY: ret=%x(%s)\n", res, ExplainDDError(res));
|
||||||
}
|
}
|
||||||
if(res) OutTraceE("Lock ERROR: ret=%x(%s)\n", res, ExplainDDError(res));
|
if(res==DDERR_SURFACELOST){
|
||||||
|
lpdds->Restore();
|
||||||
|
res = (*pLock)(lpdds, lprect, lpDDSurfaceDesc, flags, hEvent);
|
||||||
|
OutTraceDW("Lock RETRY: ret=%x(%s)\n", res, ExplainDDError(res));
|
||||||
|
}
|
||||||
|
if(res) OutTraceE("Lock ERROR: ret=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
||||||
OutTraceB("Lock: lPitch=%d lpSurface=%x %s\n",
|
OutTraceB("Lock: lPitch=%d lpSurface=%x %s\n",
|
||||||
lpDDSurfaceDesc->lPitch, lpDDSurfaceDesc->lpSurface, LogSurfaceAttributes(lpDDSurfaceDesc, "[Locked]", __LINE__));
|
lpDDSurfaceDesc->lPitch, lpDDSurfaceDesc->lpSurface, LogSurfaceAttributes(lpDDSurfaceDesc, "[Locked]", __LINE__));
|
||||||
if(dxw.dwFlags1 & SUPPRESSDXERRORS) res=DD_OK;
|
if(dxw.dwFlags1 & SUPPRESSDXERRORS) res=DD_OK;
|
||||||
@ -3664,7 +3692,7 @@ HRESULT WINAPI extLockDir(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDDSURFACED
|
|||||||
|
|
||||||
res=(*pLock)(lpdds, lprect, lpDDSurfaceDesc, flags, hEvent);
|
res=(*pLock)(lpdds, lprect, lpDDSurfaceDesc, flags, hEvent);
|
||||||
|
|
||||||
if(res) OutTraceE("Lock ERROR: ret=%x(%s)\n", res, ExplainDDError(res));
|
if(res) OutTraceE("Lock ERROR: ret=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
||||||
OutTraceB("Lock: %s\n", LogSurfaceAttributes((LPDDSURFACEDESC)lpDDSurfaceDesc, "[Locked]" , __LINE__));
|
OutTraceB("Lock: %s\n", LogSurfaceAttributes((LPDDSURFACEDESC)lpDDSurfaceDesc, "[Locked]" , __LINE__));
|
||||||
if(dxw.dwFlags1 & SUPPRESSDXERRORS) res=DD_OK;
|
if(dxw.dwFlags1 & SUPPRESSDXERRORS) res=DD_OK;
|
||||||
|
|
||||||
@ -4041,8 +4069,7 @@ HRESULT WINAPI extEnumDisplayModes(EnumDisplayModes1_Type pEnumDisplayModes, LPD
|
|||||||
EmuDesc.dwRefreshRate = 0;
|
EmuDesc.dwRefreshRate = 0;
|
||||||
EmuDesc.ddpfPixelFormat.dwFlags = DDPF_RGB;
|
EmuDesc.ddpfPixelFormat.dwFlags = DDPF_RGB;
|
||||||
if (lpddsd) dwSize=lpddsd->dwSize; // sizeof either DDSURFACEDESC or DDSURFACEDESC2 !!!
|
if (lpddsd) dwSize=lpddsd->dwSize; // sizeof either DDSURFACEDESC or DDSURFACEDESC2 !!!
|
||||||
else dwSize = sizeof(DDSURFACEDESC2);
|
else dwSize=SurfaceDescrSizeD(lpdd);
|
||||||
if(dwSize > sizeof(DDSURFACEDESC2)) dwSize=sizeof(DDSURFACEDESC2);
|
|
||||||
memset(&EmuDesc, 0, dwSize);
|
memset(&EmuDesc, 0, dwSize);
|
||||||
EmuDesc.dwSize=dwSize;
|
EmuDesc.dwSize=dwSize;
|
||||||
EmuDesc.dwFlags=DDSD_PIXELFORMAT|DDSD_REFRESHRATE|DDSD_WIDTH|DDSD_HEIGHT|DDSD_PITCH;
|
EmuDesc.dwFlags=DDSD_PIXELFORMAT|DDSD_REFRESHRATE|DDSD_WIDTH|DDSD_HEIGHT|DDSD_PITCH;
|
||||||
|
132
dll/ddshot.cpp
Normal file
132
dll/ddshot.cpp
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
#define _CRT_SECURE_NO_WARNINGS
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "dxwnd.h"
|
||||||
|
#include "dxwcore.hpp"
|
||||||
|
#include "dxhelper.h"
|
||||||
|
|
||||||
|
extern char *ExplainDDError(DWORD);
|
||||||
|
|
||||||
|
typedef HRESULT (WINAPI *Lock_Type)(LPDIRECTDRAWSURFACE, LPRECT, LPDDSURFACEDESC, DWORD, HANDLE);
|
||||||
|
typedef HRESULT (WINAPI *Unlock4_Type)(LPDIRECTDRAWSURFACE, LPRECT);
|
||||||
|
typedef HRESULT (WINAPI *Unlock1_Type)(LPDIRECTDRAWSURFACE, LPVOID);
|
||||||
|
|
||||||
|
extern Lock_Type pLock;
|
||||||
|
extern Unlock4_Type pUnlockMethod(LPDIRECTDRAWSURFACE);
|
||||||
|
extern int Set_dwSize_From_Surface(LPDIRECTDRAWSURFACE);
|
||||||
|
|
||||||
|
void DDrawScreenShot()
|
||||||
|
{
|
||||||
|
LPDIRECTDRAWSURFACE s;
|
||||||
|
DDSURFACEDESC2 ddsd;
|
||||||
|
int w, h, iSurfaceSize, iScanLineSize;
|
||||||
|
HRESULT res;
|
||||||
|
static int MinTexX, MinTexY, MaxTexX, MaxTexY;
|
||||||
|
static BOOL DoOnce = TRUE;
|
||||||
|
char pszFile[MAX_PATH];
|
||||||
|
static int hash = 0;
|
||||||
|
|
||||||
|
if(DoOnce){
|
||||||
|
sprintf_s(pszFile, MAX_PATH, "%s\\screenshot.out", GetDxWndPath());
|
||||||
|
CreateDirectory(pszFile, NULL);
|
||||||
|
while(TRUE){
|
||||||
|
sprintf_s(pszFile, MAX_PATH, "%s\\screenshot.out\\shot.%08d.bmp", GetDxWndPath(), hash);
|
||||||
|
if(GetFileAttributes(pszFile) == INVALID_FILE_ATTRIBUTES) break;
|
||||||
|
hash++;
|
||||||
|
}
|
||||||
|
DoOnce = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(dxw.dwFlags5 & GDIMODE){
|
||||||
|
extern LPDIRECTDRAWSURFACE lpDDSBack;
|
||||||
|
s = lpDDSBack;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
s = dxw.GetPrimarySurface();
|
||||||
|
}
|
||||||
|
if(!s) return;
|
||||||
|
|
||||||
|
memset(&ddsd,0,sizeof(DDSURFACEDESC2));
|
||||||
|
ddsd.dwSize = Set_dwSize_From_Surface(s);
|
||||||
|
ddsd.dwFlags = DDSD_LPSURFACE | DDSD_PITCH;
|
||||||
|
if(res=(*pLock)(s, 0, (LPDDSURFACEDESC)&ddsd, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WRITEONLY|DDLOCK_WAIT, 0)){
|
||||||
|
OutTraceE("ScreenShot: Lock ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (TRUE) { // fake loop
|
||||||
|
OutTrace("ScreenShot: lpdds=%x BitCount=%d size=(%dx%d)\n",
|
||||||
|
s, ddsd.ddpfPixelFormat.dwRGBBitCount, ddsd.dwWidth, ddsd.dwHeight);
|
||||||
|
w = ddsd.dwWidth;
|
||||||
|
h = ddsd.dwHeight;
|
||||||
|
if(ddsd.ddpfPixelFormat.dwRGBBitCount == 0) {
|
||||||
|
OutTrace("ScreenShot: SKIP 0BPP texture\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
iSurfaceSize = ddsd.dwHeight * ddsd.lPitch;
|
||||||
|
|
||||||
|
FILE *hf;
|
||||||
|
BITMAPFILEHEADER hdr; // bitmap file-header
|
||||||
|
BITMAPV4HEADER pbi; // bitmap info-header
|
||||||
|
|
||||||
|
memset((void *)&pbi, 0, sizeof(BITMAPV4HEADER));
|
||||||
|
pbi.bV4Size = sizeof(BITMAPV4HEADER);
|
||||||
|
pbi.bV4Width = ddsd.dwWidth;
|
||||||
|
pbi.bV4Height = ddsd.dwHeight;
|
||||||
|
pbi.bV4BitCount = (WORD)ddsd.ddpfPixelFormat.dwRGBBitCount;
|
||||||
|
pbi.bV4SizeImage = ((pbi.bV4Width * pbi.bV4BitCount + 0x1F) & ~0x1F)/8 * pbi.bV4Height;
|
||||||
|
pbi.bV4Height = - pbi.bV4Height;
|
||||||
|
pbi.bV4Planes = 1;
|
||||||
|
pbi.bV4V4Compression = BI_BITFIELDS;
|
||||||
|
if(pbi.bV4BitCount == 8) pbi.bV4V4Compression = BI_RGB;
|
||||||
|
pbi.bV4XPelsPerMeter = 1;
|
||||||
|
pbi.bV4YPelsPerMeter = 1;
|
||||||
|
pbi.bV4ClrUsed = 0;
|
||||||
|
if(pbi.bV4BitCount == 8) pbi.bV4ClrUsed = 256;
|
||||||
|
pbi.bV4ClrImportant = 0;
|
||||||
|
pbi.bV4RedMask = ddsd.ddpfPixelFormat.dwRBitMask;
|
||||||
|
pbi.bV4GreenMask = ddsd.ddpfPixelFormat.dwGBitMask;
|
||||||
|
pbi.bV4BlueMask = ddsd.ddpfPixelFormat.dwBBitMask;
|
||||||
|
pbi.bV4AlphaMask = ddsd.ddpfPixelFormat.dwRGBAlphaBitMask;
|
||||||
|
pbi.bV4CSType = LCS_CALIBRATED_RGB;
|
||||||
|
iScanLineSize = ((pbi.bV4Width * pbi.bV4BitCount + 0x1F) & ~0x1F)/8;
|
||||||
|
|
||||||
|
// Create the .BMP file.
|
||||||
|
sprintf_s(pszFile, MAX_PATH, "%s\\screenshot.out\\shot.%08d.bmp", GetDxWndPath(), hash++);
|
||||||
|
hf = fopen(pszFile, "wb");
|
||||||
|
if(!hf) break;
|
||||||
|
|
||||||
|
hdr.bfType = 0x4d42; // 0x42 = "B" 0x4d = "M"
|
||||||
|
// Compute the size of the entire file.
|
||||||
|
hdr.bfSize = (DWORD) (sizeof(BITMAPFILEHEADER) + pbi.bV4Size + pbi.bV4ClrUsed * sizeof(RGBQUAD) + pbi.bV4SizeImage);
|
||||||
|
hdr.bfReserved1 = 0;
|
||||||
|
hdr.bfReserved2 = 0;
|
||||||
|
|
||||||
|
// Compute the offset to the array of color indices.
|
||||||
|
hdr.bfOffBits = (DWORD) sizeof(BITMAPFILEHEADER) + pbi.bV4Size + pbi.bV4ClrUsed * sizeof (RGBQUAD);
|
||||||
|
|
||||||
|
// Copy the BITMAPFILEHEADER into the .BMP file.
|
||||||
|
fwrite((LPVOID)&hdr, sizeof(BITMAPFILEHEADER), 1, hf);
|
||||||
|
|
||||||
|
// Copy the BITMAPINFOHEADER array into the file.
|
||||||
|
fwrite((LPVOID)&pbi, sizeof(BITMAPV4HEADER), 1, hf);
|
||||||
|
|
||||||
|
// Copy the RGBQUAD array into the file.
|
||||||
|
if(pbi.bV4ClrUsed){
|
||||||
|
extern DWORD PaletteEntries[256];
|
||||||
|
fwrite((LPVOID)PaletteEntries, pbi.bV4ClrUsed * sizeof (RGBQUAD), 1, hf);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Copy the array of color indices into the .BMP file.
|
||||||
|
for(int y=0; y<(int)ddsd.dwHeight; y++)
|
||||||
|
fwrite((BYTE *)ddsd.lpSurface + (y*ddsd.lPitch), iScanLineSize, 1, hf);
|
||||||
|
|
||||||
|
// Close the .BMP file.
|
||||||
|
fclose(hf);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
res=(*pUnlockMethod(s))(s, NULL);
|
||||||
|
if (res) OutTraceE("ScreenShot: Unlock ERROR lpdds=%x res=%x(%s) at %d\n", s, res, ExplainDDError(res), __LINE__);
|
||||||
|
}
|
@ -778,6 +778,7 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
|
|||||||
static int LastTimeShift;
|
static int LastTimeShift;
|
||||||
static int SaveTimeShift;
|
static int SaveTimeShift;
|
||||||
static BOOL TimeShiftToggle=TRUE;
|
static BOOL TimeShiftToggle=TRUE;
|
||||||
|
extern void DDrawScreenShot();
|
||||||
|
|
||||||
if(DoOnce){
|
if(DoOnce){
|
||||||
DoOnce=FALSE;
|
DoOnce=FALSE;
|
||||||
@ -1093,6 +1094,9 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
|
|||||||
TerminateProcess(GetCurrentProcess(),0);
|
TerminateProcess(GetCurrentProcess(),0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case DXVK_PRINTSCREEN:
|
||||||
|
DDrawScreenShot();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1903,7 +1903,8 @@ static char *VKeyLabels[DXVK_SIZE]={
|
|||||||
"timefast",
|
"timefast",
|
||||||
"timeslow",
|
"timeslow",
|
||||||
"timetoggle",
|
"timetoggle",
|
||||||
"altf4"
|
"altf4",
|
||||||
|
"printscreen"
|
||||||
};
|
};
|
||||||
|
|
||||||
void dxwCore::MapKeysInit()
|
void dxwCore::MapKeysInit()
|
||||||
|
@ -240,6 +240,7 @@ typedef enum {
|
|||||||
DXVK_TIMESLOW,
|
DXVK_TIMESLOW,
|
||||||
DXVK_TIMETOGGLE,
|
DXVK_TIMETOGGLE,
|
||||||
DXVK_ALTF4,
|
DXVK_ALTF4,
|
||||||
|
DXVK_PRINTSCREEN,
|
||||||
DXVK_SIZE
|
DXVK_SIZE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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.12"
|
#define VERSION "2.03.13"
|
||||||
|
|
||||||
#define DDTHREADLOCK 1
|
#define DDTHREADLOCK 1
|
||||||
//#define LOCKTHREADS
|
//#define LOCKTHREADS
|
||||||
|
Binary file not shown.
@ -261,6 +261,10 @@
|
|||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\ddshot.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\ddtexture.cpp"
|
RelativePath=".\ddtexture.cpp"
|
||||||
>
|
>
|
||||||
|
@ -51,6 +51,13 @@ COLORREF WINAPI extSetTextColor(HDC hdc, COLORREF crColor);
|
|||||||
int WINAPI extSetBkMode(HDC, int);
|
int WINAPI extSetBkMode(HDC, int);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
typedef UINT (WINAPI *GetPaletteEntries_Type)(HPALETTE, UINT, UINT, LPPALETTEENTRY);
|
||||||
|
typedef UINT (WINAPI *GetSystemPaletteUse_Type)(HDC);
|
||||||
|
GetPaletteEntries_Type pGetPaletteEntries = NULL;
|
||||||
|
GetSystemPaletteUse_Type pGetSystemPaletteUse = NULL;
|
||||||
|
UINT WINAPI extGetPaletteEntries(HPALETTE, UINT, UINT, LPPALETTEENTRY);
|
||||||
|
UINT WINAPI extGetSystemPaletteUse(HDC);
|
||||||
|
|
||||||
static HookEntry_Type Hooks[]={
|
static HookEntry_Type Hooks[]={
|
||||||
|
|
||||||
{HOOK_IAT_CANDIDATE, "GetDeviceCaps", (FARPROC)GetDeviceCaps, (FARPROC *)&pGDIGetDeviceCaps, (FARPROC)extGetDeviceCaps},
|
{HOOK_IAT_CANDIDATE, "GetDeviceCaps", (FARPROC)GetDeviceCaps, (FARPROC *)&pGDIGetDeviceCaps, (FARPROC)extGetDeviceCaps},
|
||||||
@ -71,6 +78,11 @@ static HookEntry_Type Hooks[]={
|
|||||||
{HOOK_IAT_CANDIDATE, "GetPixelFormat", (FARPROC)NULL, (FARPROC *)&pGDIGetPixelFormat, (FARPROC)extGDIGetPixelFormat},
|
{HOOK_IAT_CANDIDATE, "GetPixelFormat", (FARPROC)NULL, (FARPROC *)&pGDIGetPixelFormat, (FARPROC)extGDIGetPixelFormat},
|
||||||
{HOOK_IAT_CANDIDATE, "ChoosePixelFormat", (FARPROC)NULL, (FARPROC *)&pChoosePixelFormat, (FARPROC)extChoosePixelFormat},
|
{HOOK_IAT_CANDIDATE, "ChoosePixelFormat", (FARPROC)NULL, (FARPROC *)&pChoosePixelFormat, (FARPROC)extChoosePixelFormat},
|
||||||
{HOOK_IAT_CANDIDATE, "DescribePixelFormat", (FARPROC)NULL, (FARPROC *)&pDescribePixelFormat, (FARPROC)extDescribePixelFormat},
|
{HOOK_IAT_CANDIDATE, "DescribePixelFormat", (FARPROC)NULL, (FARPROC *)&pDescribePixelFormat, (FARPROC)extDescribePixelFormat},
|
||||||
|
|
||||||
|
{HOOK_HOT_CANDIDATE, "GetPaletteEntries", (FARPROC)GetPaletteEntries, (FARPROC *)&pGetPaletteEntries, (FARPROC)extGetPaletteEntries},
|
||||||
|
{HOOK_HOT_CANDIDATE, "GetSystemPaletteUse", (FARPROC)GetSystemPaletteUse, (FARPROC *)&pGetSystemPaletteUse, (FARPROC)extGetSystemPaletteUse},
|
||||||
|
|
||||||
|
|
||||||
{HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator
|
{HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -479,15 +491,10 @@ BOOL WINAPI extGDIRestoreDC(HDC hdc, int nSavedDC)
|
|||||||
HPALETTE WINAPI extGDICreatePalette(CONST LOGPALETTE *plpal)
|
HPALETTE WINAPI extGDICreatePalette(CONST LOGPALETTE *plpal)
|
||||||
{
|
{
|
||||||
HPALETTE ret;
|
HPALETTE ret;
|
||||||
int idx;
|
|
||||||
|
|
||||||
OutTraceDW("GDI.CreatePalette: plpal=%x version=%x NumEntries=%x\n", plpal, plpal->palVersion, plpal->palNumEntries);
|
OutTraceDW("GDI.CreatePalette: plpal=%x version=%x NumEntries=%d\n", plpal, plpal->palVersion, plpal->palNumEntries);
|
||||||
|
if(IsDebug) dxw.DumpPalette(plpal->palNumEntries, (LPPALETTEENTRY)plpal->palPalEntry);
|
||||||
ret=(*pGDICreatePalette)(plpal);
|
ret=(*pGDICreatePalette)(plpal);
|
||||||
if(IsDebug){
|
|
||||||
OutTraceDW("PalEntry[%x]= ", plpal->palNumEntries);
|
|
||||||
for(idx=0; idx<plpal->palNumEntries; idx++) OutTraceDW("(%x)", plpal->palPalEntry[idx]);
|
|
||||||
OutTraceDW("\n");
|
|
||||||
}
|
|
||||||
OutTraceDW("GDI.CreatePalette: hPalette=%x\n", ret);
|
OutTraceDW("GDI.CreatePalette: hPalette=%x\n", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -525,7 +532,7 @@ UINT WINAPI extRealizePalette(HDC hdc)
|
|||||||
if((OBJ_DC == GetObjectType(hdc)) && (dxw.dwFlags1 & EMULATESURFACE)){
|
if((OBJ_DC == GetObjectType(hdc)) && (dxw.dwFlags1 & EMULATESURFACE)){
|
||||||
PALETTEENTRY PalEntries[256];
|
PALETTEENTRY PalEntries[256];
|
||||||
UINT nEntries;
|
UINT nEntries;
|
||||||
nEntries=GetPaletteEntries(hDesktopPalette, 0, 256, PalEntries);
|
nEntries=(*pGetPaletteEntries)(hDesktopPalette, 0, 256, PalEntries);
|
||||||
mySetPalette(0, nEntries, PalEntries, TRUE); // ??
|
mySetPalette(0, nEntries, PalEntries, TRUE); // ??
|
||||||
if(IsDebug) dxw.DumpPalette(nEntries, PalEntries);
|
if(IsDebug) dxw.DumpPalette(nEntries, PalEntries);
|
||||||
ret=DD_OK;
|
ret=DD_OK;
|
||||||
@ -1751,10 +1758,27 @@ int WINAPI extAddFontResourceW(LPCWSTR lpszFontFile)
|
|||||||
UINT WINAPI extSetSystemPaletteUse(HDC hdc, UINT uUsage)
|
UINT WINAPI extSetSystemPaletteUse(HDC hdc, UINT uUsage)
|
||||||
{
|
{
|
||||||
//BOOL res;
|
//BOOL res;
|
||||||
OutTraceDW("SetSystemPaletteUse: hdc=%x Usage=%x(%s)\n", hdc, uUsage, ExplainPaletteUse(uUsage));
|
OutTraceDW("GDI.SetSystemPaletteUse: hdc=%x Usage=%x(%s)\n", hdc, uUsage, ExplainPaletteUse(uUsage));
|
||||||
return SYSPAL_NOSTATIC256;
|
return SYSPAL_NOSTATIC256;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UINT WINAPI extGetPaletteEntries(HPALETTE hpal, UINT iStartIndex, UINT nEntries, LPPALETTEENTRY lppe)
|
||||||
|
{
|
||||||
|
UINT res;
|
||||||
|
OutTraceDW("GDI.GetPaletteEntries: hpal=%x iStartIndex=%d nEntries=%d\n", hpal, iStartIndex, nEntries);
|
||||||
|
res=(*pGetPaletteEntries)(hpal, iStartIndex, nEntries, lppe);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
UINT WINAPI extGetSystemPaletteUse(HDC hdc)
|
||||||
|
{
|
||||||
|
UINT res;
|
||||||
|
OutTraceDW("GDI.GetSystemPaletteUse: hdc=%x\n", hdc);
|
||||||
|
res=(*pGetSystemPaletteUse)(hdc);
|
||||||
|
OutTraceDW("GetSystemPaletteUse: res=%x(%s)\n", res, ExplainPaletteUse(res));
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
//BEWARE: SetPixelFormat must be issued on the same hdc used by OpenGL wglCreateContext, otherwise
|
//BEWARE: SetPixelFormat must be issued on the same hdc used by OpenGL wglCreateContext, otherwise
|
||||||
// a failure err=2000 ERROR INVALID PIXEL FORMAT occurs!!
|
// a failure err=2000 ERROR INVALID PIXEL FORMAT occurs!!
|
||||||
|
|
||||||
|
@ -20,6 +20,11 @@ BOOL IsChangeDisplaySettingsHotPatched = FALSE;
|
|||||||
//BOOL WINAPI extValidateRect(HWND, const RECT *);
|
//BOOL WINAPI extValidateRect(HWND, const RECT *);
|
||||||
//ValidateRect_Type pValidateRect = NULL;
|
//ValidateRect_Type pValidateRect = NULL;
|
||||||
|
|
||||||
|
//typedef BOOL (WINAPI *EnumDisplayMonitors_Type)(HDC, LPCRECT, MONITORENUMPROC, LPARAM);
|
||||||
|
//EnumDisplayMonitors_Type pEnumDisplayMonitors = NULL;
|
||||||
|
//BOOL WINAPI extEnumDisplayMonitors(HDC, LPCRECT, MONITORENUMPROC, LPARAM);
|
||||||
|
|
||||||
|
|
||||||
static HookEntry_Type Hooks[]={
|
static HookEntry_Type Hooks[]={
|
||||||
{HOOK_IAT_CANDIDATE, "UpdateWindow", (FARPROC)NULL, (FARPROC *)&pUpdateWindow, (FARPROC)extUpdateWindow},
|
{HOOK_IAT_CANDIDATE, "UpdateWindow", (FARPROC)NULL, (FARPROC *)&pUpdateWindow, (FARPROC)extUpdateWindow},
|
||||||
//{HOOK_IAT_CANDIDATE, "GetWindowPlacement", (FARPROC)NULL, (FARPROC *)&pGetWindowPlacement, (FARPROC)extGetWindowPlacement},
|
//{HOOK_IAT_CANDIDATE, "GetWindowPlacement", (FARPROC)NULL, (FARPROC *)&pGetWindowPlacement, (FARPROC)extGetWindowPlacement},
|
||||||
@ -44,7 +49,7 @@ static HookEntry_Type Hooks[]={
|
|||||||
{HOOK_IAT_CANDIDATE, "RegisterClassExA", (FARPROC)RegisterClassExA, (FARPROC *)&pRegisterClassExA, (FARPROC)extRegisterClassExA},
|
{HOOK_IAT_CANDIDATE, "RegisterClassExA", (FARPROC)RegisterClassExA, (FARPROC *)&pRegisterClassExA, (FARPROC)extRegisterClassExA},
|
||||||
{HOOK_IAT_CANDIDATE, "RegisterClassA", (FARPROC)RegisterClassA, (FARPROC *)&pRegisterClassA, (FARPROC)extRegisterClassA},
|
{HOOK_IAT_CANDIDATE, "RegisterClassA", (FARPROC)RegisterClassA, (FARPROC *)&pRegisterClassA, (FARPROC)extRegisterClassA},
|
||||||
{HOOK_HOT_CANDIDATE, "GetSystemMetrics", (FARPROC)GetSystemMetrics, (FARPROC *)&pGetSystemMetrics, (FARPROC)extGetSystemMetrics},
|
{HOOK_HOT_CANDIDATE, "GetSystemMetrics", (FARPROC)GetSystemMetrics, (FARPROC *)&pGetSystemMetrics, (FARPROC)extGetSystemMetrics},
|
||||||
{HOOK_IAT_CANDIDATE, "GetDesktopWindow", (FARPROC)GetDesktopWindow, (FARPROC *)&pGetDesktopWindow, (FARPROC)extGetDesktopWindow},
|
{HOOK_HOT_CANDIDATE, "GetDesktopWindow", (FARPROC)GetDesktopWindow, (FARPROC *)&pGetDesktopWindow, (FARPROC)extGetDesktopWindow},
|
||||||
{HOOK_IAT_CANDIDATE, "CloseWindow", (FARPROC)NULL, (FARPROC *)&pCloseWindow, (FARPROC)extCloseWindow},
|
{HOOK_IAT_CANDIDATE, "CloseWindow", (FARPROC)NULL, (FARPROC *)&pCloseWindow, (FARPROC)extCloseWindow},
|
||||||
{HOOK_IAT_CANDIDATE, "DestroyWindow", (FARPROC)NULL, (FARPROC *)&pDestroyWindow, (FARPROC)extDestroyWindow},
|
{HOOK_IAT_CANDIDATE, "DestroyWindow", (FARPROC)NULL, (FARPROC *)&pDestroyWindow, (FARPROC)extDestroyWindow},
|
||||||
{HOOK_IAT_CANDIDATE, "SetSysColors", (FARPROC)NULL, (FARPROC *)&pSetSysColors, (FARPROC)extSetSysColors},
|
{HOOK_IAT_CANDIDATE, "SetSysColors", (FARPROC)NULL, (FARPROC *)&pSetSysColors, (FARPROC)extSetSysColors},
|
||||||
@ -60,6 +65,8 @@ static HookEntry_Type Hooks[]={
|
|||||||
//{HOOK_HOT_CANDIDATE, "GetActiveWindow", (FARPROC)NULL, (FARPROC *)&pGetActiveWindow, (FARPROC)extGetActiveWindow},
|
//{HOOK_HOT_CANDIDATE, "GetActiveWindow", (FARPROC)NULL, (FARPROC *)&pGetActiveWindow, (FARPROC)extGetActiveWindow},
|
||||||
//{HOOK_HOT_CANDIDATE, "GetForegroundWindow", (FARPROC)GetForegroundWindow, (FARPROC *)&pGetForegroundWindow, (FARPROC)extGetForegroundWindow},
|
//{HOOK_HOT_CANDIDATE, "GetForegroundWindow", (FARPROC)GetForegroundWindow, (FARPROC *)&pGetForegroundWindow, (FARPROC)extGetForegroundWindow},
|
||||||
//{HOOK_IAT_CANDIDATE, "GetWindowTextA", (FARPROC)GetWindowTextA, (FARPROC *)&pGetWindowTextA, (FARPROC)extGetWindowTextA},
|
//{HOOK_IAT_CANDIDATE, "GetWindowTextA", (FARPROC)GetWindowTextA, (FARPROC *)&pGetWindowTextA, (FARPROC)extGetWindowTextA},
|
||||||
|
//{HOOK_HOT_CANDIDATE, "EnumDisplayMonitors", (FARPROC)EnumDisplayMonitors, (FARPROC *)&pEnumDisplayMonitors, (FARPROC)extEnumDisplayMonitors},
|
||||||
|
|
||||||
{HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator
|
{HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2756,7 +2763,7 @@ HWND WINAPI extChildWindowFromPointEx(HWND hWndParent, POINT Point, UINT uFlags)
|
|||||||
BOOL extGetMonitorInfo(HMONITOR hMonitor, LPMONITORINFO lpmi, GetMonitorInfo_Type pGetMonitorInfo)
|
BOOL extGetMonitorInfo(HMONITOR hMonitor, LPMONITORINFO lpmi, GetMonitorInfo_Type pGetMonitorInfo)
|
||||||
{
|
{
|
||||||
BOOL res;
|
BOOL res;
|
||||||
OutTrace("GetMonitorInfo: hMonitor=%x mi=MONITORINFO%s\n", hMonitor, lpmi->cbSize==sizeof(MONITORINFO)?"":"EX");
|
OutTraceDW("GetMonitorInfo: hMonitor=%x mi=MONITORINFO%s\n", hMonitor, lpmi->cbSize==sizeof(MONITORINFO)?"":"EX");
|
||||||
res=(*pGetMonitorInfo)(hMonitor, lpmi);
|
res=(*pGetMonitorInfo)(hMonitor, lpmi);
|
||||||
if(res && dxw.Windowize){
|
if(res && dxw.Windowize){
|
||||||
OutTraceDW("GetMonitorInfo: FIX Work=(%d,%d)-(%d,%d) Monitor=(%d,%d)-(%d,%d) -> (%d,%d)-(%d,%d)\n",
|
OutTraceDW("GetMonitorInfo: FIX Work=(%d,%d)-(%d,%d) Monitor=(%d,%d)-(%d,%d) -> (%d,%d)-(%d,%d)\n",
|
||||||
@ -2766,6 +2773,9 @@ BOOL extGetMonitorInfo(HMONITOR hMonitor, LPMONITORINFO lpmi, GetMonitorInfo_Typ
|
|||||||
lpmi->rcWork = dxw.GetScreenRect();
|
lpmi->rcWork = dxw.GetScreenRect();
|
||||||
lpmi->rcMonitor = dxw.GetScreenRect();
|
lpmi->rcMonitor = dxw.GetScreenRect();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
OutTraceE("GetMonitorInfo: ERROR err=%d\n", GetLastError());
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ void CTabProgram::OnOpen()
|
|||||||
extern char *gInitFilePath;
|
extern char *gInitFilePath;
|
||||||
CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent()));
|
CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent()));
|
||||||
cTarget->m_File.GetWindowText(path, MAX_PATH);
|
cTarget->m_File.GetWindowText(path, MAX_PATH);
|
||||||
GetPrivateProfileString("window", "exepath", ".", path, MAX_PATH, gInitFilePath);
|
GetPrivateProfileString("window", "exepath", NULL, path, MAX_PATH, gInitFilePath);
|
||||||
CFileDialog dlg( TRUE, "*.*", path, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
|
CFileDialog dlg( TRUE, "*.*", path, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
|
||||||
"Program (*.exe)|*.exe|All Files (*.*)|*.*||", this);
|
"Program (*.exe)|*.exe|All Files (*.*)|*.*||", this);
|
||||||
if( dlg.DoModal() == IDOK) {
|
if( dlg.DoModal() == IDOK) {
|
||||||
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user