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

v2_03_91_src_fx5

Former-commit-id: 5354fc59f0281dcfbedf0226d607cc4501799929
This commit is contained in:
gho tik 2016-10-16 12:47:44 -04:00 committed by Refael ACkermann
parent 6883c264d4
commit 52dcf84601
23 changed files with 298 additions and 44 deletions

View File

@ -347,6 +347,7 @@ char *hexdump(unsigned char *, int);
LRESULT CALLBACK extWindowProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK extChildWindowProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK extDialogWindowProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK dw_Hider_Message_Handler(HWND, UINT, WPARAM, LPARAM);
// defines below to condition debug message handling

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1c0a0bc5af69c9bca35060d300910d4ec21d43d16136375c612d412aee68c925
size 688128
oid sha256:316eb7122e88fb04f315feae566f9dd25795711486906c18921c705267ead3ea
size 688640

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3d33e2d7ebb3bdfa9da636b6ab7630829f3aacb7b02fd0e07d8cbdba99d9ecae
oid sha256:a8ac20985704c056d733ed339eed0f3da3467d780f238d3717fb855f5d8dec20
size 662016

View File

@ -9,7 +9,7 @@ notes0=
registry0=
ver0=0
coord0=0
flag0=136314914
flag0=136314886
flagg0=1207959552
flagh0=20
flagi0=138412036
@ -30,3 +30,6 @@ maxres0=-1
swapeffect0=0
maxddinterface0=7
slowratio0=2
monitorid0=-1
initresw0=800
initresh0=600

View File

@ -0,0 +1,35 @@
[target]
title0=Chicken Invaders 2
path0=F:\Games\Chicken Invaders 2\ChickenInvaders2.exe
startfolder0=
launchpath0=
module0=
opengllib0=
notes0=
registry0=
ver0=0
monitorid0=-1
coord0=0
flag0=136314914
flagg0=1207959552
flagh0=20
flagi0=138412036
flagj0=4224
flagk0=65536
flagl0=65536
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

View File

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

View File

@ -1,27 +1,27 @@
[target]
title0=Galapagos
path0=D:\Games\Galapagos\GALA.EXE
path0=F:\Games\Galapagos\GALA.EXE
startfolder0=
launchpath0=
module0=
opengllib0=
notes0=Needs single thread affinity to avoid concurrency crashes.\nBetter add also message pump to avoid process kill by OS while moving the mouse\nNeeds SmackW32 hooking and fix loop flag to be able to show the company logo initial movie
notes0=
registry0=
ver0=0
monitorid0=0
monitorid0=-1
coord0=0
flag0=-1464811354
flagg0=1209008128
flagh0=532
flag0=137379894
flagg0=1207959552
flagh0=33300
flagi0=138412036
flagj0=201326720
flagk0=65536
flagl0=67108880
flagj0=469766272
flagk0=67584
flagl0=25231376
flagm0=0
tflag0=0
dflag0=0
posx0=50
posy0=50
posx0=150
posy0=150
sizx0=800
sizy0=600
maxfps0=0
@ -30,6 +30,6 @@ winver0=0
maxres0=-1
swapeffect0=0
maxddinterface0=7
slowratio0=1
initresw0=0
initresh0=0
slowratio0=2
initresw0=640
initresh0=480

View File

@ -0,0 +1,33 @@
[target]
title0=Jeff Wayne's - The War of the Worlds
path0=F:\Games\Jeff Wayne's - The War of the Worlds\Wow.exe
startfolder0=
launchpath0=
module0=
opengllib0=
notes0=
registry0=
ver0=0
monitorid0=-1
coord0=0
flag0=681574434
flagg0=1207959552
flagh0=20
flagi0=-2009071612
flagj0=4224
flagk0=65536
flagl0=0
flagm0=0
tflag0=0
dflag0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0
winver0=0
maxres0=-1
swapeffect0=0
maxddinterface0=7
slowratio0=2

View File

@ -0,0 +1,35 @@
[target]
title0=O.D.T. Escape Or Die Trying (SW 640X480)
path0=F:\Games\ODT\ODT.exe
startfolder0=
launchpath0=F:\Games\ODT\ODT.exe 640 480 FALSE DISPLAY (SW)
module0=
opengllib0=
notes0=
registry0=
ver0=0
monitorid0=0
coord0=0
flag0=134217826
flagg0=1207959552
flagh0=20
flagi0=138412036
flagj0=128
flagk0=0
flagl0=0
flagm0=0
tflag0=0
dflag0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0
winver0=0
maxres0=-1
swapeffect0=0
maxddinterface0=7
slowratio0=1
initresw0=0
initresh0=0

View File

@ -0,0 +1,35 @@
[target]
title0=O.D.T. Escape Or Die Trying (HW 640X480)
path0=F:\Games\ODT\ODT.exe
startfolder0=
launchpath0=F:\Games\ODT\ODT.exe 640 480 TRUE DISPLAY (HW)
module0=
opengllib0=
notes0=
registry0=”&G
ver0=0
monitorid0=0
coord0=0
flag0=134217826
flagg0=1207959552
flagh0=20
flagi0=138412036
flagj0=128
flagk0=0
flagl0=0
flagm0=0
tflag0=0
dflag0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0
winver0=0
maxres0=-1
swapeffect0=0
maxddinterface0=7
slowratio0=1
initresw0=0
initresh0=0

View File

@ -0,0 +1,35 @@
[target]
title0=V-Rally 2 Expert Edition
path0=F:\Games\V-Rally 2 Expert Edition\V-Rally2 Expert Edition\Vrally2.exe
startfolder0=
launchpath0=
module0=
opengllib0=
notes0=Note: the game detects Alt-tabs and terminates. \nThen the "do not notify on task switch" is mandatory, but also minimizing is not supported.
registry0=
ver0=0
monitorid0=-1
coord0=0
flag0=136314931
flagg0=1207959808
flagh0=20
flagi0=138412036
flagj0=4224
flagk0=65536
flagl0=1048576
flagm0=0
tflag0=0
dflag0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0
winver0=0
maxres0=-1
swapeffect0=0
maxddinterface0=7
slowratio0=2
initresw0=800
initresh0=600

View File

@ -1,19 +1,6 @@
OnRun idx=3 prog="D:\Games\Barbie Riding Club\Program\Barbie Riding Club.exe"
OnRun idx=0 prog="G:\Games\Nascar Racing 3\NASCAR Racing 3.exe"
setwindowshook mode
OnRun idx=3 prog="D:\Games\Barbie Riding Club\Program\Barbie Riding Club.exe"
OnRun idx=0 prog="G:\Games\Nascar Racing 3\NASCAR Racing 3.exe"
setwindowshook mode
OnRun idx=5 prog="D:\Games\The Creed\Creed.exe"
export virtual registry
setwindowshook mode
OnRun idx=4 prog="D:\Games\The Creed (SW DEMO)\DemoCreed.exe"
setwindowshook mode
OnRun idx=4 prog="D:\Games\The Creed (SW DEMO)\DemoCreed.exe"
setwindowshook mode
OnRun idx=5 prog="D:\Games\The Creed ( HW DEMO)\DemoCreed.exe"
setwindowshook mode
OnRun idx=4 prog="D:\Games\The Creed (SW DEMO)\DemoCreed.exe"
setwindowshook mode
OnRun idx=5 prog="D:\Games\The Creed ( HW DEMO)\DemoCreed.exe"
setwindowshook mode
OnRun idx=5 prog="D:\Games\The Creed ( HW DEMO)\DemoCreed.exe"
OnRun idx=0 prog="G:\Games\Nascar Racing 3\NASCAR Racing 3.exe"
setwindowshook mode

View File

@ -1293,9 +1293,12 @@ fix: manages the possibility or ValidateRect receiving a NULL RECT pointer - fix
add: auto-blit mode in SmakW32 frame loop - shows "Galapagos" company logo intro movie
fix: force stop blitting on window minimize event - fixes "Galapagos" and many others ....
v2.03.91.fx1-4:
v2.03.91.fx1-5:
fix: eliminated LOC causing bad window sizing
fix: better desktop hider management
fix: DC emulation object leakage - fixes "Yu No" leakage
fix: USER32 EndPaint DC leakage - fixes "Yu No" leakage
fix: window position problems
fix: GUI auto hide mode enabled and disabled without need of GUI restart
fix: ddraw surface stack policy. Recovers "Warhammer 40K Rites of War" after v2.03.83 fix.
add: /q quiet mode, no message dialogs on screen

View File

@ -6,6 +6,8 @@
#include "syslibs.h"
#include "dxhelper.h"
//#define FOUR_WINDOWS_STRIPED_HIDER
/****************************************************************************
* Function Name : gShowHideTaskBar() *
* Parameters : BOOL bHide (flag to toggle Show/Hide of Taskbar) *
@ -53,9 +55,10 @@ void gShowHideTaskBar(BOOL bHide /*=FALSE*/)
static bool quit = false;
static HWND wHider=0;
static RECT wDesktop;
#ifdef FOUR_WINDOWS_STRIPED_HIDER
static LRESULT CALLBACK Hider_Message_Handler(HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lparam)
LRESULT CALLBACK dw_Hider_Message_Handler(HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lparam)
{
switch(umsg)
{
@ -70,8 +73,12 @@ static LRESULT CALLBACK Hider_Message_Handler(HWND hwnd, UINT umsg, WPARAM wpara
return (*pDefWindowProcA)(hwnd, umsg, wparam, lparam);
}
#else
static LRESULT CALLBACK Hider_Message_Handler(HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lparam)
LRESULT CALLBACK dw_Hider_Message_Handler(HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lparam)
{
extern void ExplainMsg(char *, HWND, UINT, WPARAM, LPARAM);
// ExplainMsg("HIDER", hwnd, umsg, wparam, lparam);
//LRESULT ret;
switch(umsg)
{
@ -86,6 +93,7 @@ static LRESULT CALLBACK Hider_Message_Handler(HWND hwnd, UINT umsg, WPARAM wpara
// OutTrace("HIDER: msg=%x(%s) w/lparam= %x-%x\n", umsg, ExplainWinMessage(umsg), wparam, lparam);
if(hwnd == wHider){
WINDOWPOS *wp;
switch(umsg){
case WM_NOTIFY:
case WM_SETFOCUS:
@ -103,6 +111,14 @@ static LRESULT CALLBACK Hider_Message_Handler(HWND hwnd, UINT umsg, WPARAM wpara
(*pSetWindowPos)(dxw.GethWnd(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE|SWP_NOOWNERZORDER|SWP_NOSENDCHANGING);
return 0;
break;
case WM_WINDOWPOSCHANGING:
case WM_WINDOWPOSCHANGED:
wp = (WINDOWPOS *)lparam;
wp->x = wDesktop.left;
wp->y = wDesktop.top;
wp->cx = wDesktop.right - wDesktop.left;
wp->cy = wDesktop.bottom - wDesktop.top;
break;
default:
break;
}
@ -142,7 +158,7 @@ static HINSTANCE RegisterHiderWindow()
WndClsEx.cbSize = sizeof(WNDCLASSEX);
WndClsEx.style = 0;
WndClsEx.lpfnWndProc = Hider_Message_Handler; //DefWindowProc;
WndClsEx.lpfnWndProc = dw_Hider_Message_Handler; //DefWindowProc;
WndClsEx.cbClsExtra = 0;
WndClsEx.cbWndExtra = 0;
WndClsEx.hIcon = LoadIcon(NULL, IDI_APPLICATION);
@ -274,7 +290,7 @@ void dxwCore::HideDesktop(HWND hwnd)
{
static BOOL DoOnce=TRUE;
static ATOM aClass;
RECT wRect, wDesktop;
RECT wRect;
static HINSTANCE hinst=NULL;
if(DoOnce){
@ -302,7 +318,7 @@ void dxwCore::HideDesktop(HWND hwnd)
if(!wHider) {
wHider=(*pCreateWindowExA)(0, "dxwnd:hider", "hider", 0, 0, 0, 0, 0, hParent, NULL, hinst, NULL);
if(!wHider) {
OutTrace("HideDesktop: CreateWindowEx ERROR hwnd=%x err=%d\n", hwnd, GetLastError());
OutTrace("HideDesktop: CreateWindowEx ERROR hwnd=%x parent=%x err=%d\n", hwnd, hParent, GetLastError());
return;
}
(*pSetWindowLongA)(wHider, GWL_STYLE, 0);

View File

@ -652,7 +652,8 @@ void HookWindowProc(HWND hwnd)
// don't hook twice ....
if ((pWindowProc == extWindowProc) ||
(pWindowProc == extChildWindowProc) ||
(pWindowProc == extDialogWindowProc)){
(pWindowProc == extDialogWindowProc) ||
(pWindowProc == dw_Hider_Message_Handler)){
// hooked already !!!
OutTraceDW("GetWindowLong: hwnd=%x WindowProc HOOK already in place\n", hwnd);
return;

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.91.fx4"
#define VERSION "2.03.91.fx5"
#define DDTHREADLOCK 1
//#define LOCKTHREADS

Binary file not shown.

View File

@ -91,8 +91,20 @@ void dxwSStack::ClearSurfaceList()
SurfaceDB[i].uRole = 0;
SurfaceDB[i].uVersion = 0;
}
lpDDSPrimary = NULL;
lpDDSBackBuffer = NULL;
// v2.03.91.fx5: emptying the list entirely is no good for "Warhammer 40K Rites of War"
// better leave the last used primary and backbuffer surfaces.
if(lpDDSPrimary){
SurfaceDB[0].lpdds = lpDDSPrimary;
SurfaceDB[0].uRef = TRUE;
SurfaceDB[0].uRole = SURFACE_ROLE_PRIMARY;
SurfaceDB[0].uVersion = 0;
}
if(lpDDSBackBuffer){
SurfaceDB[1].lpdds = lpDDSBackBuffer;
SurfaceDB[1].uRef = TRUE;
SurfaceDB[1].uRole = SURFACE_ROLE_BACKBUFFER;
SurfaceDB[1].uVersion = 0;
}
}
void dxwSStack::UnrefSurface(LPDIRECTDRAWSURFACE ps)

View File

@ -848,6 +848,13 @@ LONG WINAPI extSetWindowLong(HWND hwnd, int nIndex, LONG dwNewLong, SetWindowLon
!(dxw.dwFlags6 & NOWINDOWHOOKS)){ // v2.03.41 - debug flag
WNDPROC lres;
WNDPROC OldProc;
// fix ....
extern LRESULT CALLBACK dw_Hider_Message_Handler(HWND, UINT, WPARAM, LPARAM);
if(dwNewLong==(LONG)dw_Hider_Message_Handler) {
return (*pSetWindowLong)(hwnd, nIndex, (LONG)dw_Hider_Message_Handler);
}
// GPL fix
if(dxw.IsRealDesktop(hwnd) && dxw.Windowize) {
hwnd=dxw.GethWnd();
@ -1459,6 +1466,10 @@ static void HookChildWndProc(HWND hwnd, DWORD dwStyle, LPCTSTR ApiName)
if(dxw.dwFlags6 & NOWINDOWHOOKS) return;
pWindowProc = (WNDPROC)(*pGetWindowLong)(hwnd, GWL_WNDPROC);
extern LRESULT CALLBACK dw_Hider_Message_Handler(HWND, UINT, WPARAM, LPARAM);
if(pWindowProc==dw_Hider_Message_Handler) return;
if((pWindowProc == extWindowProc) ||
(pWindowProc == extChildWindowProc) ||
(pWindowProc == extDialogWindowProc)){ // avoid recursions

View File

@ -8,6 +8,7 @@
extern char gInitPath[];
extern BOOL gbDebug;
extern BOOL gAutoHideMode;
Key_Type FKeys[] = {
{IDC_KEY_LABEL1, "Time toggle", IDC_KEY_COMBO1, "timetoggle", 0},
@ -225,4 +226,5 @@ void CGlobalSettings::OnOK()
}
//(CDxwndhostView *)(this->GetParent())->UpdateHotKeys();
gbDebug = m_DebugMode;
gAutoHideMode = m_AutoHideMode;
}

View File

@ -2,10 +2,14 @@
#include <stdio.h>
#include <stdarg.h>
extern BOOL gQuietMode;
int MessageBoxLang(UINT iText, UINT iCaption, UINT uType)
{
WCHAR sBuffer[1024+1];
WCHAR sCaption[48+1];
if (gQuietMode) return MB_OK;
LoadStringW(AfxGetResourceHandle(), iText, (LPWSTR)&sBuffer, sizeof(sBuffer));
LoadStringW(AfxGetResourceHandle(), iCaption, (LPWSTR)&sCaption, sizeof(sCaption));
@ -19,6 +23,7 @@ int MessageBoxLangArg(UINT iText, UINT iCaption, UINT uType, ...)
WCHAR sFormat[1024+1];
WCHAR sCaption[48+1];
if (gQuietMode) return MB_OK;
LoadStringW(AfxGetResourceHandle(), iText, (LPWSTR)&sFormat, sizeof(sFormat));
LoadStringW(AfxGetResourceHandle(), iCaption, (LPWSTR)&sCaption, sizeof(sCaption));

View File

@ -37,6 +37,7 @@ UINT m_InitialState = DXW_ACTIVE;
BOOL gbDebug = FALSE;
BOOL gTransientMode = FALSE;
BOOL gAutoHideMode = FALSE;
BOOL gQuietMode = FALSE;
int iProgIndex;
extern char m_ConfigFileName[20+1] = "dxwnd.ini";
@ -111,6 +112,10 @@ void CNewCommandLineInfo::ParseParam(LPCTSTR lpszParam, BOOL bFlag, BOOL bLast)
iProgIndex = atoi(&p[2]);
return;
}
if (sParam.MakeLower() == "q"){
// (Q)uiet mode: no message dialogs on screen
gQuietMode = TRUE;
}
}
// Call the base class to ensure proper command line processing

Binary file not shown.