From 7adb204c0f53af84496af0e487e6602bfebbd2c6 Mon Sep 17 00:00:00 2001 From: gho tik Date: Fri, 24 Jan 2014 11:38:44 -0500 Subject: [PATCH] v2_02_55_src Former-commit-id: 5a25f9b3a017431a7451b1414f853424f2967cdf --- Include/dxwnd.h | 1 + build/dxwnd.dll | 4 +- build/dxwnd.exe | 2 +- build/exports/Blade Runner.dxw | 26 +++++++ build/readme-relnotes.txt | 3 +- dll/ddraw.cpp | 16 ++++- dll/dwhide.cpp | 123 +++++++++++++++++++++++++++++++++ dll/dxhook.cpp | 6 +- dll/dxwcore.hpp | 1 + dll/dxwnd.cpp | 2 +- dll/dxwnd.suo | Bin 0 -> 7168 bytes dll/dxwnd.vs2008.suo | Bin 69120 -> 112640 bytes dll/dxwnd.vs2008.vcproj | 4 ++ dll/hddraw.h | 2 + dll/user32.cpp | 2 +- host/Resource.h | 1 + host/TabWindow.cpp | 1 + host/TargetDlg.cpp | 1 + host/TargetDlg.h | 1 + host/dxwndhost.aps | Bin 170364 -> 170572 bytes host/dxwndhost.rc | 1 + host/dxwndhost.vs2008.suo | Bin 94208 -> 100352 bytes host/dxwndhostView.cpp | 2 + 23 files changed, 190 insertions(+), 9 deletions(-) create mode 100644 build/exports/Blade Runner.dxw create mode 100644 dll/dwhide.cpp create mode 100644 dll/dxwnd.suo diff --git a/Include/dxwnd.h b/Include/dxwnd.h index 5880555..f2f5a61 100644 --- a/Include/dxwnd.h +++ b/Include/dxwnd.h @@ -128,6 +128,7 @@ #define LIMITSCREENRES 0x00001000 // Limit available screen resolution up to defined maximum #define NOFILLRECT 0x00002000 // Suppress FillRect calls #define HOOKGLIDE 0x00004000 // Hook glide calls +#define HIDEDESKTOP 0x00004000 // Hide desktop background // logging Tflags DWORD: #define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general diff --git a/build/dxwnd.dll b/build/dxwnd.dll index 60a2783..aa1c284 100644 --- a/build/dxwnd.dll +++ b/build/dxwnd.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f5ca6f4d3ce49c5e35b6ced416a8e48d7948813d8994ff1fefcb656817359bb8 -size 448512 +oid sha256:204b88153c343d4bd1b32eadbb4f2c0267ad6f3147cf813cf591084e27893061 +size 450048 diff --git a/build/dxwnd.exe b/build/dxwnd.exe index c754c5b..304b212 100644 --- a/build/dxwnd.exe +++ b/build/dxwnd.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6b5fbb1db51dc2da5ddf88d048bb24471391cc9f1ff80e96a27c916198cc6f4b +oid sha256:a63a5100db9d65c9b66846c79b6cb41578fccabd9de5bb4ba788b371bb72b25f size 535040 diff --git a/build/exports/Blade Runner.dxw b/build/exports/Blade Runner.dxw new file mode 100644 index 0000000..3d7b5b0 --- /dev/null +++ b/build/exports/Blade Runner.dxw @@ -0,0 +1,26 @@ +[target] +title0=Blade Runner +path0=D:\Games\blade runner\BLADE.EXE +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134234210 +flagg0=1480589320 +flagh0=2580 +flagi0=16388 +tflag0=6211 +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 diff --git a/build/readme-relnotes.txt b/build/readme-relnotes.txt index a44714c..b50554f 100644 --- a/build/readme-relnotes.txt +++ b/build/readme-relnotes.txt @@ -376,4 +376,5 @@ eliminated "Disable HAL support", no longer necessary some incomplete work on gdi game handling added preliminary, incomplete (not working) glide handling - +v2.02.54 +added "Hide desktop background" video option diff --git a/dll/ddraw.cpp b/dll/ddraw.cpp index 5d91f1c..51bc0fa 100644 --- a/dll/ddraw.cpp +++ b/dll/ddraw.cpp @@ -93,6 +93,7 @@ HRESULT WINAPI extUnlockDir4(LPDIRECTDRAWSURFACE, LPRECT); HRESULT WINAPI extUnlockDir1(LPDIRECTDRAWSURFACE, LPVOID); HRESULT WINAPI extCreateSurface(int, CreateSurface_Type, LPDIRECTDRAW, DDSURFACEDESC2 *, LPDIRECTDRAWSURFACE *, void *); +HRESULT WINAPI extSetSurfaceDesc(LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, DWORD); // DirectDrawClipper HRESULT WINAPI extReleaseC(LPDIRECTDRAWCLIPPER); @@ -202,6 +203,7 @@ Unlock4_Type pUnlock4; UpdateOverlay_Type pUpdateOverlay; UpdateOverlayDisplay_Type pUpdateOverlayDisplay; UpdateOverlayZOrder_Type pUpdateOverlayZOrder; +SetSurfaceDesc_Type pSetSurfaceDesc; /* DirectDrawClipper hook pointers */ QueryInterface_Type pQueryInterfaceC; @@ -1219,6 +1221,9 @@ static void HookDDSurfaceGeneric(LPDIRECTDRAWSURFACE *lplpdds, int dxversion) SetHook((void *)(**(DWORD **)lplpdds + 128), extUnlockDir4, (void **)&pUnlock4, "Unlock(S4)"); } + if (dxversion == 7) + SetHook((void *)(**(DWORD **)lplpdds + 156), extSetSurfaceDesc, (void **)&pSetSurfaceDesc, "SetSurfaceDesc(S3)"); + if (!(dxw.dwTFlags & OUTPROXYTRACE)) return; // just proxed .... @@ -4487,7 +4492,7 @@ HRESULT WINAPI extDDGetGammaRamp(LPDIRECTDRAWSURFACE lpdds, DWORD dwFlags, LPDDG OutTraceDDRAW("GetAvailableVidMem(D): lpdd=%x\n", lpdd); res=(*pGetAvailableVidMem)(lpdd, lpDDSCaps, lpdwTotal, lpdwFree); if(res){ - OutTraceDW("GetAvailableVidMem(D): ERROR res=%x(%s)\n", res, ExplainDDError(res)); + OutTraceE("GetAvailableVidMem(D): ERROR res=%x(%s)\n", res, ExplainDDError(res)); } else { OutTraceDW("GetAvailableVidMem(D): DDSCaps=%x(%s) Total=%x Free=%x\n", @@ -4526,3 +4531,12 @@ HRESULT WINAPI extGetAvailableVidMem4(LPDIRECTDRAW lpdd, LPDDSCAPS lpDDSCaps, LP { return extGetAvailableVidMem(lpdd, lpDDSCaps, lpdwTotal, lpdwFree, pGetAvailableVidMem4); } + +HRESULT WINAPI extSetSurfaceDesc(LPDIRECTDRAWSURFACE lpdds, LPDDSURFACEDESC lpDDsd2, DWORD dwFlags) +{ + HRESULT res; + OutTrace("SetSurfaceDesc: REACHED\n"); + res = (*pSetSurfaceDesc)(lpdds, lpDDsd2, dwFlags); + OutTraceE("SetSurfaceDesc: ERROR res=%x(%s)\n", res, ExplainDDError(res)); + return res; +} diff --git a/dll/dwhide.cpp b/dll/dwhide.cpp new file mode 100644 index 0000000..ab1c522 --- /dev/null +++ b/dll/dwhide.cpp @@ -0,0 +1,123 @@ +#define _CRT_SECURE_NO_WARNINGS + +#include +#include "dxwnd.h" +#include "dxwcore.hpp" + +static bool quit = false; + +static LRESULT CALLBACK Hider_Message_Handler(HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lparam) +{ + switch(umsg) + { + case WM_DESTROY: + PostQuitMessage(0); + break; + case WM_CLOSE: + quit = true; + break; + } + + return DefWindowProc(hwnd, umsg, wparam, lparam); +} + +void dxwCore::HideDesktop(HWND hwnd) +{ + static BOOL DoOnce=TRUE; + static ATOM aClass; + static HWND wleft=0, wright=0, wtop=0, wbottom=0; + RECT wRect, wDesktop; + static HINSTANCE hinst=NULL; + if(DoOnce){ + WNDCLASSEX WndClsEx; + DoOnce=FALSE; + +#ifdef DISABLEAERODESKTOP + typedef HRESULT (WINAPI *DwmEnableComposition_Type)(UINT); + DwmEnableComposition_Type pDwmEnableComposition; + HMODULE hlib; + + // try to disable AERO desktop interface, if possible ... + pDwmEnableComposition = NULL; + hlib=(*pLoadLibraryA)("dwmapi.dll"); + if(hlib){ + pDwmEnableComposition = (DwmEnableComposition_Type)(*pGetProcAddress)(hlib, "DwmEnableComposition"); + } + if(pDwmEnableComposition) { + (*pDwmEnableComposition)(FALSE); + } +#endif + + hinst=GetModuleHandle(NULL); + if(!hinst) + OutTrace("GetModuleHandle ERROR err=%d\n", GetLastError()); + else + OutTrace("GetModuleHandle hinst=%x\n", hinst); + + WndClsEx.cbSize = sizeof(WNDCLASSEX); + WndClsEx.style = 0; + WndClsEx.lpfnWndProc = Hider_Message_Handler; //DefWindowProc; + WndClsEx.cbClsExtra = 0; + WndClsEx.cbWndExtra = 0; + WndClsEx.hIcon = LoadIcon(NULL, IDI_APPLICATION); + //WndClsEx.hCursor = LoadCursor(NULL, IDC_CROSS); + WndClsEx.hCursor = NULL; + WndClsEx.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); + //WndClsEx.hbrBackground = CreateSolidBrush(RGB(200,0,0)); + WndClsEx.lpszMenuName = NULL; + WndClsEx.lpszClassName = "dxwnd:hider"; + WndClsEx.hInstance = hinst; + WndClsEx.hIconSm = LoadIcon(NULL, IDI_APPLICATION); + + // Register the application + aClass=RegisterClassEx(&WndClsEx); + if(!aClass) OutTraceE("RegisterClassEx: ERROR err=%d\n", GetLastError()); + } + + if(!(*pGetWindowRect)(hwnd, &wRect)) { + OutTrace("GetWindowRect ERROR hwnd=%x err=%d\n", hWnd, GetLastError()); + return; + } + if(!(*pGetWindowRect)((*pGetDesktopWindow)(), &wDesktop)) { + OutTrace("GetWindowRect ERROR hwnd=%x err=%d\n", NULL, GetLastError()); + return; + } + + // this is tricky: if you create a window with zero style, the manager seems to apply a default + // overlapped window style. The only way I got to be sure that the style is exactly nothing + // at all is to repeat the command by a SetWindowLong(hwnd, GWL_STYLE, 0) that sets again zero + // as the correct window style. + + HWND hParent = (*pGetDesktopWindow)(); + if(!wleft) { + wleft=(*pCreateWindowExA)(0, "dxwnd:hider", "hider", 0, 0, 0, 0, 0, hParent, NULL, hinst, NULL); + (*pSetWindowLong)(wleft, GWL_STYLE, 0); + } + if(!wright) { + wright=(*pCreateWindowExA)(0, "dxwnd:hider", "hider", 0, 0, 0, 0, 0, hParent, NULL, hinst, NULL); + (*pSetWindowLong)(wright, GWL_STYLE, 0); + } + if(!wtop) { + wtop=(*pCreateWindowExA)(0, "dxwnd:hider", "hider", 0, 0, 0, 0, 0, hParent, NULL, hinst, NULL); + (*pSetWindowLong)(wtop, GWL_STYLE, 0); + } + if(!wbottom) { + wbottom=(*pCreateWindowExA)(0, "dxwnd:hider", "hider", 0, 0, 0, 0, 0, hParent, NULL, hinst, NULL); + (*pSetWindowLong)(wbottom, GWL_STYLE, 0); + } + + (*pMoveWindow)(wleft, wDesktop.left, wDesktop.top, wRect.left, wDesktop.bottom, TRUE); + (*pMoveWindow)(wright, wRect.right, wDesktop.top, wDesktop.right-wRect.right, wDesktop.bottom, TRUE); + (*pMoveWindow)(wtop, wDesktop.left, wDesktop.top, wDesktop.right, wRect.top-wDesktop.top, TRUE); + (*pMoveWindow)(wbottom, wDesktop.left, wRect.bottom, wDesktop.right, wDesktop.bottom-wRect.bottom, TRUE); + + (*pSetWindowLong)(wleft, GWL_EXSTYLE, WS_EX_TOPMOST); + (*pSetWindowLong)(wright, GWL_EXSTYLE, WS_EX_TOPMOST); + (*pSetWindowLong)(wtop, GWL_EXSTYLE, WS_EX_TOPMOST); + (*pSetWindowLong)(wbottom, GWL_EXSTYLE, WS_EX_TOPMOST); + + (*pShowWindow)(wleft, SW_SHOW); + (*pShowWindow)(wright, SW_SHOW); + (*pShowWindow)(wtop, SW_SHOW); + (*pShowWindow)(wbottom, SW_SHOW); +} diff --git a/dll/dxhook.cpp b/dll/dxhook.cpp index 42b83eb..ed7df5f 100644 --- a/dll/dxhook.cpp +++ b/dll/dxhook.cpp @@ -545,6 +545,7 @@ void AdjustWindowPos(HWND hwnd, DWORD width, DWORD height) if(dxw.dwFlags2 & SUPPRESSIME) SuppressIMEWindow(); dxw.ShowBanner(hwnd); + if(dxw.dwFlags4 & HIDEDESKTOP) dxw.HideDesktop(dxw.GethWnd()); return; } @@ -917,10 +918,11 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp dxw.dwFlags1 |= LOCKWINPOS; dx_UpdatePositionLock(hwnd); } - if (dxw.dwFlags1 & HIDEHWCURSOR) while((*pShowCursor)(0) >= 0); - if (dxw.dwFlags2 & SHOWHWCURSOR) while((*pShowCursor)(1) < 0); + if(dxw.dwFlags1 & HIDEHWCURSOR) while((*pShowCursor)(0) >= 0); + if(dxw.dwFlags2 & SHOWHWCURSOR) while((*pShowCursor)(1) < 0); if(dxw.dwFlags1 & ENABLECLIPPING) extClipCursor(lpClipRegion); if(dxw.dwFlags2 & REFRESHONRESIZE) dxw.ScreenRefresh(); + if(dxw.dwFlags4 & HIDEDESKTOP) dxw.HideDesktop(dxw.GethWnd()); break; case WM_ACTIVATE: dxw.bActive = (LOWORD(wparam) == WA_ACTIVE || LOWORD(wparam) == WA_CLICKACTIVE) ? 1 : 0; diff --git a/dll/dxwcore.hpp b/dll/dxwcore.hpp index c0cde6e..b995bda 100644 --- a/dll/dxwcore.hpp +++ b/dll/dxwcore.hpp @@ -94,6 +94,7 @@ public: // methods char *GetTSCaption(int); void DoSlow(int); void ShowBanner(HWND); + void HideDesktop(HWND); POINT ScreenToClient(POINT); int GetDLLIndex(char *); void FixStyle(char *, HWND, WPARAM, LPARAM); diff --git a/dll/dxwnd.cpp b/dll/dxwnd.cpp index f7236da..9516796 100644 --- a/dll/dxwnd.cpp +++ b/dll/dxwnd.cpp @@ -24,7 +24,7 @@ along with this program. If not, see . #include "dxwnd.h" #include "dxwcore.hpp" -#define VERSION "2.02.54" +#define VERSION "2.02.55" #define DDTHREADLOCK 1 diff --git a/dll/dxwnd.suo b/dll/dxwnd.suo new file mode 100644 index 0000000000000000000000000000000000000000..a6ba1366ba193844d155b7a2835fe287d363fb5d GIT binary patch literal 7168 zcmeI0O-x)>6vq#()nc(9LaAcKv7lnK1guCutOgipO+adCizXxnW(K4TAAzAC(bhy4 zZZvUWq8k?`?Z$GKYwwn?zZL8OSavXvXypksK0_|6_56sZR0`zm$KQc-)Y9<7Hy&vxPz|u z1b4WDR`-1$WhbSQvWs#*MR!~kw3}#qTdI~gfwMNvFJm$5wkg_KyUHy`r&`;w?DMjp zVif!K!1WjRFIH?9lZ*>GgT!gOXs;lBl&5aH;txcuYi(PFwpb0n+KAH(`10tS4cnYe zSg(!KX6!t53Y}d4T!{r6kzWIkWQ$6$d&9y^`Ijh;v=N)PF@BOeh&~xh*jxN7C0p}j zps?0^fD%={a9cWy2}B)v5R2ZERntuj=AT%A()90!J=uR*qS=yB^Z~ z7btN%ZbQ^p@SrJ6@_fmjvp229tJ|!N=Q;csu2F_q-8$?$e!mcq)Rc9e7Ep7wBJDF4 zsFCmGY_gxI@`bZ*xeRvT{KD)*y6>h1D%Pdh=P2i#)5HD$zv$y@DZKb^&qtP-;JoC| zDb8ynDBu42Sa}kwQyw@N_`0D-* zV$T`yN?0IH)j32uz6Spb+kc#O6P)N|uyT0MXBeB~42mI93;w6vNKr8A{vU)_XC^8p z-{qolP9{THjhflN@-oR5t;UnzS4~GaZUs=Zf^9v0D;6s8C;WY(1na89>z%LswU7Hx zd$+7;IgBkTX3i|Xo0y&CYl!HCJx~2M*+e_Bw41ues}GZ9v@_ObhpAhMu`N7x5T})Y zX!HnUt^C@(x(9oXGxHkpIEi|Gg!;+zo0*|_g#qgeeIy~;n_ zi1z1U*P;o(IM<#cPLDWD*qt7?*$8Yv3tD% z&UtxLio3|yB48}g=>1Q&q4%Mv^27M!P);~FgDyf|p`mXP!n@*xd=s9?U!%%@3|<#K zwD**~6JY%jEVY?v-09uB-aYIamdTsajb?Lt<8~Q)ae(>kw!i{e6_u8*D zPyG0GL&K?Wez|?^sgX$m0W@GoM{5?A7V3L%e4hO3)B4|zl{epCW$pEAF|${LoUOdK zpClG{nP{5i#xHS>GgzIz#Du=_Mo=qo;|QFqvovC1`T{jU1Qzm6V2^r-5rVd&nd)Nn z`l9S$i`IGq=dl2x&ajtLCYNKLpLON(tU~L9zh&cp82?TaX_B7oDSRo7Ha%z~%n=Iy z`||s}*q8P)UFFwfA>@tIJ6mYuLBH@{xa+6{yEptewaZ)btv@R6J2?l}aQ=sw+!QR} xzH_?op95gNVvxQ;Dk~^;1ByRx?`oZ1#o7i2-TQYjzNlm6%8$BkRKCqD|8HV$xh((y literal 0 HcmV?d00001 diff --git a/dll/dxwnd.vs2008.suo b/dll/dxwnd.vs2008.suo index 20e9ab0d62932626788b225692ee68669a567190..cece195747bca7b34df76ede85c5c227bef4f487 100644 GIT binary patch literal 112640 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

j@!e&U4M$7 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 diff --git a/dll/dxwnd.vs2008.vcproj b/dll/dxwnd.vs2008.vcproj index 9275997..9a558d4 100644 --- a/dll/dxwnd.vs2008.vcproj +++ b/dll/dxwnd.vs2008.vcproj @@ -264,6 +264,10 @@ /> + + diff --git a/dll/hddraw.h b/dll/hddraw.h index cbc2789..177adf2 100644 --- a/dll/hddraw.h +++ b/dll/hddraw.h @@ -95,6 +95,8 @@ typedef HRESULT (WINAPI *Unlock4_Type)(LPDIRECTDRAWSURFACE, LPRECT); typedef HRESULT (WINAPI *UpdateOverlay_Type)(LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURFACE, LPRECT, DWORD, LPDDOVERLAYFX); typedef HRESULT (WINAPI *UpdateOverlayDisplay_Type) (LPDIRECTDRAWSURFACE, DWORD); typedef HRESULT (WINAPI *UpdateOverlayZOrder_Type)(LPDIRECTDRAWSURFACE, DWORD, LPDIRECTDRAWSURFACE); +typedef HRESULT (WINAPI *SetSurfaceDesc_Type)(LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, DWORD); + // DirectDrawClipper typedef HRESULT (WINAPI *AddRefC_Type)(LPDIRECTDRAWCLIPPER); typedef HRESULT (WINAPI *ReleaseC_Type)(LPDIRECTDRAWCLIPPER); diff --git a/dll/user32.cpp b/dll/user32.cpp index 74368b6..a824a69 100644 --- a/dll/user32.cpp +++ b/dll/user32.cpp @@ -504,7 +504,7 @@ BOOL WINAPI extShowWindow(HWND hwnd, int nCmdShow) nCmdShow=SW_SHOWNORMAL; } } -} + } res=(*pShowWindow)(hwnd, nCmdShow); diff --git a/host/Resource.h b/host/Resource.h index ff9b4e0..34d2ea9 100644 --- a/host/Resource.h +++ b/host/Resource.h @@ -202,6 +202,7 @@ #define IDC_ADDPROXYLIBS 1160 #define IDC_INTERCEPTRDTSC 1161 #define IDC_NOFILLRECT 1162 +#define IDC_HIDEDESKTOP 1163 #define ID_MODIFY 32771 #define ID_DELETE 32772 #define ID_ADD 32773 diff --git a/host/TabWindow.cpp b/host/TabWindow.cpp index be75b33..82c80bd 100644 --- a/host/TabWindow.cpp +++ b/host/TabWindow.cpp @@ -44,6 +44,7 @@ void CTabWindow::DoDataExchange(CDataExchange* pDX) DDX_Check(pDX, IDC_FIXD3DFRAME, cTarget->m_FixD3DFrame); DDX_Check(pDX, IDC_NOWINDOWMOVE, cTarget->m_NoWindowMove); DDX_Check(pDX, IDC_SUPPRESSCHILD, cTarget->m_SuppressChild); + DDX_Check(pDX, IDC_HIDEDESKTOP, cTarget->m_HideDesktop); // color management DDX_Check(pDX, IDC_INIT8BPP, cTarget->m_Init8BPP); diff --git a/host/TargetDlg.cpp b/host/TargetDlg.cpp index fa756e7..c8e68ff 100644 --- a/host/TargetDlg.cpp +++ b/host/TargetDlg.cpp @@ -46,6 +46,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/) m_NoAlphaChannel = FALSE; m_FixRefCounter = TRUE; m_SuppressChild = FALSE; + m_HideDesktop = FALSE; m_LockSysColors = FALSE; m_ForceYUVtoRGB = FALSE; m_ForceRGBtoYUV = FALSE; diff --git a/host/TargetDlg.h b/host/TargetDlg.h index 143a3c3..842dc7a 100644 --- a/host/TargetDlg.h +++ b/host/TargetDlg.h @@ -137,6 +137,7 @@ public: BOOL m_NoAlphaChannel; BOOL m_FixRefCounter; BOOL m_SuppressChild; + BOOL m_HideDesktop; BOOL m_LockSysColors; BOOL m_SaveCaps; BOOL m_SingleProcAffinity; diff --git a/host/dxwndhost.aps b/host/dxwndhost.aps index afe5f305bf5dd56ee9e73ad200be25d8cdcf1db0..09fb942656a5e2c22e2b8ae6786e111f504ce5cb 100644 GIT binary patch delta 4886 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 delta 4868 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 diff --git a/host/dxwndhost.rc b/host/dxwndhost.rc index e96686a..7412695 100644 --- a/host/dxwndhost.rc +++ b/host/dxwndhost.rc @@ -437,6 +437,7 @@ BEGIN GROUPBOX "Screen resolution",IDC_STATIC,149,123,144,64 CONTROL "Limit resolution:",IDC_LIMITSCREENRES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,136,63,10 LISTBOX IDC_LISTRES,226,133,57,26,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + CONTROL "Hide desktop background",IDC_HIDEDESKTOP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,184,125,10 END IDD_TAB_EMPTY DIALOGEX 0, 0, 300, 240 diff --git a/host/dxwndhost.vs2008.suo b/host/dxwndhost.vs2008.suo index d9d99e666e606ffbbfd0c9b14fc912b4858e1a78..a5e1d6a0480df9af4b3e49ca009308064118015a 100644 GIT binary patch delta 5468 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 B&oBT0 delta 3710 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 diff --git a/host/dxwndhostView.cpp b/host/dxwndhostView.cpp index cef2529..753877e 100644 --- a/host/dxwndhostView.cpp +++ b/host/dxwndhostView.cpp @@ -177,6 +177,7 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg) if(dlg->m_NoAlphaChannel) t->flags4 |= NOALPHACHANNEL; if(dlg->m_FixRefCounter) t->flags4 |= FIXREFCOUNTER; if(dlg->m_SuppressChild) t->flags4 |= SUPPRESSCHILD; + if(dlg->m_HideDesktop) t->flags4 |= HIDEDESKTOP; if(dlg->m_LockSysColors) t->flags3 |= LOCKSYSCOLORS; if(dlg->m_ForceYUVtoRGB) t->flags3 |= YUV2RGB; if(dlg->m_ForceRGBtoYUV) t->flags3 |= RGB2YUV; @@ -319,6 +320,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg) dlg->m_NoAlphaChannel = t->flags4 & NOALPHACHANNEL ? 1 : 0; dlg->m_FixRefCounter = t->flags4 & FIXREFCOUNTER ? 1 : 0; dlg->m_SuppressChild = t->flags4 & SUPPRESSCHILD ? 1 : 0; + dlg->m_HideDesktop = t->flags4 & HIDEDESKTOP ? 1 : 0; dlg->m_LockSysColors = t->flags3 & LOCKSYSCOLORS ? 1 : 0; dlg->m_ForceRGBtoYUV = t->flags3 & RGB2YUV ? 1 : 0; dlg->m_ForceYUVtoRGB = t->flags3 & YUV2RGB ? 1 : 0;