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

v2_04_12_src

Former-commit-id: 5667f48d49d251adb6e9a8058e4b6943813c5769
This commit is contained in:
gho tik 2017-02-07 11:50:10 -05:00 committed by Refael ACkermann
parent bd43384522
commit 80f670b002
24 changed files with 1406 additions and 76 deletions

View File

@ -274,6 +274,7 @@
#define ALLOWSYSMEMON3DDEV 0x00400000 // Suppress DDSCAPS_SYSTEMMEMORY option when DDSCAPS_3DDEVICE is set
#define CLIPMENU 0x00800000 // Include window menu in mouse clipper area
#define BACKGROUNDPRIORITY 0x01000000 // Lower process priority when in background state
#define OFFSCREENZBUFFER 0x02000000 // Allow building plain surfaces and ZBuffer on offscreen videomemory surfaces
// 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:1409b8473fd9673dda880af142fa01e172890f873b518c82d05214244d7c6514
size 786944
oid sha256:f4db08ed8206eab319c89f808e3b59311060b13ba6f2f8b01b12f14d78b48926
size 787456

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0a5afe5a71f0bb24b48a816469f93ffbcf776d16b03d6ad27c411a3e35f5aba9
size 676352
oid sha256:5789a039f251a7d64e49573c0f7cc63fea3369f091782fb92fe6efb7c899d94a
size 675840

1304
build/dxwnd.ini Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,15 @@
OnRun idx=36 prog="D:\Games\International Football 2000\MSIF2000.ICD" unhooked=0
setwindowshook mode
OnRun idx=36 prog="D:\Games\International Football 2000\MSIF2000.ICD" unhooked=0
OnRun idx=19 prog="F:\Games\tourcar\tourcars.exe" unhooked=0
self elevation
setwindowshook mode
OnRun idx=37 prog="F:\Games\tourcar\tourcars.exe" unhooked=0
self elevation
setwindowshook mode
OnRun idx=36 prog="F:\Games\tourcar\tourcars.exe" unhooked=0
self elevation
setwindowshook mode
OnRun idx=36 prog="F:\Games\tourcar\tourcars.exe" unhooked=0
self elevation
setwindowshook mode
OnRun idx=36 prog="F:\Games\tourcar\tourcars.exe" unhooked=0
self elevation
setwindowshook mode

View File

@ -1520,3 +1520,10 @@ fix: fixed AdjustWindowRect/Ex() wrapper to always neutralize window changes (go
fix: fixed message processing for FORCEWINRESIZE: now "Man TT Superbike" can be moved and resized (at least on Win10).
add: added BACKGROUNDPRIORITY handling
add: added CLIPMENU handling
v2.04.12
GUI:
add: "Support offscreen 3D" flag (OFFSCREENZBUFFER)
DLL:
fix: recursion bug in CreateWindowExA hooker
add: OFFSCREENZBUFFER flag

View File

@ -285,6 +285,7 @@ HRESULT WINAPI extSetSurfaceDesc7(LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, DWORD);
// DirectDrawClipper
HRESULT WINAPI extReleaseC(LPDIRECTDRAWCLIPPER);
HRESULT WINAPI extGetClipList(LPDIRECTDRAWCLIPPER, LPRECT, LPRGNDATA, LPDWORD);
HRESULT WINAPI extSetClipList(LPDIRECTDRAWCLIPPER, LPRGNDATA, DWORD);
HRESULT WINAPI extSetHWnd(LPDIRECTDRAWCLIPPER, DWORD, HWND);
// DirectDrawPalette
@ -399,10 +400,10 @@ QueryInterface_Type pQueryInterfaceC;
AddRefC_Type pAddRefC;
ReleaseC_Type pReleaseC;
GetClipList_Type pGetClipList;
SetClipList_Type pSetClipList;
GetHWnd_Type pGetHWnd;
InitializeC_Type pInitializeC;
IsClipListChanged_Type pIsClipListChanged;
SetClipList_Type pSetClipList;
SetHWnd_Type pSetHWnd;
/* DirectDrawPalette hook pointers */
@ -1326,6 +1327,7 @@ static void HookDDClipper(LPDIRECTDRAWCLIPPER FAR* lplpDDClipper)
SetHook((void *)(**(DWORD **)lplpDDClipper + 8), extReleaseC, (void **)&pReleaseC, "Release(C)");
SetHook((void *)(**(DWORD **)lplpDDClipper + 12), extGetClipList, (void **)&pGetClipList, "GetClipList(C)");
SetHook((void *)(**(DWORD **)lplpDDClipper + 28), extSetClipList, (void **)&pSetClipList, "SetClipList(C)");
SetHook((void *)(**(DWORD **)lplpDDClipper + 32), extSetHWnd, (void **)&pSetHWnd, "SetHWnd(C)");
}
@ -2315,7 +2317,7 @@ HRESULT WINAPI extSetCooperativeLevel4(LPDIRECTDRAW lpdd, HWND hwnd, DWORD dwfla
HRESULT WINAPI extSetCooperativeLevel7(LPDIRECTDRAW lpdd, HWND hwnd, DWORD dwflags)
{ return extSetCooperativeLevel(7, pSetCooperativeLevel7, lpdd, hwnd, dwflags); }
void FixSurfaceCaps(LPDDSURFACEDESC2 lpddsd, int dxversion)
void FixSurfaceCapsInner(LPDDSURFACEDESC2 lpddsd, int dxversion)
{
// rules of thumb:
// 1) textures should be left untouched (switching to SYSTEMMEMORY when forcing HEL may even fail!)
@ -2328,9 +2330,6 @@ void FixSurfaceCaps(LPDDSURFACEDESC2 lpddsd, int dxversion)
if(!(lpddsd->dwFlags & DDSD_CAPS)) lpddsd->ddsCaps.dwCaps = 0;
OutTraceDW("FixSurfaceCaps: Flags=%x(%s) Caps=%x(%s)\n",
lpddsd->dwFlags, ExplainFlags(lpddsd->dwFlags), lpddsd->ddsCaps.dwCaps, ExplainDDSCaps(lpddsd->ddsCaps.dwCaps));
// DDSCAPS_TEXTURE surfaces must be left untouched, unless you set FORCESHEL: in this case switch VIDEOMEMORY to SYSTEMMEMORY
if((lpddsd->dwFlags & DDSD_CAPS) && (lpddsd->ddsCaps.dwCaps & DDSCAPS_TEXTURE)){
if (dxw.dwFlags3 & FORCESHEL) {
@ -2341,6 +2340,8 @@ void FixSurfaceCaps(LPDDSURFACEDESC2 lpddsd, int dxversion)
// TEXTURE: enforce PIXELFORMAT on MEMORY
lpddsd->dwFlags |= DDSD_PIXELFORMAT;
GetPixFmt(lpddsd);
// trytry
// lpddsd->ddsCaps.dwCaps |= DDSCAPS_OFFSCREENPLAIN; // OFFSCREENPLAIN to set a different pixel format
}
if((lpddsd->dwFlags & DDSD_PIXELFORMAT) &&
(lpddsd->ddpfPixelFormat.dwFlags & DDPF_FOURCC) &&
@ -2349,19 +2350,11 @@ void FixSurfaceCaps(LPDDSURFACEDESC2 lpddsd, int dxversion)
lpddsd->ddpfPixelFormat.dwFourCC = 0;
lpddsd->ddpfPixelFormat.dwFlags &= ~DDPF_FOURCC;
}
//// try
//if((lpddsd->dwFlags & DDSD_PIXELFORMAT) && (lpddsd->ddpfPixelFormat.dwRGBBitCount == 16)){
// lpddsd->ddpfPixelFormat.dwRGBAlphaBitMask = 0x8000;
// lpddsd->ddpfPixelFormat.dwBBitMask = 0x001F;
// lpddsd->ddpfPixelFormat.dwGBitMask = 0x03E0;
// lpddsd->ddpfPixelFormat.dwRBitMask = 0x7C00;
//}
//// try
return;
}
if((lpddsd->dwFlags & DDSD_CAPS) && (lpddsd->ddsCaps.dwCaps & DDSCAPS_ZBUFFER)) { // z-buffer surface - set to memory
if(dxw.dwFlags8 & OFFSCREENZBUFFER) return;
lpddsd->ddsCaps.dwCaps = DDSCAPS_ZBUFFER;
if (dxw.dwFlags8 & ALLOWSYSMEMON3DDEV) lpddsd->ddsCaps.dwCaps = DDSCAPS_SYSTEMMEMORY|DDSCAPS_ZBUFFER;
return;
@ -2369,13 +2362,14 @@ void FixSurfaceCaps(LPDDSURFACEDESC2 lpddsd, int dxversion)
// this is valid just in case the above block eliminated TEXTURE surfaces....
if (lpddsd->dwFlags & DDSD_PIXELFORMAT){ // pixel format defined
if (lpddsd->ddsCaps.dwCaps & DDSCAPS_SYSTEMMEMORY) lpddsd->ddsCaps.dwCaps |= DDSCAPS_OFFSCREENPLAIN; // to allow for pixel format conversion (Quest for Glory 5 - GOG version)
// trytry
//if (lpddsd->ddsCaps.dwCaps & DDSCAPS_SYSTEMMEMORY) lpddsd->ddsCaps.dwCaps |= DDSCAPS_OFFSCREENPLAIN; // to allow for pixel format conversion (Quest for Glory 5 - GOG version)
lpddsd->ddsCaps.dwCaps |= DDSCAPS_OFFSCREENPLAIN;
return;
}
if ((lpddsd->dwFlags & (DDSD_WIDTH|DDSD_HEIGHT)) == DDSD_WIDTH) { // buffer surface
return;
}
// buffer surface
if ((lpddsd->dwFlags & (DDSD_WIDTH|DDSD_HEIGHT)) == DDSD_WIDTH) return;
// 3DDEVICE no TEXTURE: enforce PIXELFORMAT
// v2.02.90: added for "Zoo Tycoon" textures
@ -2385,23 +2379,41 @@ void FixSurfaceCaps(LPDDSURFACEDESC2 lpddsd, int dxversion)
// we try to manage them by checking for the DDSCAPS_VIDEOMEMORY capability ...
if((lpddsd->dwFlags & DDSD_CAPS) && (lpddsd->ddsCaps.dwCaps & DDSCAPS_3DDEVICE)){
lpddsd->dwFlags |= DDSD_PIXELFORMAT;
GetPixFmt(lpddsd);
if(dxw.dwFlags8 & OFFSCREENZBUFFER) {
// add OFFSCREENPLAIN to set a different pixel format
lpddsd->ddsCaps.dwCaps |= DDSCAPS_OFFSCREENPLAIN;
return;
}
if(lpddsd->ddsCaps.dwCaps & DDSCAPS_VIDEOMEMORY)
lpddsd->ddsCaps.dwCaps = (DDSCAPS_OFFSCREENPLAIN|DDSCAPS_3DDEVICE|DDSCAPS_SYSTEMMEMORY); // good for "Bunnies must die", NO "Arx Fatalis"
else
lpddsd->ddsCaps.dwCaps = (DDSCAPS_OFFSCREENPLAIN|DDSCAPS_3DDEVICE); // good for "Arx Fatalis", NO "Bunnies must die"
GetPixFmt(lpddsd);
return;
}
// default case: adjust pixel format
OutTraceB("FixSurfaceCaps: suppress DDSCAPS_VIDEOMEMORY case\n");
lpddsd->dwFlags |= (DDSD_CAPS|DDSD_PIXELFORMAT);
lpddsd->ddsCaps.dwCaps &= ~(DDSCAPS_VIDEOMEMORY|DDSCAPS_LOCALVIDMEM); // v2.02.43
lpddsd->ddsCaps.dwCaps |= (DDSCAPS_SYSTEMMEMORY|DDSCAPS_OFFSCREENPLAIN);
if(!(dxw.dwFlags8 & OFFSCREENZBUFFER)){
lpddsd->ddsCaps.dwCaps &= ~(DDSCAPS_VIDEOMEMORY|DDSCAPS_LOCALVIDMEM); // v2.02.43
lpddsd->ddsCaps.dwCaps |= (DDSCAPS_SYSTEMMEMORY|DDSCAPS_OFFSCREENPLAIN);
}
if(!(dxw.dwFlags3 & NOPIXELFORMAT)) GetPixFmt(lpddsd);
return;
}
void FixSurfaceCaps(LPDDSURFACEDESC2 lpddsd, int dxversion)
{
OutTraceDW("FixSurfaceCaps: INPUT Flags=%x(%s) Caps=%x(%s)\n",
lpddsd->dwFlags, ExplainFlags(lpddsd->dwFlags), lpddsd->ddsCaps.dwCaps, ExplainDDSCaps(lpddsd->ddsCaps.dwCaps));
FixSurfaceCapsInner(lpddsd, dxversion);
OutTraceDW("FixSurfaceCaps: OUTPUT Flags=%x(%s) Caps=%x(%s)\n",
lpddsd->dwFlags, ExplainFlags(lpddsd->dwFlags), lpddsd->ddsCaps.dwCaps, ExplainDDSCaps(lpddsd->ddsCaps.dwCaps));
}
HRESULT WINAPI extCreateSurface1(LPDIRECTDRAW lpdd, DDSURFACEDESC *lpddsd, LPDIRECTDRAWSURFACE *lplpdds, void *pu)
{ return extCreateSurface(1, (CreateSurface_Type)pCreateSurface1, lpdd, (DDSURFACEDESC2 *)lpddsd, lplpdds, pu); }
HRESULT WINAPI extCreateSurface2(LPDIRECTDRAW lpdd, DDSURFACEDESC *lpddsd, LPDIRECTDRAWSURFACE *lplpdds, void *pu)
@ -4988,6 +5000,15 @@ HRESULT WINAPI extGetClipList(LPDIRECTDRAWCLIPPER lpddClip, LPRECT lpRect, LPRGN
return res;
}
HRESULT WINAPI extSetClipList(LPDIRECTDRAWCLIPPER lpddClip, LPRGNDATA lpClipList, DWORD dwFlags)
{
HRESULT res;
OutTraceP("SetClipList(C): lpddClip=%x lpcliplist=%x flags=%x\n", lpddClip, lpClipList, dwFlags);
res = (*pSetClipList)(lpddClip, lpClipList, dwFlags);
if(res) OutTraceP("SetClipList(C): ERROR err=%x(%s)\n", res, ExplainDDError(res));
return res;
}
HRESULT WINAPI extSetHWnd(LPDIRECTDRAWCLIPPER lpddClip, DWORD w, HWND hwnd)
{
HRESULT res;

View File

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

Binary file not shown.

View File

@ -902,6 +902,10 @@ HDC WINAPI extGDICreateCompatibleDC(HDC hdc)
BOOL bSwitchedToMainWin = FALSE;
OutTraceDW("GDI.CreateCompatibleDC: hdc=%x\n", hdc);
// n.b. useful? hdc == 0 doesn't imply the desktop but rather the current window
// from MSDN:
// hdc[in] A handle to an existing DC. If this handle is NULL the function creates
// a memory DC compatible with the application's current screen.
if(hdc==0 || (WindowFromDC(hdc)==0)) { // v2.03.99: Star Trek Armada
hdc=(*pGDIGetDC)(dxw.GethWnd()); // potential DC leakage
bSwitchedToMainWin = TRUE;

View File

@ -513,7 +513,6 @@ void HookDirect3DDevice(void **lpd3ddev, int d3dversion)
SetHook((void *)(**(DWORD **)lpd3ddev + 16), extD3DGetCaps1, (void **)&pD3DGetCaps1, "GetCaps(1)");
SetHook((void *)(**(DWORD **)lpd3ddev + 20), extSwapTextureHandles, (void **)&pSwapTextureHandles, "SwapTextureHandles(1)");
SetHook((void *)(**(DWORD **)lpd3ddev + 32), extExecute, (void **)&pExecute, "Execute(1)");
//SetHook((void *)(**(DWORD **)lpd3ddev + 32), extExecute, NULL, "Execute(1)");
SetHook((void *)(**(DWORD **)lpd3ddev + 36), extAddViewport1, (void **)&pAddViewport1, "AddViewport(1)");
SetHook((void *)(**(DWORD **)lpd3ddev + 40), extDeleteViewport1, (void **)&pDeleteViewport1, "DeleteViewport(1)");
SetHook((void *)(**(DWORD **)lpd3ddev + 44), extNextViewport1, (void **)&pNextViewport1, "NextViewport(1)");
@ -1035,8 +1034,17 @@ HRESULT WINAPI extSetViewport(int dxversion, SetViewport_Type pSetViewport, void
// v2.03.48: scaled dvScaleX/Y fields. Fixes "Dark Vengeance" viewport size when using D3D interface.
// no.... see Forsaken
//dxw.MapClient(&vpd->dvScaleX, &vpd->dvScaleY);
//OutTraceDW("SetViewport: FIXED scale=(%fx%f)\n", vpd->dvScaleX, vpd->dvScaleY);
// no good (useless) also for "Spearhead"
//if(dxw.Windowize){
// dxw.MapClient(&vpd->dvScaleX, &vpd->dvScaleY);
// OutTraceDW("SetViewport: FIXED scale=(%fx%f)\n", vpd->dvScaleX, vpd->dvScaleY);
// int w = (int) vpd->dwWidth;
// int h = (int) vpd->dwHeight;
// dxw.MapClient(&w, &h);
// vpd->dwWidth = (DWORD) w;
// vpd->dwHeight = (DWORD) h;
// OutTraceDW("SetViewport: FIXED scale=(%dx%d)\n", vpd->dwWidth, vpd->dwHeight);
//}
res=(*pSetViewport)(lpvp, vpd);
if(res) OutTraceE("SetViewport ERROR: err=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);

View File

@ -103,9 +103,9 @@ typedef HRESULT (WINAPI *SetSurfaceDesc_Type)(LPDIRECTDRAWSURFACE, LPDDSURFACEDE
typedef HRESULT (WINAPI *AddRefC_Type)(LPDIRECTDRAWCLIPPER);
typedef HRESULT (WINAPI *ReleaseC_Type)(LPDIRECTDRAWCLIPPER);
typedef HRESULT (WINAPI *GetClipList_Type)(LPDIRECTDRAWCLIPPER, LPRECT, LPRGNDATA, LPDWORD);
typedef HRESULT (WINAPI *SetClipList_Type)(LPDIRECTDRAWCLIPPER, LPRGNDATA, DWORD);
typedef HRESULT (WINAPI *GetHWnd_Type)(LPDIRECTDRAWCLIPPER, HWND FAR *);
typedef HRESULT (WINAPI *IsClipListChanged_Type)(LPDIRECTDRAWCLIPPER, BOOL FAR *);
typedef HRESULT (WINAPI *SetClipList_Type)(LPDIRECTDRAWCLIPPER, LPRGNDATA, DWORD);
typedef HRESULT (WINAPI *SetHWnd_Type)(LPDIRECTDRAWCLIPPER, DWORD, HWND);
// DirectDraw Palette

View File

@ -164,7 +164,7 @@ static HookEntryEx_Type SyscallHooks[]={
{HOOK_IAT_CANDIDATE, 0, "TabbedTextOutA", (FARPROC)TabbedTextOutA, (FARPROC *)&pTabbedTextOutA, (FARPROC)extTabbedTextOutA},
{HOOK_IAT_CANDIDATE, 0, "TabbedTextOutW", (FARPROC)TabbedTextOutW, (FARPROC *)&pTabbedTextOutW, (FARPROC)extTabbedTextOutW},
{HOOK_IAT_CANDIDATE, 0, "ScrollDC", (FARPROC)ScrollDC, (FARPROC *)&pScrollDC, (FARPROC)extScrollDC},
{HOOK_IAT_CANDIDATE, 0, "InvalidateRect", (FARPROC)InvalidateRect, (FARPROC *)&pInvalidateRect, (FARPROC)extInvalidateRect},
{HOOK_HOT_CANDIDATE, 0, "InvalidateRect", (FARPROC)InvalidateRect, (FARPROC *)&pInvalidateRect, (FARPROC)extInvalidateRect},
{HOOK_IAT_CANDIDATE, 0, "DrawTextA", (FARPROC)DrawTextA, (FARPROC *)&pDrawTextA, (FARPROC)extDrawTextA},
{HOOK_IAT_CANDIDATE, 0, "DrawTextExA", (FARPROC)DrawTextExA, (FARPROC *)&pDrawTextExA, (FARPROC)extDrawTextExA},
{HOOK_IAT_CANDIDATE, 0, "DrawTextW", (FARPROC)DrawTextW, (FARPROC *)&pDrawTextW, (FARPROC)extDrawTextW},
@ -1882,7 +1882,7 @@ HWND WINAPI extCreateWindowExA(
nHeight = MainWin.bottom;
}
return CreateWindowCommon("CreateWindowExA", (CreateWindow_Type)CreateWindowExA, dwExStyle, (void *)lpClassName, (void *)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
return CreateWindowCommon("CreateWindowExA", (CreateWindow_Type)pCreateWindowExA, dwExStyle, (void *)lpClassName, (void *)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
}
extern void ExplainMsg(char *, HWND, UINT, WPARAM, LPARAM);

View File

@ -40,6 +40,7 @@ void CTabDirectX::DoDataExchange(CDataExchange* pDX)
DDX_Check(pDX, IDC_NOPIXELFORMAT, cTarget->m_NoPixelFormat);
DDX_Check(pDX, IDC_NOALPHACHANNEL, cTarget->m_NoAlphaChannel);
DDX_Check(pDX, IDC_NOFLIPEMULATION, cTarget->m_NoFlipEmulation);
DDX_Check(pDX, IDC_OFFSCREENZBUFFER, cTarget->m_OffscreenZBuffer);
DDX_Check(pDX, IDC_FLIPEMULATION, cTarget->m_FlipEmulation);
DDX_Check(pDX, IDC_SETCOMPATIBILITY, cTarget->m_SetCompatibility);
DDX_Check(pDX, IDC_AEROBOOST, cTarget->m_AEROBoost);

View File

@ -110,8 +110,6 @@ void CTabProgram::DoDataExchange(CDataExchange* pDX)
DDX_Check(pDX, IDC_KEEPASPECTRATIO, cTarget->m_KeepAspectRatio);
DDX_Check(pDX, IDC_NOBANNER, cTarget->m_NoBanner);
DDX_Check(pDX, IDC_HIDEDESKTOP, cTarget->m_HideDesktop);
//DDX_Text(pDX, IDC_POSX, cTarget->m_PosX);
//DDX_Text(pDX, IDC_POSY, cTarget->m_PosY);
DDX_CBIndex(pDX, IDC_MONITOR_ID, cTarget->m_MonitorId);
DDX_Text(pDX, IDC_POSX, sPosX);
DDX_Text(pDX, IDC_POSY, sPosY);

View File

@ -153,6 +153,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
m_SlowDown = FALSE;
m_BlitFromBackBuffer = FALSE;
m_NoFlipEmulation = FALSE;
m_OffscreenZBuffer = FALSE;
m_LockColorDepth = FALSE;
m_DisableGammaRamp = FALSE;
m_AutoRefresh = FALSE;

View File

@ -106,16 +106,13 @@ public:
BOOL m_SlowDown;
BOOL m_BlitFromBackBuffer;
BOOL m_NoFlipEmulation;
BOOL m_OffscreenZBuffer;
BOOL m_LockColorDepth;
//BOOL m_SuppressClipping;
//BOOL m_ForceClipper;
BOOL m_DisableGammaRamp;
BOOL m_AutoRefresh;
BOOL m_IndependentRefresh;
BOOL m_TextureFormat;
BOOL m_FixWinFrame;
//BOOL m_EnableClipping;
//BOOL m_CursorClipping;
BOOL m_VideoToSystemMem;
BOOL m_FixTextOut;
BOOL m_SharedDC;

BIN
host/dxwndhost.aps Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -440,6 +440,7 @@ void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
if(dlg->m_SlowDown) t->flags |= SLOWDOWN;
if(dlg->m_BlitFromBackBuffer) t->flags |= BLITFROMBACKBUFFER;
if(dlg->m_NoFlipEmulation) t->flags4 |= NOFLIPEMULATION;
if(dlg->m_OffscreenZBuffer) t->flags8 |= OFFSCREENZBUFFER;
if(dlg->m_LockColorDepth) t->flags7 |= LOCKCOLORDEPTH;
if(dlg->m_DisableGammaRamp) t->flags2 |= DISABLEGAMMARAMP;
if(dlg->m_AutoRefresh) t->flags |= AUTOREFRESH;
@ -768,6 +769,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
dlg->m_SlowDown = t->flags & SLOWDOWN ? 1 : 0;
dlg->m_BlitFromBackBuffer = t->flags & BLITFROMBACKBUFFER ? 1 : 0;
dlg->m_NoFlipEmulation = t->flags4 & NOFLIPEMULATION ? 1 : 0;
dlg->m_OffscreenZBuffer = t->flags8 & OFFSCREENZBUFFER ? 1 : 0;
dlg->m_LockColorDepth = t->flags7 & LOCKCOLORDEPTH ? 1 : 0;
dlg->m_DisableGammaRamp = t->flags2 & DISABLEGAMMARAMP ? 1 : 0;
dlg->m_AutoRefresh = t->flags & AUTOREFRESH ? 1 : 0;
@ -2019,7 +2021,9 @@ void CDxwndhostView::OnKill()
RevertScreenChanges(&this->InitDevMode);
}
void CDxwndhostView::OnProcessKill()
// void CDxwndhostView::OnProcessKill(BOOL bAll): kills one instance (bAll==FALSE) or all instances (bAll==TRUE)
// of the process whose name corresponds to the selected program's list entry.
void CDxwndhostView::OnProcessKill(BOOL bAll)
{
int i;
POSITION pos;
@ -2045,7 +2049,7 @@ void CDxwndhostView::OnProcessKill()
mbstowcs_s(NULL, wcstring, 48, PrivateMaps[i].title, _TRUNCATE);
res=MessageBoxLangArg(DXW_STRING_KILLTASK, DXW_STRING_WARNING, MB_YESNO | MB_ICONQUESTION, wcstring);
if(res!=IDYES) return;
KillProcByName(lpProcName, TRUE, FALSE);
KillProcByName(lpProcName, TRUE, bAll);
}
else{
MessageBoxLang(DXW_STRING_NOKILLTASK, DXW_STRING_INFO, MB_ICONEXCLAMATION);
@ -2055,41 +2059,14 @@ void CDxwndhostView::OnProcessKill()
RevertScreenChanges(&this->InitDevMode);
}
void CDxwndhostView::OnProcessKill()
{
OnProcessKill(FALSE);
}
void CDxwndhostView::OnProcessKillAll()
{
// to do .....
int i;
POSITION pos;
CListCtrl& listctrl = GetListCtrl();
char FilePath[MAX_PATH+1];
char *lpProcName, *lpNext;
HRESULT res;
if(!listctrl.GetSelectedCount()) return ;
pos = listctrl.GetFirstSelectedItemPosition();
i = listctrl.GetNextSelectedItem(pos);
strnncpy(FilePath, TargetMaps[i].path, MAX_PATH);
lpProcName=FilePath;
while (lpNext=strchr(lpProcName,'\\')) lpProcName=lpNext+1;
if(TargetMaps[i].flags7 & COPYNOSHIMS){
strcat(lpProcName, ".noshim");
}
if(!KillProcByName(lpProcName, FALSE, FALSE)){
wchar_t *wcstring = new wchar_t[48+1];
mbstowcs_s(NULL, wcstring, 48, PrivateMaps[i].title, _TRUNCATE);
res=MessageBoxLangArg(DXW_STRING_KILLTASK, DXW_STRING_WARNING, MB_YESNO | MB_ICONQUESTION, wcstring);
if(res!=IDYES) return;
KillProcByName(lpProcName, TRUE, TRUE);
}
else{
MessageBoxLang(DXW_STRING_NOKILLTASK, DXW_STRING_INFO, MB_ICONEXCLAMATION);
}
ClipCursor(NULL);
RevertScreenChanges(&this->InitDevMode);
OnProcessKill(TRUE);
}
void CDxwndhostView::OnAdd()

View File

@ -74,6 +74,7 @@ protected:
afx_msg void OnExplore();
afx_msg void OnKill();
afx_msg void OnProcessKill();
afx_msg void OnProcessKill(BOOL);
afx_msg void OnProcessKillAll();
afx_msg void OnPause();
afx_msg void OnResume();

BIN
host/host.aps Normal file

Binary file not shown.

Binary file not shown.