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

v2_03_26_src

Former-commit-id: 51365996729c3c348ae3dfc5911e5f6b364f1ca7
This commit is contained in:
gho tik 2015-06-22 12:40:59 -04:00 committed by Refael ACkermann
parent 6b20484cd8
commit f479c25e2e
32 changed files with 292 additions and 62 deletions

View File

@ -2438,7 +2438,7 @@ typedef struct _DDOPTSURFACEDESC
/*
* The surface's optimized pixelformat is compressed
*/
#define DDOSDCAPS_OPTCOMPRESSED 0x00000001l
#define DDSDCAPS_PRIMARYSURFACE 0x00000001l
/*
* The surface's optimized pixelformat is reordered

View File

@ -186,6 +186,8 @@
#define NODESTROYWINDOW 0x00000004 // suppress the main window destruction
#define NOMOVIES 0x00000008 // suppress MCI Movies
#define SUPPRESSRELEASE 0x00000010 // Avoid releasing critical emulated surfaces - the backbuffer
#define FIXMOVIESCOLOR 0x00000020 // Fixes vfw movies color depth forcing the virtual value
#define WOW64REGISTRY 0x00000040 // Sets KEY_WOW64_64KEY registry flag
// logging Tflags DWORD:
#define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:56ab101cb2b224e431663b2780b0f9909105b05d8224c9aaf04fce73f4478f2c
size 576000
oid sha256:4ab5dd831d56508ccd5cbbda6a530cd2590513f33e24d99218eda96a1c592d5f
size 578048

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4689f5e3e9616fb6a9cffaa580a02ca3aceb4364593deeb30b373e1e6f0d0696
size 539648
oid sha256:1520acef3baabbb9746fcc7f4e3ef6e485a67880b7c1503d9abf37097bfdd4ab
size 540160

View File

@ -6,8 +6,8 @@ module0=
opengllib0=
ver0=0
coord0=0
flag0=150994976
flagg0=134217728
flag0=134217762
flagg0=1207959552
flagh0=20
flagi0=136314884
tflag0=6147
@ -25,3 +25,7 @@ maxfps0=0
initts0=0
winver0=0
maxres0=-1
notes0=
flagj0=128
flagk0=0
swapeffect0=0

View File

@ -830,4 +830,9 @@ add: added the "Suppress Release on backbuffer" that makes "Tetris Worlds" worki
v2.03.25:
fix: CoCreateInstance hooking for IDirectDraw interface: fixes "Darius Gaiden"
fix: BackBufferCaps value for NOSYSTEMEMULATED option. Fixes "Forsaken" crashes in AERO mode.
fix: GDI GetDC and GetWindowDC must not redirect the zero hWnd to the current main window if not in fullscreen mode.
fix: GDI GetDC and GetWindowDC must not redirect the zero hWnd to the current main window if not in fullscreen mode.
v2.03.26:
add: Added "Set KEY_WOW64_64KEY flag" flag to registry operations. It could prove useful for old programs on recent W64 platforms.
add: Added "fix movies color depth" flag. It fixes some problems when windows multimedia functions detect and process the actual video color mode and they should rather consider the virtual value. Fixes "Killing Time" intro movies decoding.
fix: suppressed hooking for comdlg32.dll module. Common dialogues never need to be altered. Fixes "Road Rash" save/load game dialog problems.

View File

@ -152,6 +152,8 @@ LONG WINAPI extRegOpenKeyEx(
if(res == ERROR_SUCCESS) return res;
}
if(dxw.dwFlags6 & WOW64REGISTRY) ulOptions |= KEY_WOW64_64KEY;
res=(*pRegOpenKeyEx)(hKey, lpSubKey, ulOptions, samDesired, phkResult);
OutTraceR("RegOpenKeyEx: res=%x phkResult=%x\n", res, phkResult ? *phkResult : 0);

View File

@ -10,17 +10,21 @@
typedef LONG (WINAPI *AVIFileRelease_Type)(PAVIFILE);
typedef LONG (WINAPI *AVIStreamRelease_Type)(PAVISTREAM);
typedef PGETFRAME (WINAPI *AVIStreamGetFrameOpen_Type)(PAVISTREAM, LPBITMAPINFOHEADER);
AVIFileRelease_Type pAVIFileRelease = NULL;
AVIStreamRelease_Type pAVIStreamRelease = NULL;
AVIStreamGetFrameOpen_Type pAVIStreamGetFrameOpen = NULL;
LONG WINAPI extAVIFileRelease(PAVIFILE);
LONG WINAPI extAVIStreamRelease(PAVISTREAM);
PGETFRAME WINAPI extAVIStreamGetFrameOpen(PAVISTREAM, LPBITMAPINFOHEADER);
static HookEntry_Type Hooks[]={
//{HOOK_IAT_CANDIDATE, "AVIFileClose", NULL, (FARPROC *)&pAVIFileClose, (FARPROC)extAVIFileClose},
{HOOK_IAT_CANDIDATE, "AVIFileRelease", NULL, (FARPROC *)&pAVIFileRelease, (FARPROC)extAVIFileRelease},
{HOOK_IAT_CANDIDATE, "AVIStreamRelease", NULL, (FARPROC *)&pAVIStreamRelease, (FARPROC)extAVIStreamRelease},
//{HOOK_IAT_CANDIDATE, "AVIFileRelease", NULL, (FARPROC *)&pAVIFileRelease, (FARPROC)extAVIFileRelease},
//{HOOK_IAT_CANDIDATE, "AVIStreamRelease", NULL, (FARPROC *)&pAVIStreamRelease, (FARPROC)extAVIStreamRelease},
{HOOK_IAT_CANDIDATE, "AVIStreamGetFrameOpen", NULL, (FARPROC *)&pAVIStreamGetFrameOpen, (FARPROC)extAVIStreamGetFrameOpen},
{HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator
};
@ -54,5 +58,30 @@ LONG WINAPI extAVIStreamRelease(PAVISTREAM pavi)
return (*pAVIStreamRelease)(pavi);
}
PGETFRAME WINAPI extAVIStreamGetFrameOpen(PAVISTREAM pavi, LPBITMAPINFOHEADER lpbiWanted)
{
if(IsTraceDW){
char sColor[12];
switch ((DWORD)lpbiWanted){
case 0: strcpy(sColor, "DEFAULT"); break;
case AVIGETFRAMEF_BESTDISPLAYFMT: strcpy(sColor, "BEST"); break;
default: sprintf(sColor,"%d", lpbiWanted->biBitCount);
}
OutTrace("AVIStreamGetFrameOpen: pavi=%x lpbiwanted=%x bitcount=%s\n", pavi, lpbiWanted, sColor);
}
if((dxw.dwFlags6 & FIXMOVIESCOLOR) && (((DWORD)lpbiWanted == 0) || ((DWORD)lpbiWanted == AVIGETFRAMEF_BESTDISPLAYFMT))){
BITMAPINFOHEADER biWanted;
memset(&biWanted, 0, sizeof(BITMAPINFOHEADER));
biWanted.biSize = sizeof(BITMAPINFOHEADER);
biWanted.biBitCount = (WORD)dxw.VirtualPixelFormat.dwRGBBitCount;
biWanted.biPlanes = 1;
biWanted.biClrUsed = (0x1 << biWanted.biBitCount); // 8 -> 256;
biWanted.biClrImportant = biWanted.biClrUsed;
return (*pAVIStreamGetFrameOpen)(pavi, &biWanted);
}
return (*pAVIStreamGetFrameOpen)(pavi, lpbiWanted);
}

87
dll/comdlg32.cpp Normal file
View File

@ -0,0 +1,87 @@
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include "dxwnd.h"
#include "dxwcore.hpp"
#include "syslibs.h"
#include "dxhook.h"
#include "dxhelper.h"
typedef BOOL (WINAPI *GetFileNameA_Type)(LPOPENFILENAMEA);
typedef BOOL (WINAPI *GetFileNameW_Type)(LPOPENFILENAMEW);
GetFileNameA_Type pGetOpenFileNameA = NULL;
GetFileNameA_Type pGetSaveFileNameA = NULL;
GetFileNameW_Type pGetOpenFileNameW = NULL;
GetFileNameW_Type pGetSaveFileNameW = NULL;
BOOL WINAPI extGetSaveFileNameA(LPOPENFILENAMEA);
BOOL WINAPI extGetOpenFileNameA(LPOPENFILENAMEA);
BOOL WINAPI extGetSaveFileNameW(LPOPENFILENAMEW);
BOOL WINAPI extGetOpenFileNameW(LPOPENFILENAMEW);
static HookEntry_Type Hooks[]={
{HOOK_IAT_CANDIDATE, "GetSaveFileNameA", NULL, (FARPROC *)&pGetSaveFileNameA, (FARPROC)extGetSaveFileNameA},
{HOOK_IAT_CANDIDATE, "GetOpenFileNameA", NULL, (FARPROC *)&pGetOpenFileNameA, (FARPROC)extGetOpenFileNameA},
{HOOK_IAT_CANDIDATE, "GetSaveFileNameW", NULL, (FARPROC *)&pGetSaveFileNameW, (FARPROC)extGetSaveFileNameW},
{HOOK_IAT_CANDIDATE, "GetOpenFileNameW", NULL, (FARPROC *)&pGetOpenFileNameW, (FARPROC)extGetOpenFileNameW},
{HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator
};
void HookComDlg32(HMODULE module)
{
HookLibrary(module, Hooks, "comdlg32.dll");
}
FARPROC Remap_ComDlg32_ProcAddress(LPCSTR proc, HMODULE hModule)
{
FARPROC addr;
if (addr=RemapLibrary(proc, hModule, Hooks)) return addr;
return NULL;
}
BOOL WINAPI extGetSaveFileNameA(LPOPENFILENAMEA lpofn)
{
BOOL ret, FullScreen;
FullScreen = dxw.IsFullScreen();
OutTraceDW("GetSaveFileNameA: FullScreen=%x\n", FullScreen);
dxw.SetFullScreen(FALSE);
ret = (*pGetSaveFileNameA)(lpofn);
dxw.SetFullScreen(FullScreen);
OutTraceDW("GetSaveFileNameA: ret=%x\n", ret);
return ret;
}
BOOL WINAPI extGetOpenFileNameA(LPOPENFILENAMEA lpofn)
{
BOOL ret, FullScreen;
FullScreen = dxw.IsFullScreen();
OutTraceDW("GetOpenFileNameA: FullScreen=%x\n", FullScreen);
dxw.SetFullScreen(FALSE);
ret = (*pGetOpenFileNameA)(lpofn);
dxw.SetFullScreen(FullScreen);
OutTraceDW("GetOpenFileNameA: ret=%x\n", ret);
return ret;
}
BOOL WINAPI extGetSaveFileNameW(LPOPENFILENAMEW lpofn)
{
BOOL ret, FullScreen;
FullScreen = dxw.IsFullScreen();
OutTraceDW("GetSaveFileNameW: FullScreen=%x\n", FullScreen);
dxw.SetFullScreen(FALSE);
ret = (*pGetSaveFileNameW)(lpofn);
dxw.SetFullScreen(FullScreen);
OutTraceDW("GetSaveFileNameW: ret=%x\n", ret);
return ret;
}
BOOL WINAPI extGetOpenFileNameW(LPOPENFILENAMEW lpofn)
{
BOOL ret, FullScreen;
FullScreen = dxw.IsFullScreen();
OutTraceDW("GetOpenFileNameW: FullScreen=%x\n", FullScreen);
dxw.SetFullScreen(FALSE);
ret = (*pGetOpenFileNameW)(lpofn);
dxw.SetFullScreen(FullScreen);
OutTraceDW("GetOpenFileNameW: ret=%x\n", ret);
return ret;
}

View File

@ -3848,6 +3848,7 @@ HRESULT WINAPI EnumModesCallbackDumper(LPDDSURFACEDESC lpDDSurfaceDesc, LPVOID l
OutTrace("\tdwBackBufferCount=%d\n", lpDDSurfaceDesc->dwBackBufferCount);
OutTrace("\tdwRefreshRate=%d\n", lpDDSurfaceDesc->dwRefreshRate);
OutTrace("\tlpSurface=%x\n", lpDDSurfaceDesc->lpSurface);
OutTrace("\tCaps=%x(%s)\n", lpDDSurfaceDesc->ddsCaps.dwCaps, ExplainDDSCaps(lpDDSurfaceDesc->ddsCaps.dwCaps));
OutTrace("\tddpfPixelFormat %s\n", DumpPixelFormat((LPDDSURFACEDESC2)lpDDSurfaceDesc));
#ifdef FULLHEXDUMP

View File

@ -106,7 +106,7 @@ static char *Flag5Names[32]={
static char *Flag6Names[32]={
"FORCESWAPEFFECT", "LEGACYALLOC", "NODESTROYWINDOW", "NOMOVIES",
"SUPPRESSRELEASE", "", "", "",
"SUPPRESSRELEASE", "FIXMOVIESCOLOR", "WOW64REGISTRY", "",
"", "", "", "",
"", "", "", "",
"", "", "", "",
@ -1375,8 +1375,10 @@ void HookModule(HMODULE base, int dxversion)
(dxw.dwFlags4 & OVERRIDEREGISTRY) ||
(dxw.dwTFlags & OUTREGISTRY)) HookAdvApi32(base);
HookMSV4WLibs(base); // -- used by Aliens & Amazons demo: what for?
HookAVIFil32(base);
//HookSmackW32(base);
//HookDirectSound(base);
//HookComDlg32(base);
}
#define USEWINNLSENABLE

View File

@ -13,6 +13,8 @@ extern void HookWinMM(HMODULE);
extern void HookAdvApi32(HMODULE);
extern void HookImagehlp(HMODULE);
extern void HookSmackW32(HMODULE);
extern void HookAVIFil32(HMODULE);
extern void HookComDlg32(HMODULE);
extern void InitPosition(int, int, int, int, int, int);
//void InitWindowPos(int, int, int, int);

View File

@ -1,4 +1,5 @@
#define _CRT_SECURE_NO_WARNINGS
#define SYSLIBNAMES_DEFINES
#include <stdio.h>
#include "dxwnd.h"
@ -1428,45 +1429,7 @@ int dxwCore::GetDLLIndex(char *lpFileName)
{
int idx;
char *lpName, *lpNext;
char *SysNames[]={
"kernel32",
"USER32",
"GDI32",
"imelib",
"ADVAPI32",
"ole32",
"ddraw",
"d3d8",
"d3d9",
"d3d10",
"d3d10_1",
"d3d11",
"opengl32",
"msvfw32",
"smackw32",
"version",
"dplayx",
"dsound",
"winmm",
"imm32",
"wsock32",
"dinput",
"dinput8",
"shfolder",
"shell32",
"ws2_32",
"tapi32",
"netapi32",
"wintrust",
"d3dim",
"d3dim700",
"imagehlp",
// "+glide",
// "+glide2x",
// "+glide3x",
NULL
};
lpName=lpFileName;
while (lpNext=strchr(lpName,'\\')) lpName=lpNext+1;
for(idx=0; SysNames[idx]; idx++){

View File

@ -284,9 +284,54 @@ typedef enum {
// SYSLIBIDX_GLIDE,
// SYSLIBIDX_GLIDE2X,
// SYSLIBIDX_GLIDE3X,
SYSLIBIDX_COMDLG32,
SYSLIBIDX_MAX }
enum_syslibraries;
#ifdef SYSLIBNAMES_DEFINES
char *SysNames[]={
"kernel32",
"USER32",
"GDI32",
"imelib",
"ADVAPI32",
"ole32",
"ddraw",
"d3d8",
"d3d9",
"d3d10",
"d3d10_1",
"d3d11",
"opengl32",
"msvfw32",
"smackw32",
"version",
"dplayx",
"dsound",
"winmm",
"imm32",
"wsock32",
"dinput",
"dinput8",
"shfolder",
"shell32",
"ws2_32",
"tapi32",
"netapi32",
"wintrust",
"d3dim",
"d3dim700",
"imagehlp",
// "+glide",
// "+glide2x",
// "+glide3x",
"comdlg32",
NULL
};
#else
extern char *SysNames[];
#endif
typedef enum {
DXVK_NONE=0,
DXVK_CLIPTOGGLE,

View File

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

Binary file not shown.

View File

@ -229,6 +229,10 @@
RelativePath=".\avifile.cpp"
>
</File>
<File
RelativePath=".\comdlg32.cpp"
>
</File>
<File
RelativePath=".\d3dtexture.cpp"
>

View File

@ -724,7 +724,6 @@ HDC WINAPI extGDICreateCompatibleDC(HDC hdc)
BOOL WINAPI extGDIBitBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HDC hdcSrc, int nXSrc, int nYSrc, DWORD dwRop)
{
BOOL res;
extern BOOL isWithinDialog;
OutTraceDW("GDI.BitBlt: HDC=%x nXDest=%d nYDest=%d nWidth=%d nHeight=%d hdcSrc=%x nXSrc=%d nYSrc=%d dwRop=%x(%s)\n",
hdcDest, nXDest, nYDest, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, dwRop, ExplainROP(dwRop));

View File

@ -14,6 +14,7 @@ static HookEntry_Type Hooks[]={
//{HOOK_HOT_CANDIDATE, "ICSendMessage", (FARPROC)NULL, (FARPROC *)&pICSendMessage, (FARPROC)extICSendMessage},
//{HOOK_HOT_CANDIDATE, "ICOpen", (FARPROC)NULL, (FARPROC *)&pICOpen, (FARPROC)extICOpen},
//{HOOK_HOT_CANDIDATE, "MCIWndCreateA", (FARPROC)NULL, (FARPROC *)&pMCIWndCreateA, (FARPROC)extMCIWndCreateA}, // "Man in Black" - beware: this is NOT STDCALL!!!
{HOOK_HOT_CANDIDATE, "ICGetDisplayFormat", (FARPROC)NULL, (FARPROC *)&pICGetDisplayFormat, (FARPROC)extICGetDisplayFormat}, // "Man in Black" - beware: this is NOT STDCALL!!!
{HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator
};
@ -176,4 +177,24 @@ HWND extMCIWndCreateA(HWND hwndParent, HINSTANCE hInstance, DWORD dwStyle, LPCTS
}
return g_hwndMCIWnd;
}
HIC WINAPI extICGetDisplayFormat(HIC hic, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, int BitDepth, int dx, int dy)
{
HIC ret;
OutTraceDW("ICGetDisplayFormat: hic=%x bitdepth=%d dx=%d dy=%d indepth=%d\n", hic, BitDepth, dx, dy, lpbiIn->biBitCount);
ret=(*pICGetDisplayFormat)(hic, lpbiIn, lpbiOut, BitDepth, dx, dy);
if(ret){
OutTraceDW("ICGetDisplayFormat: ret=%x outdepth=%d\n", hic, lpbiOut->biBitCount);
if(dxw.dwFlags6 & FIXMOVIESCOLOR){
lpbiOut->biBitCount = (WORD)dxw.VirtualPixelFormat.dwRGBBitCount;
OutTraceDW("ICGetDisplayFormat: FIXED outdepth=%d\n", lpbiOut->biBitCount);
}
}
else {
OutTraceDW("ICGetDisplayFormat ERROR: err=%d\n", GetLastError());
}
return ret;
}

View File

@ -5,11 +5,13 @@ extern void HookMSV4WLibs(HMODULE);
typedef LRESULT (WINAPI * ICSendMessage_Type)(HIC, UINT, DWORD_PTR, DWORD_PTR);
typedef HIC (WINAPI *ICOpen_Type)(DWORD, DWORD, UINT);
typedef HIC (WINAPI *ICGetDisplayFormat_Type)(HIC, LPBITMAPINFOHEADER, LPBITMAPINFOHEADER, int, int, int);
//typedef HWND (WINAPI *MCIWndCreateA_Type)(HWND, HINSTANCE, DWORD, LPCTSTR);
typedef HWND (*MCIWndCreateA_Type)(HWND, HINSTANCE, DWORD, LPCTSTR);
extern LRESULT WINAPI extICSendMessage(HIC, UINT, DWORD_PTR, DWORD_PTR);
extern HIC WINAPI extICOpen(DWORD, DWORD, UINT);
extern HIC WINAPI extICGetDisplayFormat(HIC, LPBITMAPINFOHEADER, LPBITMAPINFOHEADER, int, int, int);
//extern HWND WINAPI extMCIWndCreateA(HWND, HINSTANCE, DWORD, LPCTSTR);
extern HWND extMCIWndCreateA(HWND, HINSTANCE, DWORD, LPCTSTR);
@ -28,4 +30,5 @@ extern HWND extMCIWndCreateA(HWND, HINSTANCE, DWORD, LPCTSTR);
// MSVFW32.dll:
DXWEXTERN ICSendMessage_Type pICSendMessage DXWINITIALIZED;
DXWEXTERN ICOpen_Type pICOpen DXWINITIALIZED;
DXWEXTERN ICGetDisplayFormat_Type pICGetDisplayFormat;
DXWEXTERN MCIWndCreateA_Type pMCIWndCreateA DXWINITIALIZED;

View File

@ -63,6 +63,10 @@ typedef BOOL (WINAPI *CloseDesktop_Type)(HDESK);
CloseDesktop_Type pCloseDesktop = NULL;
BOOL WINAPI extCloseDesktop(HDESK);
typedef INT_PTR (WINAPI *DialogBoxParamA_Type)(HINSTANCE, LPCTSTR, HWND, DLGPROC, LPARAM);
DialogBoxParamA_Type pDialogBoxParamA = NULL;
INT_PTR WINAPI extDialogBoxParamA(HINSTANCE, LPCTSTR, HWND, DLGPROC, LPARAM);
#ifdef TRACEPALETTE
typedef UINT (WINAPI *GetDIBColorTable_Type)(HDC, UINT, UINT, RGBQUAD *);
GetDIBColorTable_Type pGetDIBColorTable = NULL;
@ -143,6 +147,8 @@ static HookEntry_Type Hooks[]={
{HOOK_HOT_CANDIDATE, "BeginPaint", (FARPROC)BeginPaint, (FARPROC *)&pBeginPaint, (FARPROC)extBeginPaint},
{HOOK_HOT_CANDIDATE, "EndPaint", (FARPROC)EndPaint, (FARPROC *)&pEndPaint, (FARPROC)extEndPaint},
{HOOK_IAT_CANDIDATE, "DialogBoxParamA", (FARPROC)NULL, (FARPROC *)&pDialogBoxParamA, (FARPROC)extDialogBoxParamA},
{HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator
};
@ -309,7 +315,6 @@ static void Stopper(char *s, int line)
// PrimHDC: DC handle of the selected DirectDraw primary surface. NULL when invalid.
HDC PrimHDC=NULL;
BOOL isWithinDialog=FALSE;
LPRECT lpClipRegion=NULL;
RECT ClipRegion;
int LastCurPosX, LastCurPosY;
@ -2095,11 +2100,13 @@ BOOL WINAPI extEndPaint(HWND hwnd, const PAINTSTRUCT *lpPaint)
HWND WINAPI extCreateDialogIndirectParam(HINSTANCE hInstance, LPCDLGTEMPLATE lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM lParamInit)
{
HWND RetHWND;
isWithinDialog=TRUE;
BOOL FullScreen;
FullScreen = dxw.IsFullScreen();
OutTraceDW("CreateDialogIndirectParam: hInstance=%x lpTemplate=%s hWndParent=%x lpDialogFunc=%x lParamInit=%x\n",
hInstance, "tbd", hWndParent, lpDialogFunc, lParamInit);
if(dxw.IsFullScreen() && hWndParent==NULL) hWndParent=dxw.GethWnd();
RetHWND=(*pCreateDialogIndirectParam)(hInstance, lpTemplate, hWndParent, lpDialogFunc, lParamInit);
dxw.SetFullScreen(FullScreen);
// v2.02.73: redirect lpDialogFunc only when it is nor NULL
if(lpDialogFunc) {
@ -2109,19 +2116,19 @@ HWND WINAPI extCreateDialogIndirectParam(HINSTANCE hInstance, LPCDLGTEMPLATE lpT
}
OutTraceDW("CreateDialogIndirectParam: hwnd=%x\n", RetHWND);
isWithinDialog=FALSE;
//if (IsDebug) EnumChildWindows(RetHWND, (WNDENUMPROC)TraceChildWin, (LPARAM)RetHWND);
return RetHWND;
}
HWND WINAPI extCreateDialogParam(HINSTANCE hInstance, LPCTSTR lpTemplateName, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM lParamInit)
{
HWND RetHWND;
isWithinDialog=TRUE;
BOOL FullScreen;
FullScreen = dxw.IsFullScreen();
OutTraceDW("CreateDialogParam: hInstance=%x lpTemplateName=%s hWndParent=%x lpDialogFunc=%x lParamInit=%x\n",
hInstance, "tbd", hWndParent, lpDialogFunc, lParamInit);
if(hWndParent==NULL) hWndParent=dxw.GethWnd();
RetHWND=(*pCreateDialogParam)(hInstance, lpTemplateName, hWndParent, lpDialogFunc, lParamInit);
dxw.SetFullScreen(FullScreen);
// v2.02.73: redirect lpDialogFunc only when it is nor NULL: fix for "LEGO Stunt Rally"
if(lpDialogFunc) {
@ -2131,16 +2138,14 @@ HWND WINAPI extCreateDialogParam(HINSTANCE hInstance, LPCTSTR lpTemplateName, HW
}
OutTraceDW("CreateDialogParam: hwnd=%x\n", RetHWND);
isWithinDialog=FALSE;
//if (IsDebug) EnumChildWindows(RetHWND, (WNDENUMPROC)TraceChildWin, (LPARAM)RetHWND);
return RetHWND;
}
BOOL WINAPI extMoveWindow(HWND hwnd, int X, int Y, int nWidth, int nHeight, BOOL bRepaint)
{
BOOL ret;
OutTraceDW("MoveWindow: hwnd=%x xy=(%d,%d) size=(%d,%d) repaint=%x indialog=%x fullscreen=%x\n",
hwnd, X, Y, nWidth, nHeight, bRepaint, isWithinDialog, dxw.IsFullScreen());
OutTraceDW("MoveWindow: hwnd=%x xy=(%d,%d) size=(%d,%d) repaint=%x fullscreen=%x\n",
hwnd, X, Y, nWidth, nHeight, bRepaint, dxw.IsFullScreen());
if(dxw.Windowize){
if(dxw.IsDesktop(hwnd)){
@ -2940,4 +2945,16 @@ BOOL WINAPI extCloseDesktop(HDESK hDesktop)
{
OutTraceDW("CloseDesktop: SUPPRESS hDesktop=%x\n", hDesktop);
return TRUE;
}
}
INT_PTR WINAPI extDialogBoxParamA(HINSTANCE hInstance, LPCTSTR lpTemplateName, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam)
{
BOOL ret, FullScreen;
FullScreen = dxw.IsFullScreen();
OutTraceDW("DialogBoxParamA: FullScreen=%x\n", FullScreen);
dxw.SetFullScreen(FALSE);
ret = (*pDialogBoxParamA)(hInstance, lpTemplateName, hWndParent, lpDialogFunc, dwInitParam);
dxw.SetFullScreen(FullScreen);
OutTraceDW("DialogBoxParamA: ret=%x\n", ret);
return ret;
}

View File

@ -47,6 +47,7 @@ void CTabCompat::DoDataExchange(CDataExchange* pDX)
// Registry management
DDX_Check(pDX, IDC_EMULATEREGISTRY, cTarget->m_EmulateRegistry);
DDX_Check(pDX, IDC_OVERRIDEREGISTRY, cTarget->m_OverrideRegistry);
DDX_Check(pDX, IDC_WOW64REGISTRY, cTarget->m_Wow64Registry);
}
BEGIN_MESSAGE_MAP(CTabCompat, CDialog)

View File

@ -41,6 +41,7 @@ void CTabSysLibs::DoDataExchange(CDataExchange* pDX)
// MCI
DDX_Check(pDX, IDC_REMAPMCI, cTarget->m_RemapMCI);
DDX_Check(pDX, IDC_NOMOVIES, cTarget->m_NoMovies);
DDX_Check(pDX, IDC_FIXMOVIESCOLOR, cTarget->m_FixMoviesColor);
// Kernel32
DDX_Radio(pDX, IDC_SONDEFAULT, cTarget->m_SonProcessMode);

View File

@ -87,6 +87,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
m_HookEnabled = TRUE; // default true !!
m_EmulateRegistry = FALSE;
m_OverrideRegistry = FALSE;
m_Wow64Registry = FALSE;
m_FullScreenOnly = FALSE;
m_FilterMessages = FALSE;
m_PeekAllMessages = FALSE;
@ -112,6 +113,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
m_HookGlide = FALSE;
m_RemapMCI = TRUE;
m_NoMovies = FALSE;
m_FixMoviesColor = FALSE;
m_SuppressRelease = FALSE;
m_KeepCursorWithin = FALSE;
m_KeepCursorFixed = FALSE;

View File

@ -57,6 +57,7 @@ public:
BOOL m_HookDLLs;
BOOL m_EmulateRegistry;
BOOL m_OverrideRegistry;
BOOL m_Wow64Registry;
BOOL m_FullScreenOnly;
BOOL m_FilterMessages;
BOOL m_PeekAllMessages;
@ -88,6 +89,7 @@ public:
BOOL m_HookGlide;
BOOL m_RemapMCI;
BOOL m_NoMovies;
BOOL m_FixMoviesColor;
BOOL m_SuppressRelease;
BOOL m_KeepCursorWithin;
BOOL m_KeepCursorFixed;

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -173,6 +173,7 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
if(dlg->m_HookDLLs) t->flags3 |= HOOKDLLS;
if(dlg->m_EmulateRegistry) t->flags3 |= EMULATEREGISTRY;
if(dlg->m_OverrideRegistry) t->flags4 |= OVERRIDEREGISTRY;
if(dlg->m_Wow64Registry) t->flags6 |= WOW64REGISTRY;
if(dlg->m_HookEnabled) t->flags3 |= HOOKENABLED;
if(dlg->m_NoBanner) t->flags2 |= NOBANNER;
if(dlg->m_StartDebug) t->flags2 |= STARTDEBUG;
@ -308,6 +309,7 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
if(dlg->m_HookGlide) t->flags4 |= HOOKGLIDE;
if(dlg->m_RemapMCI) t->flags5 |= REMAPMCI;
if(dlg->m_NoMovies) t->flags6 |= NOMOVIES;
if(dlg->m_FixMoviesColor) t->flags6 |= FIXMOVIESCOLOR;
if(dlg->m_SuppressRelease) t->flags6 |= SUPPRESSRELEASE;
if(dlg->m_KeepCursorWithin) t->flags |= KEEPCURSORWITHIN;
if(dlg->m_KeepCursorFixed) t->flags2 |= KEEPCURSORFIXED;
@ -405,6 +407,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
dlg->m_HookDLLs = t->flags3 & HOOKDLLS ? 1 : 0;
dlg->m_EmulateRegistry = t->flags3 & EMULATEREGISTRY ? 1 : 0;
dlg->m_OverrideRegistry = t->flags4 & OVERRIDEREGISTRY ? 1 : 0;
dlg->m_Wow64Registry = t->flags6 & WOW64REGISTRY ? 1 : 0;
dlg->m_HookEnabled = t->flags3 & HOOKENABLED ? 1 : 0;
dlg->m_NoBanner = t->flags2 & NOBANNER ? 1 : 0;
dlg->m_StartDebug = t->flags2 & STARTDEBUG ? 1 : 0;
@ -526,6 +529,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
dlg->m_HookGlide = t->flags4 & HOOKGLIDE ? 1 : 0;
dlg->m_RemapMCI = t->flags5 & REMAPMCI ? 1 : 0;
dlg->m_NoMovies = t->flags6 & NOMOVIES ? 1 : 0;
dlg->m_FixMoviesColor = t->flags6 & FIXMOVIESCOLOR ? 1 : 0;
dlg->m_SuppressRelease = t->flags6 & SUPPRESSRELEASE ? 1 : 0;
dlg->m_KeepCursorWithin = t->flags & KEEPCURSORWITHIN ? 1 : 0;
dlg->m_KeepCursorFixed = t->flags2 & KEEPCURSORFIXED ? 1 : 0;

Binary file not shown.

26
to do 24.txt Normal file
View File

@ -0,0 +1,26 @@
Rotture di AERO: Worms Pinball, Sim City 3000
regolazione luminosita
scrolling decelerato
CONTROLLO MOUSE IN gIOVANNA d'aRCO
Tetris Worlds - va in crash, come mai???
Thief dark project GOLD GOG
Thorgal (lock after movies)
Total annihilation kingdoms ,,,,,, -> native modes / SVGA modes !!!! EnumDisplayModesD
Total immersion racing
Total soccer (directx)
Risk II (hasbro)
Sid Meier's Alpha Centauri (GOG)
GetMessagePos() hook in Settlers III ???

8
todo.txt.txt Normal file
View File

@ -0,0 +1,8 @@
darius gaiden - CoCreateInstance used instead of DirectDrawCreate??? fixed
Crimson Skies - fixed
Echelon ???
Forsaken: why the Viewport::Clear method crashes? see d3d7.cpp
dipende dall' aver attivato AEROBOOST. Tolto quello, va .....