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

v2_02_80_src

Former-commit-id: cf396b856b5c6d8078dcf79e5dbbd76acdd9ab22
This commit is contained in:
gho tik 2014-06-22 12:39:24 -04:00 committed by Refael ACkermann
parent afbcaf5324
commit 320d894ae9
62 changed files with 675 additions and 485 deletions

@ -144,6 +144,7 @@
#define HOTPATCHALWAYS 0x10000000 // Force hot patching to every call
#define NOD3DRESET 0x20000000 // Disables D3D8/9 D3DDevice::Reset method
#define OVERRIDEREGISTRY 0x40000000 // same as EMULATEREGISTRY, but fake keys takeprecedence
#define HIDECDROMEMPTY 0x80000000 // hide empty CDROM drivers
// logging Tflags DWORD:
#define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general

3
build/Resources_CN.dll Normal file

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b29905bf73aea4baf7a3ca50fc224d6e6f33478efcd19c06230439d48499ed54
size 125952

2
build/dxwnd.cn.bat Normal file

@ -0,0 +1,2 @@
echo off
start "" "dxwnd.exe" "/lang=cn"

BIN
build/dxwnd.cn.lnk Normal file

Binary file not shown.

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0552e42ae11b81672959e1b316db09614269737d6e12393f0bd473b140ce6d50
size 487424
oid sha256:512069ae0535b5c459f092824da7d559e7950574c161c31657fdcbc739a29f93
size 489472

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d25ed7d43c0672c5ce69054896578802218de233bbc82f22b392c3406e56915f
size 540160
oid sha256:c06874fa4dbb6cee68cbee26cbb5510526ed30c895494280e8d365a0fdb7ce56
size 547328

@ -3,3 +3,35 @@ timetoggle=0x72
altf4=0x73
timeslow=0x74
timefast=0x75
[window]
posx=709
posy=406
sizx=320
sizy=200
[target]
title0=Conflict Zone
path0=D:\Games\Conflict Zone\Conflict zone.exe
launchpath0=
module0=
opengllib0=
ver0=0
coord0=0
flag0=134217760
flagg0=1207959552
flagh0=20
flagi0=4194308
tflag0=64
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=
ver0=0
coord0=0
flag0=939524146
flag0=671088674
flagg0=1207959552
flagh0=16
flagi0=138412036
flagh0=20
flagi0=4
tflag0=0
initx0=0
inity0=0
@ -22,6 +22,3 @@ sizx0=800
sizy0=600
maxfps0=0
initts0=0
launchpath0=
winver0=0
maxres0=0

@ -1,27 +0,0 @@
[target]
title0=Battle Realms
path0=D:\Games\Battle Realms\Battle_Realms_F.exe
launchpath0=
module0=
opengllib0=
ver0=0
coord0=0
flag0=150994976
flagg0=1207959552
flagh0=20
flagi0=138412036
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

@ -8,7 +8,7 @@ coord0=0
flag0=679493664
flagg0=1207959552
flagh0=65556
flagi0=69206020
flagi0=4
tflag0=0
initx0=0
inity0=0
@ -24,4 +24,3 @@ maxfps0=0
initts0=0
winver0=0
maxres0=-1
launchpath0=

@ -6,9 +6,9 @@ opengllib0=
ver0=1
coord0=0
flag0=138428450
flagg0=1242562576
flagg0=1108344848
flagh0=20
flagi0=4194304
flagi0=0
tflag0=0
initx0=0
inity0=0
@ -22,6 +22,3 @@ sizx0=640
sizy0=480
maxfps0=0
initts0=0
launchpath0=
winver0=0
maxres0=0

@ -6,9 +6,9 @@ opengllib0=
ver0=0
coord0=0
flag0=16418
flagg0=708837376
flagg0=574619648
flagh0=20
flagi0=4194304
flagi0=0
tflag0=263
initx0=0
inity0=0
@ -22,6 +22,3 @@ sizx0=800
sizy0=600
maxfps0=0
initts0=0
launchpath0=
winver0=0
maxres0=0

@ -8,7 +8,7 @@ coord0=0
flag0=134217762
flagg0=1209008384
flagh0=20
flagi0=4194308
flagi0=4
tflag0=64
initx0=0
inity0=0
@ -24,4 +24,3 @@ maxfps0=0
initts0=0
winver0=0
maxres0=-1
launchpath0=

@ -8,7 +8,7 @@ coord0=0
flag0=150994976
flagg0=1207959552
flagh0=20
flagi0=4194308
flagi0=4
tflag0=259
initx0=0
inity0=0
@ -22,6 +22,3 @@ sizx0=800
sizy0=600
maxfps0=0
initts0=0
launchpath0=D:\Games\International Football 2000\MSIF2000.EXE
winver0=0
maxres0=0

@ -8,8 +8,8 @@ coord0=0
flag0=134217762
flagg0=1207959552
flagh0=20
flagi0=4194308
tflag0=0
flagi0=1028
tflag0=6163
initx0=0
inity0=0
minx0=0
@ -22,6 +22,3 @@ sizx0=800
sizy0=600
maxfps0=0
initts0=0
launchpath0=
winver0=0
maxres0=0

@ -6,9 +6,9 @@ opengllib0=
ver0=0
coord0=0
flag0=138428450
flagg0=201326592
flagh0=20
flagi0=4194304
flagg0=1275068416
flagh0=8388628
flagi0=0
tflag0=259
initx0=0
inity0=0
@ -22,6 +22,3 @@ sizx0=800
sizy0=600
maxfps0=0
initts0=0
launchpath0=
winver0=0
maxres0=0

@ -4,11 +4,11 @@ path0=D:\Games\O.R.B\orb.exe
module0=
opengllib0=
ver0=0
coord0=0
coord0=2
flag0=134234144
flagg0=1207959552
flagg0=1207959568
flagh0=20
flagi0=4194308
flagi0=4
tflag0=6163
initx0=0
inity0=0
@ -24,4 +24,3 @@ maxfps0=0
initts0=0
winver0=0
maxres0=-1
launchpath0=

@ -5,10 +5,10 @@ module0=
opengllib0=
ver0=0
coord0=0
flag0=134219810
flagg0=135266304
flag0=2082
flagg0=143654912
flagh0=16
flagi0=4194304
flagi0=0
tflag0=0
initx0=0
inity0=0
@ -22,6 +22,3 @@ sizx0=800
sizy0=600
maxfps0=0
initts0=0
launchpath0=
winver0=0
maxres0=0

@ -10,7 +10,7 @@ flag0=134217760
flagg0=134217728
flagh0=20
flagi0=138412036
tflag0=0
tflag0=6147
initx0=0
inity0=0
minx0=0

@ -5,10 +5,10 @@ module0=
opengllib0=
ver0=0
coord0=0
flag0=671105058
flagg0=1207959568
flag0=134234146
flagg0=1073741840
flagh0=16
flagi0=4194304
flagi0=0
tflag0=0
initx0=0
inity0=0
@ -22,6 +22,3 @@ sizx0=800
sizy0=600
maxfps0=0
initts0=0
launchpath0=
winver0=0
maxres0=0

@ -1,5 +1,5 @@
[window]
posx=1393
posy=159
sizx=455
sizy=708
posx=1289
posy=149
sizx=465
sizy=382

@ -524,4 +524,11 @@ ole32, user32 API hot patched
handling of DWL_DLGPROC message
v2.02.79
fix: recovered capability to "pin" ddraw and d3d calls
fix: recovered capability to "pin" ddraw and d3d calls
v2.02.80
Preliminary multilanguage release, english and chinese, many thanks to gsky916 support
fixed Sleep bug for small delays and accelerated timeshift: fixes "Wind Fantasy SP" reported bug
added log for DirectInput::SetCooperativeLevel flags
fixed flip emulation mode when backbuffer is lost: fixes cursor problems in "HellCopter"
fixed Pitch setting in DirectDraw::EnumDisplayModes when in SVGA emulation mode. Let "Outlive" use this setting

@ -3351,20 +3351,35 @@ HRESULT WINAPI extFlip(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWSURFACE lpddssrc,
if((dwflags & DDFLIP_WAIT) || (dxw.dwFlags1 & SAVELOAD)) lpPrimaryDD->WaitForVerticalBlank(DDWAITVB_BLOCKEND , 0);
if(dxw.dwFlags4 & NOFLIPEMULATION){
HRESULT res2;
// create a temporary working surface
memset(&ddsd, 0, sizeof(ddsd));
ddsd.dwSize = SurfaceDescrSize(lpdds);
(*pGetSurfaceDescMethod(lpdds))((LPDIRECTDRAWSURFACE2)lpDDSBack, &ddsd);
ddsd.dwFlags &= ~DDSD_PITCH;
res=(*pCreateSurfaceMethod(lpdds))(lpPrimaryDD, &ddsd, &lpddsTmp, NULL);
if(res) OutTraceE("CreateSurface: ERROR %x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
// v2.02.80: the BackBuffer may not exist? see "HellCopter"
if(lpDDSBack){
(*pGetSurfaceDescMethod(lpdds))((LPDIRECTDRAWSURFACE2)lpDDSBack, &ddsd);
ddsd.dwFlags &= ~DDSD_PITCH;
}
else{
ddsd.dwFlags = (DDSD_HEIGHT | DDSD_WIDTH | DDSD_CAPS);
ddsd.ddsCaps.dwCaps = (DDSCAPS_OFFSCREENPLAIN);
ddsd.dwHeight = dxw.GetScreenHeight();
ddsd.dwWidth = dxw.GetScreenWidth();
}
res2=(*pCreateSurfaceMethod(lpdds))(lpPrimaryDD, &ddsd, &lpddsTmp, NULL);
if(res2) {
OutTraceE("CreateSurface: ERROR %x(%s) at %d\n", res2, ExplainDDError(res2), __LINE__);
OutTrace("Size=%d lpPrimaryDD=%x lpDDSBack=%x\n", ddsd.dwSize, lpPrimaryDD, lpDDSBack);
LogSurfaceAttributes((LPDDSURFACEDESC)&ddsd, "[FlipBuf]", __LINE__);
//dxw.dwFlags4 &= ~NOFLIPEMULATION;
}
//OutTrace("DEBUG: copied surface size=(%dx%d)\n", ddsd.dwWidth, ddsd.dwHeight);
// copy front buffer
if(dxw.dwFlags1 & EMULATESURFACE){
// in emulated mode, the primary surface is virtual and you can pick it all
// needed for "Gruntz"
res= (*pBlt)(lpddsTmp, NULL, lpdds, NULL, DDBLT_WAIT, NULL);
if(res) BlitError(res, NULL, NULL, __LINE__);
res2= (*pBlt)(lpddsTmp, NULL, lpdds, NULL, DDBLT_WAIT, NULL);
if(res2) BlitError(res2, NULL, NULL, __LINE__);
}
else {
// in no-emulated mode, the primary surface is the whole screen, so you have to pick...
@ -3374,8 +3389,8 @@ HRESULT WINAPI extFlip(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWSURFACE lpddssrc,
clip=dxw.GetScreenRect();
else
clip=dxw.GetUnmappedScreenRect();
res= (*pBlt)(lpddsTmp, NULL, lpdds, &clip, DDBLT_WAIT, NULL);
if(res) BlitError(res, &clip, NULL, __LINE__);
res2= (*pBlt)(lpddsTmp, NULL, lpdds, &clip, DDBLT_WAIT, NULL);
if(res2) BlitError(res2, &clip, NULL, __LINE__);
}
}
@ -3404,9 +3419,10 @@ HRESULT WINAPI extFlip(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWSURFACE lpddssrc,
}
if(dxw.dwFlags4 & NOFLIPEMULATION){
HRESULT res2;
// restore flipped backbuffer and delete temporary surface
res= (*pBlt)(lpddssrc, NULL, lpddsTmp, NULL, DDBLT_WAIT, NULL);
if(res) OutTraceE("Blt: ERROR %x(%s) at %d", res, ExplainDDError(res), __LINE__);
res2= (*pBlt)(lpddssrc, NULL, lpddsTmp, NULL, DDBLT_WAIT, NULL);
if(res2) OutTraceE("Blt: ERROR %x(%s) at %d\n", res2, ExplainDDError(res2), __LINE__);
(*pReleaseS)(lpddsTmp);
}
@ -4114,6 +4130,7 @@ HRESULT WINAPI extEnumDisplayModes(EnumDisplayModes1_Type pEnumDisplayModes, LPD
EmuDesc.ddpfPixelFormat.dwFlags=DDPF_RGB;
for (DepthIdx=0; SupportedDepths[DepthIdx]; DepthIdx++) {
EmuDesc.ddpfPixelFormat.dwRGBBitCount=SupportedDepths[DepthIdx];
EmuDesc.lPitch=SupportedRes[ResIdx].w * SupportedDepths[DepthIdx] / 8;
FixPixelFormat(EmuDesc.ddpfPixelFormat.dwRGBBitCount, &(EmuDesc.ddpfPixelFormat));
res=(*cb)((LPDDSURFACEDESC)&EmuDesc, lpContext);
OutTraceDW("EnumDisplayModes(D): proposed depth[%d]=%d size[%d]=(%d,%d) res=%x\n",

@ -286,7 +286,9 @@ HRESULT WINAPI extGetDeviceState(LPDIRECTINPUTDEVICE lpdid, DWORD cbdata, LPDIMO
res = (*pGetDeviceState)(lpdid, cbdata, lpvdata);
if(res) return res;
if(cbdata == sizeof(DIMOUSESTATE) || cbdata == sizeof(DIMOUSESTATE2)){
if( cbdata == sizeof(DIMOUSESTATE) || cbdata == sizeof(DIMOUSESTATE2)
// || cbdata == sizeof(DIJOYSTATE) || cbdata == sizeof(DIJOYSTATE2)
){
GetMousePosition((int *)&p.x, (int *)&p.y);
lpvdata->lX = p.x;
lpvdata->lY = p.y;
@ -304,16 +306,65 @@ HRESULT WINAPI extGetDeviceState(LPDIRECTINPUTDEVICE lpdid, DWORD cbdata, LPDIMO
lpvdata->lZ = 0;
*(DWORD *)lpvdata->rgbButtons = 0;
}
OutTraceDW("DEBUG: directinput mousestate=(%d,%d)\n", p.x, p.y);
OutTraceB("GetDeviceState(I): DEBUG mousestate=(%d,%d)\n", p.x, p.y);
}
if(cbdata == 256 && !dxw.bActive) ZeroMemory(lpvdata, 256);
return 0;
}
//static char *dftype(LPCDIDATAFORMAT lpdf)
//{
// if(lpdf == &c_dfDIMouse) return "mouse";
// if(lpdf == &c_dfDIKeyboard) return "keyboard";
// if(lpdf == &c_dfDIMouse2) return "mouse2";
// if(lpdf == &c_dfDIJoystick) return "joy";
// if(lpdf == &c_dfDIJoystick2) return "joy2";
// return "custom";
//}
static char *didftype(DWORD c)
{
static char eb[256];
unsigned int l;
strcpy(eb,"DIDFT_");
switch (c & 0x00000003){
case DIDFT_RELAXIS: strcat(eb, "RELAXIS+"); break;
case DIDFT_ABSAXIS: strcat(eb, "ABSAXIS+"); break;
case DIDFT_AXIS: strcat(eb, "AXIS+"); break;
}
switch (c & 0x0000000C){
case DIDFT_PSHBUTTON: strcat(eb, "PSHBUTTON+"); break;
case DIDFT_TGLBUTTON: strcat(eb, "TGLBUTTON+"); break;
case DIDFT_BUTTON: strcat(eb, "BUTTON+"); break;
}
if (c & DIDFT_POV) strcat(eb, "POV+");
if (c & DIDFT_COLLECTION) strcat(eb, "COLLECTION+");
if (c & DIDFT_NODATA) strcat(eb, "NODATA+");
if (c & DIDFT_FFACTUATOR) strcat(eb, "FFACTUATOR+");
if (c & DIDFT_FFEFFECTTRIGGER) strcat(eb, "FFEFFECTTRIGGER+");
if (c & DIDFT_VENDORDEFINED) strcat(eb, "VENDORDEFINED+");
if (c & DIDFT_OUTPUT) strcat(eb, "OUTPUT+");
if (c & DIDFT_ALIAS) strcat(eb, "ALIAS+");
if (c & DIDFT_OPTIONAL) strcat(eb, "OPTIONAL+");
l=strlen(eb);
if (l>strlen("DIDFT_")) eb[l-1]=0; // delete last '+' if any
else eb[0]=0;
return(eb);
}
HRESULT WINAPI extSetDataFormat(LPDIRECTINPUTDEVICE lpdid, LPCDIDATAFORMAT lpdf)
{
OutTraceDW("SetDataFormat(I): did=%x flags=0x%x\n", lpdid, lpdf->dwFlags);
OutTraceDW("SetDataFormat(I): did=%x lpdf=%x size=%d objsize=%d flags=0x%x datasize=%d numobjects=%d\n",
lpdid, lpdf, lpdf->dwSize, lpdf->dwObjSize, lpdf->dwFlags, lpdf->dwDataSize, lpdf->dwNumObjs);
if(IsDebug){
DIOBJECTDATAFORMAT *df;
df = lpdf->rgodf;
for(DWORD i=0; i<lpdf->dwNumObjs; i++){
OutTrace("SetDataFormat(I): DataFormat[%d] ofs=%x flags=%x type=%x(%s)\n",
i, df[i].dwOfs, df[i].dwFlags, df[i].dwType, didftype(df[i].dwType));
}
}
if(lpdf->dwFlags & DIDF_ABSAXIS) dxw.bDInputAbs = 1;
if(lpdf->dwFlags & DIDF_RELAXIS) dxw.bDInputAbs = 0;
@ -322,7 +373,8 @@ HRESULT WINAPI extSetDataFormat(LPDIRECTINPUTDEVICE lpdid, LPCDIDATAFORMAT lpdf)
HRESULT WINAPI extDISetCooperativeLevel(LPDIRECTINPUTDEVICE lpdid, HWND hwnd, DWORD dwflags)
{
OutTraceDW("SetCooperativeLevel(I): did=%x hwnd=%x flags=%x\n", lpdid, hwnd, dwflags);
OutTraceDW("SetCooperativeLevel(I): did=%x hwnd=%x flags=%x(%s)\n",
lpdid, hwnd, dwflags, ExplainDICooperativeFlags(dwflags));
if(dxw.IsRealDesktop(hwnd)) hwnd=dxw.GethWnd();
dwflags = DISCL_NONEXCLUSIVE | DISCL_BACKGROUND;
@ -371,6 +423,7 @@ HRESULT WINAPI extDeviceProxy(LPCDIDEVICEINSTANCE dev, LPVOID arg)
dev->dwSize, p, dev->guidInstance.Data1, dev->guidInstance.Data2, dev->guidInstance.Data3, dev->guidInstance.Data4,
dev->dwDevType, dev->tszInstanceName, dev->tszProductName);
#if 0
if(0){
DIDEVICEINSTANCEW fixdev;
fixdev.dwSize=sizeof(DIDEVICEINSTANCEW);
@ -383,13 +436,9 @@ HRESULT WINAPI extDeviceProxy(LPCDIDEVICEINSTANCE dev, LPVOID arg)
OutTraceDW("EnumDevices: CALLBACK ret=%x\n", res);
return res;
}
#endif
__try{
res = ((((CallbackArg *)arg)->cb))(dev, ((CallbackArg *)arg)->arg);
}
__except(EXCEPTION_EXECUTE_HANDLER){
res=TRUE;
}
res = (*(((CallbackArg *)arg)->cb))(dev, ((CallbackArg *)arg)->arg);
OutTraceDW("EnumDevices: CALLBACK ret=%x\n", res);
return res;
}
@ -401,7 +450,7 @@ HRESULT WINAPI extDIEnumDevices(void *lpdi, DWORD dwDevType, LPDIENUMDEVICESCALL
OutTraceDW("EnumDevices(I): di=%x DevType=%x CallBack=%x Ref=%x Flags=%x\n", lpdi, dwDevType, lpCallback, pvRef, dwFlags);
Arg.cb= lpCallback;
Arg.arg=pvRef;
res=(*pDIEnumDevices)( lpdi, dwDevType, (LPDIENUMDEVICESCALLBACK)extDeviceProxy, pvRef, dwFlags);
res=(*pDIEnumDevices)( lpdi, dwDevType, (LPDIENUMDEVICESCALLBACK)extDeviceProxy, &Arg, dwFlags); // V2.02.80 fix
//res=(*pDIEnumDevices)( lpdi, dwDevType, lpCallback, pvRef, dwFlags);
OutTraceDW("EnumDevices(I): res=%x\n", res);
return res;

@ -3,6 +3,7 @@
#include <stdio.h>
#include <ddraw.h>
#include <d3d.h>
#include <dinput.h>
#include "dxwnd.h"
@ -1716,3 +1717,18 @@ char *ExplainChangeDisplaySettingsFlags(DWORD c)
return(eb);
}
char *ExplainDICooperativeFlags(DWORD c)
{
static char eb[128];
unsigned int l;
strcpy(eb,"DISCL_");
if(c & DISCL_EXCLUSIVE) strcat(eb, "EXCLUSIVE+");
if(c & DISCL_NONEXCLUSIVE) strcat(eb, "NONEXCLUSIVE+");
if(c & DISCL_FOREGROUND) strcat(eb, "FOREGROUND+");
if(c & DISCL_BACKGROUND) strcat(eb, "BACKGROUND+");
if(c & DISCL_NOWINKEY) strcat(eb, "NOWINKEY+");
l=strlen(eb);
if (l>strlen("DISCL_")) eb[l-1]=0; // delete last '+' if any
else strcpy(eb,"NULL");
return(eb);
}

@ -50,3 +50,4 @@ extern char *ExplainD3DRenderState(DWORD);
extern char *ExplainRenderstateValue(DWORD);
extern char *ExplainWfPFlags(DWORD);
extern char *ExplainChangeDisplaySettingsFlags(DWORD);
extern char *ExplainDICooperativeFlags(DWORD);

@ -1143,7 +1143,7 @@ void dxwCore::ShowFPS(HDC xdc)
static int x, y;
static DWORD color;
if((*pGetTickCount)()-dwTimer > 4000){
if((*pGetTickCount)()-dwTimer > 6000){
RECT rect;
dwTimer = (*pGetTickCount)();
corner = dwTimer % 4;

Binary file not shown.

@ -24,7 +24,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "dxwnd.h"
#include "dxwcore.hpp"
#define VERSION "2.02.79"
#define VERSION "2.02.80"
#define DDTHREADLOCK 1

Binary file not shown.

@ -5,6 +5,7 @@
#include "dxhelper.h"
#include "hddraw.h"
#include "ddproxy.h"
#include "stdio.h"
//#undef IsTraceDW
//#define IsTraceDW TRUE
@ -17,6 +18,7 @@ static HookEntry_Type Hooks[]={
{HOOK_IAT_CANDIDATE, "LoadLibraryW", (FARPROC)LoadLibraryW, (FARPROC *)&pLoadLibraryW, (FARPROC)extLoadLibraryW},
{HOOK_IAT_CANDIDATE, "LoadLibraryExW", (FARPROC)LoadLibraryExW, (FARPROC *)&pLoadLibraryExW, (FARPROC)extLoadLibraryExW},
{HOOK_IAT_CANDIDATE, "GetDriveTypeA", (FARPROC)NULL, (FARPROC *)&pGetDriveType, (FARPROC)extGetDriveType},
{HOOK_IAT_CANDIDATE, "GetLogicalDrives", (FARPROC)NULL, (FARPROC *)&pGetLogicalDrives, (FARPROC)extGetLogicalDrives},
{HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator
};
@ -29,8 +31,8 @@ static HookEntry_Type FixIOHooks[]={
};
static HookEntry_Type LimitHooks[]={
{HOOK_IAT_CANDIDATE, "GetDiskFreeSpaceA", (FARPROC)GetDiskFreeSpaceA, (FARPROC *)&pGetDiskFreeSpaceA, (FARPROC)extGetDiskFreeSpaceA},
{HOOK_IAT_CANDIDATE, "GlobalMemoryStatus", (FARPROC)GlobalMemoryStatus, (FARPROC *)&pGlobalMemoryStatus, (FARPROC)extGlobalMemoryStatus},
{HOOK_HOT_CANDIDATE, "GetDiskFreeSpaceA", (FARPROC)GetDiskFreeSpaceA, (FARPROC *)&pGetDiskFreeSpaceA, (FARPROC)extGetDiskFreeSpaceA},
{HOOK_HOT_CANDIDATE, "GlobalMemoryStatus", (FARPROC)GlobalMemoryStatus, (FARPROC *)&pGlobalMemoryStatus, (FARPROC)extGlobalMemoryStatus},
{HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator
};
@ -316,12 +318,9 @@ VOID WINAPI extSleep(DWORD dwMilliseconds)
{
DWORD dwNewDelay;
dwNewDelay=dwMilliseconds;
if (dwMilliseconds!=INFINITE && dwMilliseconds!=0){
if ((dwMilliseconds!=INFINITE) && (dwMilliseconds!=0)){
dwNewDelay = dxw.StretchTime(dwMilliseconds);
if (dwNewDelay==0){ // oh oh! troubles...
if (dxw.TimeShift > 0) dwNewDelay=1; // minimum allowed...
else dwNewDelay = INFINITE-1; // maximum allowed !!!
}
if (dwNewDelay==0) dwNewDelay=1; // minimum allowed...
}
if (IsDebug) OutTrace("Sleep: msec=%d->%d timeshift=%d\n", dwMilliseconds, dwNewDelay, dxw.TimeShift);
(*pSleep)(dwNewDelay);
@ -331,12 +330,9 @@ DWORD WINAPI extSleepEx(DWORD dwMilliseconds, BOOL bAlertable)
{
DWORD dwNewDelay;
dwNewDelay=dwMilliseconds;
if (dwMilliseconds!=INFINITE && dwMilliseconds!=0){
if ((dwMilliseconds!=INFINITE) && (dwMilliseconds!=0)){
dwNewDelay = dxw.StretchTime(dwMilliseconds);
if (dwNewDelay==0){ // oh oh! troubles...
if (dxw.TimeShift > 0) dwNewDelay=1; // minimum allowed...
else dwNewDelay = INFINITE-1; // maximum allowed !!!
}
if (dwNewDelay==0) dwNewDelay=1; // minimum allowed...
}
if (IsDebug) OutTrace("SleepEx: msec=%d->%d alertable=%x, timeshift=%d\n", dwMilliseconds, dwNewDelay, bAlertable, dxw.TimeShift);
return (*pSleepEx)(dwNewDelay, bAlertable);
@ -611,9 +607,37 @@ UINT WINAPI extGetDriveType(LPCTSTR lpRootPathName)
{
OutTraceDW("GetDriveType: path=\"%s\"\n", lpRootPathName);
if (dxw.dwFlags3 & CDROMDRIVETYPE) return DRIVE_CDROM;
if (dxw.dwFlags4 & HIDECDROMEMPTY){
BOOL Vol;
Vol = GetVolumeInformation(lpRootPathName, NULL, NULL, NULL, 0, 0, 0, 0);
OutTrace("Vol=%x\n", Vol);
if(!Vol) return DRIVE_UNKNOWN;
}
return (*pGetDriveType)(lpRootPathName);
}
DWORD WINAPI extGetLogicalDrives(void)
{
DWORD DevMask;
OutTraceDW("GetLogicalDrives:\n");
DevMask = (*pGetLogicalDrives)();
if (dxw.dwFlags4 & HIDECDROMEMPTY){
for(int i=0; i<32; i++){
DWORD DevBit;
BOOL Vol;
DevBit = 0x1 << i;
if(DevMask & DevBit){
char RootPathName[10];
sprintf(RootPathName, "%c:\\", 'A'+i);
Vol = GetVolumeInformation(RootPathName, NULL, NULL, NULL, 0, 0, 0, 0);
OutTrace("Vol=%s status=%x\n", RootPathName, Vol);
if(!Vol) DevMask &= ~DevBit;
}
}
}
return DevMask;
}
BOOL WINAPI extReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped)
{
BOOL ret;

@ -99,6 +99,7 @@ typedef DWORD (WINAPI *GetObjectType_Type)(HGDIOBJ);
// Kernel32.dll:
typedef BOOL (WINAPI *GetDiskFreeSpaceA_Type)(LPCSTR, LPDWORD, LPDWORD, LPDWORD, LPDWORD);
typedef UINT (WINAPI *GetDriveType_Type)(LPCSTR);
typedef DWORD (WINAPI *GetLogicalDrives_Type)(void);
typedef void (WINAPI *GetLocalTime_Type)(LPSYSTEMTIME);
typedef FARPROC (WINAPI *GetProcAddress_Type)(HMODULE, LPCSTR);
typedef void (WINAPI *GetSystemTime_Type)(LPSYSTEMTIME);
@ -308,6 +309,7 @@ DXWEXTERN GetObjectType_Type pGetObjectType DXWINITIALIZED;
// Kernel32.dll:
DXWEXTERN GetDiskFreeSpaceA_Type pGetDiskFreeSpaceA DXWINITIALIZED;
DXWEXTERN GetDriveType_Type pGetDriveType DXWINITIALIZED;
DXWEXTERN GetLogicalDrives_Type pGetLogicalDrives DXWINITIALIZED;
DXWEXTERN GetLocalTime_Type pGetLocalTime DXWINITIALIZED;
DXWEXTERN GetProcAddress_Type pGetProcAddress DXWINITIALIZED;
DXWEXTERN GetSystemTime_Type pGetSystemTime DXWINITIALIZED;
@ -508,6 +510,7 @@ extern DWORD WINAPI extGetObjectType(HGDIOBJ);
// Kernel32.dll:
extern BOOL WINAPI extGetDiskFreeSpaceA(LPCSTR, LPDWORD, LPDWORD, LPDWORD, LPDWORD);
extern UINT WINAPI extGetDriveType(LPCSTR);
extern DWORD WINAPI extGetLogicalDrives(void);
extern void WINAPI extGetLocalTime(LPSYSTEMTIME);
extern FARPROC WINAPI extGetProcAddress(HMODULE, LPCSTR);
extern void WINAPI extGetSystemTime(LPSYSTEMTIME);

@ -492,221 +492,3 @@ void ReportError(LPCWSTR pszFunction, DWORD dwError = GetLastError())
}
}
#if 0
//
// FUNCTION: OnInitDialog(HWND, HWND, LPARAM)
//
// PURPOSE: Process the WM_INITDIALOG message. Check and display the
// "run as administrator" status, the elevation information, and the
// integrity level of the current process.
//
BOOL OnInitDialog(HWND hWnd, HWND hwndFocus, LPARAM lParam)
{
// Get and display whether the primary access token of the process
// belongs to user account that is a member of the local Administrators
// group even if it currently is not elevated (IsUserInAdminGroup).
HWND hInAdminGroupLabel = GetDlgItem(hWnd, IDC_STATIC_INADMINGROUP);
try
{
BOOL const fInAdminGroup = IsUserInAdminGroup();
SetWindowText(hInAdminGroupLabel, fInAdminGroup ? L"True" : L"False");
}
catch (DWORD dwError)
{
SetWindowText(hInAdminGroupLabel, L"N/A");
ReportError(L"IsUserInAdminGroup", dwError);
}
// Get and display whether the process is run as administrator or not
// (IsRunAsAdmin).
HWND hIsRunAsAdminLabel = GetDlgItem(hWnd, IDC_STATIC_ISRUNASADMIN);
try
{
BOOL const fIsRunAsAdmin = IsRunAsAdmin();
SetWindowText(hIsRunAsAdminLabel, fIsRunAsAdmin ? L"True" : L"False");
}
catch (DWORD dwError)
{
SetWindowText(hIsRunAsAdminLabel, L"N/A");
ReportError(L"IsRunAsAdmin", dwError);
}
// Get and display the process elevation information (IsProcessElevated)
// and integrity level (GetProcessIntegrityLevel). The information is not
// available on operating systems prior to Windows Vista.
HWND hIsElevatedLabel = GetDlgItem(hWnd, IDC_STATIC_ISELEVATED);
HWND hILLabel = GetDlgItem(hWnd, IDC_STATIC_IL);
OSVERSIONINFO osver = { sizeof(osver) };
if (GetVersionEx(&osver) && osver.dwMajorVersion >= 6)
{
// Running Windows Vista or later (major version >= 6).
try
{
// Get and display the process elevation information.
BOOL const fIsElevated = IsProcessElevated();
SetWindowText(hIsElevatedLabel, fIsElevated ? L"True" : L"False");
// Update the Self-elevate button to show the UAC shield icon on
// the UI if the process is not elevated. The
// Button_SetElevationRequiredState macro (declared in Commctrl.h)
// is used to show or hide the shield icon in a button. You can
// also get the shield directly as an icon by calling
// SHGetStockIconInfo with SIID_SHIELD as the parameter.
HWND hElevateBtn = GetDlgItem(hWnd, IDC_BUTTON_ELEVATE);
Button_SetElevationRequiredState(hElevateBtn, !fIsElevated);
}
catch (DWORD dwError)
{
SetWindowText(hIsElevatedLabel, L"N/A");
ReportError(L"IsProcessElevated", dwError);
}
try
{
// Get and display the process integrity level.
DWORD const dwIntegrityLevel = GetProcessIntegrityLevel();
switch (dwIntegrityLevel)
{
case SECURITY_MANDATORY_UNTRUSTED_RID: SetWindowText(hILLabel, L"Untrusted"); break;
case SECURITY_MANDATORY_LOW_RID: SetWindowText(hILLabel, L"Low"); break;
case SECURITY_MANDATORY_MEDIUM_RID: SetWindowText(hILLabel, L"Medium"); break;
case SECURITY_MANDATORY_HIGH_RID: SetWindowText(hILLabel, L"High"); break;
case SECURITY_MANDATORY_SYSTEM_RID: SetWindowText(hILLabel, L"System"); break;
default: SetWindowText(hILLabel, L"Unknown"); break;
}
}
catch (DWORD dwError)
{
SetWindowText(hILLabel, L"N/A");
ReportError(L"GetProcessIntegrityLevel", dwError);
}
}
else
{
SetWindowText(hIsElevatedLabel, L"N/A");
SetWindowText(hILLabel, L"N/A");
}
return TRUE;
}
//
// FUNCTION: OnCommand(HWND, int, HWND, UINT)
//
// PURPOSE: Process the WM_COMMAND message
//
void OnCommand(HWND hWnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch (id)
{
case IDC_BUTTON_ELEVATE:
{
// Check the current process's "run as administrator" status.
BOOL fIsRunAsAdmin;
try
{
fIsRunAsAdmin = IsRunAsAdmin();
}
catch (DWORD dwError)
{
ReportError(L"IsRunAsAdmin", dwError);
break;
}
// Elevate the process if it is not run as administrator.
if (!fIsRunAsAdmin)
{
wchar_t szPath[MAX_PATH];
if (GetModuleFileName(NULL, szPath, ARRAYSIZE(szPath)))
{
// Launch itself as administrator.
SHELLEXECUTEINFO sei = { sizeof(sei) };
sei.lpVerb = L"runas";
sei.lpFile = szPath;
sei.hwnd = hWnd;
sei.nShow = SW_NORMAL;
if (!ShellExecuteEx(&sei))
{
DWORD dwError = GetLastError();
if (dwError == ERROR_CANCELLED)
{
// The user refused the elevation.
// Do nothing ...
}
}
else
{
EndDialog(hWnd, TRUE); // Quit itself
}
}
}
else
{
MessageBox(hWnd, L"The process is running as administrator", L"UAC", MB_OK);
}
}
break;
case IDOK:
case IDCANCEL:
EndDialog(hWnd, 0);
break;
}
}
//
// FUNCTION: OnClose(HWND)
//
// PURPOSE: Process the WM_CLOSE message
//
void OnClose(HWND hWnd)
{
EndDialog(hWnd, 0);
}
//
// FUNCTION: DialogProc(HWND, UINT, WPARAM, LPARAM)
//
// PURPOSE: Processes messages for the main dialog.
//
INT_PTR CALLBACK DialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
// Handle the WM_INITDIALOG message in OnInitDialog
HANDLE_MSG (hWnd, WM_INITDIALOG, OnInitDialog);
// Handle the WM_COMMAND message in OnCommand
HANDLE_MSG (hWnd, WM_COMMAND, OnCommand);
// Handle the WM_CLOSE message in OnClose
HANDLE_MSG (hWnd, WM_CLOSE, OnClose);
default:
return FALSE;
}
return 0;
}
//
// FUNCTION: wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int)
//
// PURPOSE: The entry point of the application.
//
int APIENTRY wWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPWSTR lpCmdLine,
int nCmdShow)
{
return DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAINDIALOG), NULL, DialogProc);
}
#endif

@ -55,11 +55,11 @@ CMainFrame::CMainFrame()
// duplicate activation check
GlobalLocker=CreateSemaphore(NULL, 0, 1, "DxWnd LOCKER");
if(GlobalLocker==NULL){
MessageBoxEx(0, "CreateSemaphore FAILED.\nExiting.", "Warning", MB_OK | MB_ICONEXCLAMATION, NULL);
MessageBoxLang(DXW_STRING_SEMAPHORE, DXW_STRING_WARNING, MB_OK | MB_ICONEXCLAMATION);
return;
}
if(GetLastError()==ERROR_ALREADY_EXISTS){
MessageBoxEx(0, "DxWnd is already running.\nExiting.", "Warning", MB_OK | MB_ICONEXCLAMATION, NULL);
MessageBoxLang(DXW_STRING_DXWRUNNING, DXW_STRING_WARNING, MB_OK | MB_ICONEXCLAMATION);
exit(1);
}
}

38
host/MessageBox.cpp Normal file

@ -0,0 +1,38 @@
#include "stdafx.h"
#include <stdio.h>
#include <stdarg.h>
int MessageBoxLang(UINT iText, UINT iCaption, UINT uType)
{
WCHAR sBuffer[1024+1];
WCHAR sCaption[48+1];
LoadStringW(AfxGetResourceHandle(), iText, (LPWSTR)&sBuffer, sizeof(sBuffer));
LoadStringW(AfxGetResourceHandle(), iCaption, (LPWSTR)&sCaption, sizeof(sCaption));
return MessageBoxExW(NULL, sBuffer, sCaption, uType, NULL);
}
int MessageBoxLangArg(UINT iText, UINT iCaption, UINT uType, ...)
{
va_list al;
WCHAR sBuffer[1024+1];
WCHAR sFormat[1024+1];
WCHAR sCaption[48+1];
LoadStringW(AfxGetResourceHandle(), iText, (LPWSTR)&sFormat, sizeof(sFormat));
LoadStringW(AfxGetResourceHandle(), iCaption, (LPWSTR)&sCaption, sizeof(sCaption));
va_start(al, uType);
vswprintf(sBuffer, 1024, sFormat, al);
va_end(al);
return MessageBoxExW(NULL, sBuffer, sCaption, uType, NULL);
}
int MessageBoxLangWstr(LPWSTR lpBuffer, UINT iCaption, UINT uType)
{
WCHAR sCaption[48+1];
LoadStringW(AfxGetResourceHandle(), iCaption, (LPWSTR)&sCaption, sizeof(sCaption));
return MessageBoxExW(NULL, lpBuffer, sCaption, uType, NULL);
}

Binary file not shown.

@ -41,6 +41,7 @@ void CTabCompat::DoDataExchange(CDataExchange* pDX)
DDX_Check(pDX, IDC_ZBUFFER0CLEAN, cTarget->m_ZBuffer0Clean);
DDX_Check(pDX, IDC_NOPOWER2FIX, cTarget->m_NoPower2Fix);
DDX_Check(pDX, IDC_NOPERFCOUNTER, cTarget->m_NoPerfCounter);
DDX_Check(pDX, IDC_HIDECDROMEMPTY, cTarget->m_HideCDROMEmpty);
// 3D management
DDX_Check(pDX, IDC_NOTEXTURES, cTarget->m_NoTextures);

@ -57,6 +57,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
m_SingleProcAffinity = FALSE;
m_LimitResources = FALSE;
m_CDROMDriveType = FALSE;
m_HideCDROMEmpty = FALSE;
m_FontBypass = FALSE;
m_BufferedIOFix = FALSE;
m_ZBufferClean = FALSE;

@ -129,6 +129,7 @@ public:
BOOL m_NoPaletteUpdate;
BOOL m_LimitResources;
BOOL m_CDROMDriveType;
BOOL m_HideCDROMEmpty;
BOOL m_FontBypass;
BOOL m_BufferedIOFix;
BOOL m_ZBufferClean;

@ -1,29 +0,0 @@
[window]
posx=1283
posy=380
sizx=320
sizy=200
[target]
title0=a10
path0=D:\Games\A10\A10Cuba.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=134217762
flagg0=1207959552
flagh0=20
flagi0=0
tflag0=64
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0

Binary file not shown.

@ -61,6 +61,15 @@ void CNewCommandLineInfo::ParseParam(LPCTSTR lpszParam, BOOL bFlag, BOOL bLast)
gbDebug = TRUE;
return;
}
if (sParam.MakeLower().Left(5) == "lang="){
HMODULE ResLib;
CString Lang;
Lang = sParam.MakeLower().Right(2);
ResLib=LoadLibrary("Resources_"+Lang+".dll");
if(ResLib) AfxSetResourceHandle(ResLib);
else MessageBoxEx(NULL, "Missing language \""+Lang+"\"\nUsing default language \"en\"", "Warning", MB_OK, NULL);
return;
}
if (sParam.Left(2).MakeLower() == "c:"){
strcpy_s(m_ConfigFileName, sizeof(m_ConfigFileName)-1, sParam.Mid(2,sizeof(m_ConfigFileName)-1));
return;
@ -139,12 +148,7 @@ BOOL CDxwndhostApp::InitInstance()
BOOL const fIsElevated = IsProcessElevated();
BOOL MustRestart;
if(fIsElevated) return TRUE;
MustRestart=MessageBoxEx(0,
"Administrator capability is missing.\n"
"It could be required to handle some programs.\n"
"Do you want to acquire it?",
"Warning", MB_OKCANCEL | MB_ICONQUESTION, NULL);
MustRestart=MessageBoxLang(DXW_STRING_ADMINCAP, DXW_STRING_WARNING, MB_OKCANCEL | MB_ICONQUESTION);
if(MustRestart==IDOK){
extern HANDLE GlobalLocker;
CloseHandle(GlobalLocker);
@ -153,11 +157,18 @@ BOOL CDxwndhostApp::InitInstance()
{
// Launch itself as administrator.
SHELLEXECUTEINFO sei = { sizeof(sei) };
CString args;
sei.lpVerb = "runas";
sei.lpFile = szPath;
//sei.hwnd = (HWND)this->GetMainWnd();
sei.hwnd = (HWND)NULL; // set to NULL to force the confirmation dialog on top of everything...
sei.nShow = SW_NORMAL;
args = "";
for(int i=1; i<=__argc; i++) {
args += (LPCSTR)(__argv[i]);
args += " ";
}
sei.lpParameters = args;
if (!ShellExecuteEx(&sei)){
DWORD dwError = GetLastError();
if (dwError == ERROR_CANCELLED){
@ -236,15 +247,6 @@ void CDxwndhostApp::OnAppAbout()
aboutDlg.DoModal();
}
//void CDxwndhostApp::OnAppExit()
//{
// MessageBoxEx(0,
// "A hooked task is still running.\n"
// "Exiting now may crash it.\n"
// "Do you still want to exit?",
// "Warning", MB_OKCANCEL | MB_ICONQUESTION, NULL);
//}
/////////////////////////////////////////////////////////////////////////////
// CDxwndhostApp Message Handler

Binary file not shown.

BIN
host/dxwndhost.rc2.txt Normal file

Binary file not shown.

@ -3,6 +3,10 @@ Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dxwndhost", "dxwndhost.vs2008.vcproj", "{FD0B0234-8EC5-43C0-A384-1B881DD3D925}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Resources_Ch", "..\locale\ch\Resources_Ch.vcproj", "{F8D07BBB-A04B-4C0C-8AF8-7F839A152456}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dxwnd", "..\dll\dxwnd.vs2008.vcproj", "{579E7FE7-2745-4100-A802-23511711FCDE}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
@ -13,6 +17,14 @@ Global
{FD0B0234-8EC5-43C0-A384-1B881DD3D925}.Debug|Win32.Build.0 = Debug|Win32
{FD0B0234-8EC5-43C0-A384-1B881DD3D925}.Release|Win32.ActiveCfg = Release|Win32
{FD0B0234-8EC5-43C0-A384-1B881DD3D925}.Release|Win32.Build.0 = Release|Win32
{F8D07BBB-A04B-4C0C-8AF8-7F839A152456}.Debug|Win32.ActiveCfg = Debug|Win32
{F8D07BBB-A04B-4C0C-8AF8-7F839A152456}.Debug|Win32.Build.0 = Debug|Win32
{F8D07BBB-A04B-4C0C-8AF8-7F839A152456}.Release|Win32.ActiveCfg = Release|Win32
{F8D07BBB-A04B-4C0C-8AF8-7F839A152456}.Release|Win32.Build.0 = Release|Win32
{579E7FE7-2745-4100-A802-23511711FCDE}.Debug|Win32.ActiveCfg = Debug|Win32
{579E7FE7-2745-4100-A802-23511711FCDE}.Debug|Win32.Build.0 = Debug|Win32
{579E7FE7-2745-4100-A802-23511711FCDE}.Release|Win32.ActiveCfg = Release|Win32
{579E7FE7-2745-4100-A802-23511711FCDE}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

Binary file not shown.

@ -168,7 +168,7 @@
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1041"
Culture="0"
/>
<Tool
Name="VCPreLinkEventTool"
@ -343,6 +343,10 @@
/>
</FileConfiguration>
</File>
<File
RelativePath=".\MessageBox.cpp"
>
</File>
<File
RelativePath=".\PaletteDialog.cpp"
>

@ -74,10 +74,9 @@ END_MESSAGE_MAP()
// v2.1.68: dialog box for status check.
static BOOL CheckStatus()
{
{
if(GetHookStatus(NULL)==DXW_RUNNING){
MessageBoxEx(0, "A hooked task is still running.\nWait its termination.",
"Warning", MB_OK | MB_ICONEXCLAMATION, NULL);
MessageBoxLang(DXW_STRING_WAITTASK, DXW_STRING_WARNING, MB_OK | MB_ICONEXCLAMATION);
return TRUE;
}
return FALSE;
@ -91,11 +90,8 @@ static void RevertScreenChanges(DEVMODE *InitDevMode)
if ((CurDevMode.dmPelsHeight != InitDevMode->dmPelsHeight) ||
(CurDevMode.dmPelsWidth != InitDevMode->dmPelsWidth) ||
(CurDevMode.dmBitsPerPel != InitDevMode->dmBitsPerPel)){
if (MessageBoxEx(0,
"Desktop setting has changed.\n"
"Do you want to restore the previous ones?",
"Warning", MB_YESNO | MB_ICONQUESTION, NULL)==IDYES)
ChangeDisplaySettings(InitDevMode, 0);
if (MessageBoxLang(DXW_STRING_RESTORE, DXW_STRING_WARNING, MB_YESNO | MB_ICONQUESTION)==IDYES)
ChangeDisplaySettings(InitDevMode, 0);
}
}
@ -166,6 +162,7 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
if(dlg->m_HandleExceptions) t->flags |= HANDLEEXCEPTIONS;
if(dlg->m_LimitResources) t->flags2 |= LIMITRESOURCES;
if(dlg->m_CDROMDriveType) t->flags3 |= CDROMDRIVETYPE;
if(dlg->m_HideCDROMEmpty) t->flags4 |= HIDECDROMEMPTY;
if(dlg->m_FontBypass) t->flags3 |= FONTBYPASS;
if(dlg->m_BufferedIOFix) t->flags3 |= BUFFEREDIOFIX;
if(dlg->m_ZBufferClean) t->flags4 |= ZBUFFERCLEAN;
@ -356,6 +353,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
dlg->m_SingleProcAffinity = t->flags3 & SINGLEPROCAFFINITY ? 1 : 0;
dlg->m_LimitResources = t->flags2 & LIMITRESOURCES ? 1 : 0;
dlg->m_CDROMDriveType = t->flags3 & CDROMDRIVETYPE ? 1 : 0;
dlg->m_HideCDROMEmpty = t->flags4 & HIDECDROMEMPTY ? 1 : 0;
dlg->m_FontBypass = t->flags3 & FONTBYPASS ? 1 : 0;
dlg->m_BufferedIOFix = t->flags3 & BUFFEREDIOFIX ? 1 : 0;
dlg->m_ZBufferClean = t->flags4 & ZBUFFERCLEAN ? 1 : 0;
@ -697,12 +695,10 @@ CDxwndhostView::~CDxwndhostView()
RevertScreenChanges(&this->InitDevMode);
if (this->isUpdated)
if (MessageBoxEx(0,
"Task list has changed.\n"
"Do you want to save it?",
"Warning", MB_YESNO | MB_ICONQUESTION, NULL)==IDYES)
this->SaveConfigFile();
if (this->isUpdated){
if (MessageBoxLang(DXW_STRING_LISTUPDATE, DXW_STRING_WARNING, MB_YESNO | MB_ICONQUESTION)==IDYES)
this->SaveConfigFile();
}
if(this->SystemTray.Enabled()){
this->SystemTray.StopAnimation();
@ -714,11 +710,8 @@ void CDxwndhostView::OnExit()
{
// check for running apps ....
if (GetHookStatus(NULL)==DXW_RUNNING){
if (MessageBoxEx(0,
"A hooked task is still running.\n"
"Exiting now may crash it.\n"
"Do you still want to exit?",
"Warning", MB_OKCANCEL | MB_ICONQUESTION, NULL)==IDCANCEL) return;
if (MessageBoxLang(DXW_STRING_EXIT, DXW_STRING_WARNING, MB_OKCANCEL | MB_ICONQUESTION)==IDCANCEL)
return;
}
delete(this->GetParent());
}
@ -853,18 +846,19 @@ void CDxwndhostView::OnImport()
char path[MAX_PATH];
for (i=0; strlen(TargetMaps[i].path) && i<MAXTARGETS; i++)
;
if (i==MAXTARGETS) return;
if (i==MAXTARGETS) {
MessageBoxLang(DXW_STRING_MAXENTRIES, DXW_STRING_WARNING, MB_OK | MB_ICONEXCLAMATION);
return;
}
path[0]=0;
CListCtrl& listctrl = GetListCtrl();
//static char buffer[4096] = {0};
//static char dirbuffer[4096] = {0};
char folder[MAX_PATH+1];
char pathname[MAX_PATH+1];
OPENFILENAME ofn = {0};
ofn.lStructSize = sizeof(ofn);
ofn.lpstrFilter = "DxWnd export file\0*.dxw\0\0";
ofn.lpstrFile = (LPSTR)ImportExportPath;
//ofn.lpstrInitialDir = (LPSTR)dirbuffer;
ofn.nMaxFile = 4096;
ofn.Flags = OFN_ALLOWMULTISELECT | OFN_EXPLORER;
ofn.lpstrDefExt = "dxw";
@ -873,13 +867,14 @@ void CDxwndhostView::OnImport()
if(ImportExportPath[ofn.nFileOffset - 1] != '\0'){
// Single-Select
// "buffer" - name of file
LoadConfigItem(&TargetMaps[i], &TitleMaps[i], 0, ImportExportPath);
listitem.mask = LVIF_TEXT | LVIF_IMAGE;
listitem.iItem = i;
listitem.iSubItem = 0;
listitem.iImage = SetTargetIcon(TargetMaps[i]);
listitem.pszText = TitleMaps[i].title;
listctrl.InsertItem(&listitem);
if(LoadConfigItem(&TargetMaps[i], &TitleMaps[i], 0, ImportExportPath)){
listitem.mask = LVIF_TEXT | LVIF_IMAGE;
listitem.iItem = i;
listitem.iSubItem = 0;
listitem.iImage = SetTargetIcon(TargetMaps[i]);
listitem.pszText = TitleMaps[i].title;
listctrl.InsertItem(&listitem);
}
}
else{
// Multi-Select
@ -887,19 +882,21 @@ void CDxwndhostView::OnImport()
strcpy(folder, p);
strcat(folder, "\\");
p += lstrlen((LPSTR)p) + 1;
while(*p){
while(*p && (i<MAXTARGETS)){
// "p" - name of each files, NULL to terminate
if(!*p)break;
if(!*p) break;
if(i==MAXTARGETS) break;
strcpy(pathname, folder);
strcat(pathname, p);
LoadConfigItem(&TargetMaps[i], &TitleMaps[i], 0, pathname);
listitem.mask = LVIF_TEXT | LVIF_IMAGE;
listitem.iItem = i;
listitem.iSubItem = 0;
listitem.iImage = SetTargetIcon(TargetMaps[i]);
listitem.pszText = TitleMaps[i].title;
listctrl.InsertItem(&listitem);
i++;
if (LoadConfigItem(&TargetMaps[i], &TitleMaps[i], 0, pathname)){
listitem.mask = LVIF_TEXT | LVIF_IMAGE;
listitem.iItem = i;
listitem.iSubItem = 0;
listitem.iImage = SetTargetIcon(TargetMaps[i]);
listitem.pszText = TitleMaps[i].title;
listctrl.InsertItem(&listitem);
i++;
}
p += lstrlen((LPSTR)p) + 1;
}
}
@ -1007,8 +1004,7 @@ void CDxwndhostView::OnDeleteLog()
if((logfp=fopen(FilePath,"rb"))!=NULL){ // if the file exists ....
fclose(logfp);
// ... ask confirmation.
res=MessageBoxEx(0, "Clear log file?",
"Warning", MB_YESNO | MB_ICONQUESTION, NULL);
res=MessageBoxLang(DXW_STRING_CLEARLOG, DXW_STRING_WARNING, MB_YESNO | MB_ICONQUESTION);
if(res!=IDYES) return;
}
@ -1032,8 +1028,7 @@ void CDxwndhostView::OnSort()
if (itemcount<2) return;
// ask for confirmation
res=MessageBoxEx(0, "Sort the application list?",
"Warning", MB_YESNO | MB_ICONQUESTION, NULL);
res=MessageBoxLang(DXW_STRING_SORTLIST, DXW_STRING_WARNING, MB_YESNO | MB_ICONQUESTION);
if(res!=IDYES) return;
// bubble sort the list
@ -1117,14 +1112,14 @@ void CDxwndhostView::OnPause()
{
CTargetDlg dlg;
HRESULT res;
char sMsg[128+1];
DXWNDSTATUS DxWndStatus;
if ((GetHookStatus(&DxWndStatus) != DXW_RUNNING) || (DxWndStatus.hWnd==NULL)) {
MessageBoxEx(0, "No active task to pause.", "Info", MB_ICONEXCLAMATION, NULL);
MessageBoxLang(DXW_STRING_NOPAUSETASK, DXW_STRING_INFO, MB_ICONEXCLAMATION);
}
else {
sprintf_s(sMsg, 128, "Do you want to pause \nthe \"%s\" task?", TitleMaps[DxWndStatus.TaskIdx].title);
res=MessageBoxEx(0, sMsg, "Warning", MB_YESNO | MB_ICONQUESTION, NULL);
wchar_t *wcstring = new wchar_t[48+1];
mbstowcs_s(NULL, wcstring, 48, TitleMaps[DxWndStatus.TaskIdx].title, _TRUNCATE);
res=MessageBoxLangArg(DXW_STRING_PAUSETASK, DXW_STRING_INFO, MB_YESNO | MB_ICONQUESTION, wcstring);
if(res!=IDYES) return;
PauseResumeThreadList(DxWndStatus.dwPid, FALSE);
}
@ -1134,14 +1129,14 @@ void CDxwndhostView::OnResume()
{
CTargetDlg dlg;
HRESULT res;
char sMsg[128+1];
DXWNDSTATUS DxWndStatus;
if ((GetHookStatus(&DxWndStatus) != DXW_RUNNING) || (DxWndStatus.hWnd==NULL)) {
MessageBoxEx(0, "No active task to resume.", "Info", MB_ICONEXCLAMATION, NULL);
MessageBoxLang(DXW_STRING_NORESUMETASK, DXW_STRING_INFO, MB_ICONEXCLAMATION);
}
else {
sprintf_s(sMsg, 128, "Do you want to resume \nthe \"%s\" task?", TitleMaps[DxWndStatus.TaskIdx].title);
res=MessageBoxEx(0, sMsg, "Warning", MB_YESNO | MB_ICONQUESTION, NULL);
wchar_t *wcstring = new wchar_t[48+1];
mbstowcs_s(NULL, wcstring, 48, TitleMaps[DxWndStatus.TaskIdx].title, _TRUNCATE);
res=MessageBoxLangArg(DXW_STRING_RESUMETASK, DXW_STRING_WARNING, MB_YESNO | MB_ICONQUESTION, wcstring);
if(res!=IDYES) return;
PauseResumeThreadList(DxWndStatus.dwPid, TRUE);
}
@ -1152,26 +1147,24 @@ void CDxwndhostView::OnKill()
CTargetDlg dlg;
HRESULT res;
HANDLE TargetHandle;
char sMsg[128+1];
DXWNDSTATUS DxWndStatus;
if ((GetHookStatus(&DxWndStatus) != DXW_RUNNING) || (DxWndStatus.hWnd==NULL)) {
MessageBoxEx(0, "No active task to kill.", "Info", MB_ICONEXCLAMATION, NULL);
MessageBoxLang(DXW_STRING_NOKILLTASK, DXW_STRING_INFO, MB_ICONEXCLAMATION);
}
else {
sprintf_s(sMsg, 128, "Do you want to kill \nthe \"%s\" task?", TitleMaps[DxWndStatus.TaskIdx].title);
res=MessageBoxEx(0, sMsg, "Warning", MB_YESNO | MB_ICONQUESTION, NULL);
wchar_t *wcstring = new wchar_t[48+1];
mbstowcs_s(NULL, wcstring, 48, TitleMaps[DxWndStatus.TaskIdx].title, _TRUNCATE);
res=MessageBoxLangArg(DXW_STRING_KILLTASK, DXW_STRING_WARNING, MB_YESNO | MB_ICONQUESTION, wcstring);
if(res!=IDYES) return;
DxWndStatus.dwPid;
TargetHandle = OpenProcess(PROCESS_TERMINATE, FALSE, DxWndStatus.dwPid);
if(!TargetHandle){
sprintf_s(sMsg, 128, "OpenProcess(%x) error %d, operation failed.", DxWndStatus.dwPid, GetLastError());
MessageBoxEx(0, sMsg, "Error", MB_ICONEXCLAMATION, NULL);
MessageBoxLangArg(DXW_STRING_OPENPROCESS, DXW_STRING_ERROR, MB_ICONEXCLAMATION, DxWndStatus.dwPid, GetLastError());
return;
}
if(!TerminateProcess(TargetHandle, 0)){
sprintf_s(sMsg, 128, "TerminateProcess(%x) error %d, operation failed.", TargetHandle, GetLastError());
MessageBoxEx(0, sMsg, "Error", MB_ICONEXCLAMATION, NULL);
MessageBoxLangArg(DXW_STRING_TERMINATE, DXW_STRING_ERROR, MB_ICONEXCLAMATION, TargetHandle, GetLastError());
return;
}
CloseHandle(TargetHandle);
@ -1189,17 +1182,17 @@ void CDxwndhostView::OnProcessKill()
char FilePath[MAX_PATH+1];
char *lpProcName, *lpNext;
HRESULT res;
char sMsg[128+1];
if(!listctrl.GetSelectedCount()) return ;
pos = listctrl.GetFirstSelectedItemPosition();
i = listctrl.GetNextSelectedItem(pos);
strncpy(FilePath,TargetMaps[i].path,MAX_PATH);
sprintf_s(sMsg, 128, "Do you want to kill \nthe \"%s\" task?", TitleMaps[i].title);
res=MessageBoxEx(0, sMsg, "Warning", MB_YESNO | MB_ICONQUESTION, NULL);
wchar_t *wcstring = new wchar_t[48+1];
mbstowcs_s(NULL, wcstring, 48, TitleMaps[i].title, _TRUNCATE);
res=MessageBoxLangArg(DXW_STRING_KILLTASK, DXW_STRING_WARNING, MB_YESNO | MB_ICONQUESTION, wcstring);
if(res!=IDYES) return;
strncpy(FilePath,TargetMaps[i].path,MAX_PATH);
lpProcName=FilePath;
while (lpNext=strchr(lpProcName,'\\')) lpProcName=lpNext+1;
@ -1216,14 +1209,9 @@ void CDxwndhostView::OnAdd()
CTargetDlg dlg;
LV_ITEM listitem;
//dlg.m_DXVersion = 0;
//dlg.m_Coordinates = 0;
//dlg.m_MaxX = 0; //639;
//dlg.m_MaxY = 0; //479;
//dlg.m_DxEmulationMode = 4; // defaulting to AUTOMATIC
for(i = 0; i < MAXTARGETS; i ++) if(!TargetMaps[i].path[0]) break;
if(i>=MAXTARGETS){
MessageBoxEx(0, "Maximum entries number reached.\nDelete some entry to add a new one.", "Warning", MB_OK | MB_ICONEXCLAMATION, NULL);
MessageBoxLang(DXW_STRING_MAXENTRIES, DXW_STRING_WARNING, MB_OK | MB_ICONEXCLAMATION);
return;
}
memset(&TargetMaps[i],0,sizeof(TARGETMAP)); // clean up, just in case....
@ -1272,8 +1260,9 @@ void CDxwndhostView::OnDelete()
FilePath=FilePath.Right(FilePath.GetLength()-len-1);
}
res=MessageBoxEx(0, "Delete \""+FilePath+"\" ?",
"Warning", MB_YESNO | MB_ICONQUESTION, NULL);
wchar_t *wcstring = new wchar_t[MAX_PATH+1];
mbstowcs_s(NULL, wcstring, MAX_PATH, FilePath, _TRUNCATE);
res=MessageBoxLangArg(DXW_STRING_DELENTRY, DXW_STRING_WARNING, MB_YESNO | MB_ICONQUESTION, wcstring);
if(res!=IDYES) return;
listctrl.DeleteItem(i);
for(; i < MAXTARGETS - 1; i ++) {
@ -1324,8 +1313,7 @@ void CDxwndhostView::OnClearAllLogs()
CString FilePath;
HRESULT res;
res=MessageBoxEx(0, "Clear ALL logs?",
"Warning", MB_YESNO | MB_ICONQUESTION, NULL);
res=MessageBoxLang(DXW_STRING_CLEARALL, DXW_STRING_WARNING, MB_YESNO | MB_ICONQUESTION);
if(res!=IDYES) return;
for(i = 0; i < MAXTARGETS; i ++) {
@ -1419,12 +1407,12 @@ void CDxwndhostView::OnGoToTrayIcon()
m_StartToTray ? NULL : "DxWnd DirectDraw windowizer", // NULL inhibits the Tray banner
"DxWnd",
NIIF_INFO, 10)){
MessageBox(0, "SystemTray.Create failed", MB_OK);
MessageBoxLang(DXW_STRING_TRAYFAIL, DXW_STRING_ERROR, MB_OK);
return;
}
IconId=(menu->GetMenuState(ID_HOOK_START, MF_BYCOMMAND)==MF_CHECKED)?IDI_DXWAIT:IDI_DXIDLE;
if(!this->SystemTray.SetIcon(IconId)){
MessageBox(0, "SystemTray.LoadIcon failed", MB_OK);
MessageBoxLang(DXW_STRING_ICONFAIL, DXW_STRING_ERROR, MB_OK);
return;
}
StatusThread= CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)TrayIconUpdate, (LPVOID)&this->SystemTray, 0, &dwThrdId);
@ -1438,11 +1426,8 @@ void CDxwndhostView::OnGoToTrayIcon()
void CDxwndhostView::OnSaveFile()
{
if (this->isUpdated)
if (MessageBoxEx(0,
"Task list has changed.\n"
"Do you want to save it?",
"Warning", MB_YESNO | MB_ICONQUESTION, NULL)==IDYES)
this->SaveConfigFile();
if (MessageBoxLang(DXW_STRING_SAVELIST, DXW_STRING_WARNING, MB_YESNO | MB_ICONQUESTION)==IDYES)
this->SaveConfigFile();
}
void CDxwndhostView::OnTrayRestore()
@ -1598,6 +1583,7 @@ DWORD WINAPI StartDebug(void *p)
switch(debug_event.dwDebugEventCode){
case EXIT_PROCESS_DEBUG_EVENT:
if(step){
// DXW_STRING_STEPPING
xpi=(EXIT_PROCESS_DEBUG_INFO *)&debug_event.u;
sprintf(DebugMessage, "EXIT PROCESS RetCode=%x", xpi->dwExitCode);
res=MessageBoxEx(0, DebugMessage, "Continue stepping?", MB_YESNO | MB_ICONQUESTION, NULL);
@ -1610,7 +1596,7 @@ DWORD WINAPI StartDebug(void *p)
// ref: problems in setting default exception handler in Tomb Raider IV demo
if(ThInfo->TM->flags & HANDLEEXCEPTIONS) {
Sleep(500);
MessageBoxEx(0, "Wait for exception handler ...\nPress OK button", "Pause", MB_OK, NULL);
MessageBoxLang(DXW_STRING_EXCEPTION, DXW_STRING_WAIT, MB_OK);
}
if(step){
pi=(PROCESS_INFORMATION *)&debug_event.u;
@ -1621,6 +1607,7 @@ DWORD WINAPI StartDebug(void *p)
}
GetFullPathName("dxwnd.dll", MAX_PATH, path, NULL);
if(!Inject(pinfo.dwProcessId, path)){
// DXW_STRING_INJECTION
sprintf(DebugMessage,"Injection error: pid=%x dll=%s", pinfo.dwProcessId, path);
MessageBoxEx(0, DebugMessage, "Injection", MB_ICONEXCLAMATION, NULL);
}
@ -1718,29 +1705,29 @@ void SwitchToColorDepth(int bpp)
{
DEVMODE CurrentDevMode;
BOOL res;
char MsgBuf[256+1];
EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &CurrentDevMode);
sprintf(MsgBuf, "ChangeDisplaySettings: color depth %d -> %d BPP\n", CurrentDevMode.dmBitsPerPel, bpp);
if(MessageBoxEx(0, MsgBuf, "Warning", MB_OKCANCEL | MB_ICONQUESTION, NULL)!=IDOK) return;
if(MessageBoxLangArg(DXW_STRING_NEWCOLOR, DXW_STRING_WARNING, MB_OKCANCEL | MB_ICONQUESTION, CurrentDevMode.dmBitsPerPel, bpp)!=IDOK)
return;
//OutTraceDW("ChangeDisplaySettings: CURRENT wxh=(%dx%d) BitsPerPel=%d -> 16\n",
// CurrentDevMode.dmPelsWidth, CurrentDevMode.dmPelsHeight, CurrentDevMode.dmBitsPerPel);
CurrentDevMode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
CurrentDevMode.dmBitsPerPel = bpp;
res=ChangeDisplaySettings(&CurrentDevMode, CDS_UPDATEREGISTRY);
if(res!=DISP_CHANGE_SUCCESSFUL) {
char *err;
WCHAR *err;
switch(res){
case DISP_CHANGE_BADDUALVIEW: err="BADDUALVIEW"; break;
case DISP_CHANGE_BADFLAGS: err="BADFLAGS"; break;
case DISP_CHANGE_BADMODE: err="BADMODE"; break;
case DISP_CHANGE_BADPARAM: err="BADPARAM"; break;
case DISP_CHANGE_FAILED: err="FAILED"; break;
case DISP_CHANGE_NOTUPDATED: err="NOTUPDATED"; break;
case DISP_CHANGE_RESTART: err="RESTART"; break;
default: err="???"; break;
case DISP_CHANGE_BADDUALVIEW: err=L"BADDUALVIEW"; break;
case DISP_CHANGE_BADFLAGS: err=L"BADFLAGS"; break;
case DISP_CHANGE_BADMODE: err=L"BADMODE"; break;
case DISP_CHANGE_BADPARAM: err=L"BADPARAM"; break;
case DISP_CHANGE_FAILED: err=L"FAILED"; break;
case DISP_CHANGE_NOTUPDATED: err=L"NOTUPDATED"; break;
case DISP_CHANGE_RESTART: err=L"RESTART"; break;
default: err=L"???"; break;
}
sprintf(MsgBuf, "ChangeDisplaySettings ERROR res=%s err=%d\n", err, GetLastError());
MessageBoxEx(0, MsgBuf, "Error", MB_OKCANCEL | MB_ICONQUESTION, NULL);
MessageBoxLangArg(DXW_STRING_ERRCOLOR, DXW_STRING_ERROR, MB_OK | MB_ICONEXCLAMATION, err, GetLastError());
}
}

Binary file not shown.

Before

(image error) Size: 246 B

Binary file not shown.

Before

(image error) Size: 3.1 KiB

Binary file not shown.

@ -0,0 +1,10 @@
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level='asInvoker' uiAccess='false' />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

Binary file not shown.

1
locale/cn/Release/mt.dep Normal file

@ -0,0 +1 @@
Manifest resource last updated at 17:52:51.01 on 22/06/2014

BIN
locale/cn/Resources_Ch.suo Normal file

Binary file not shown.

BIN
locale/cn/Resources_Cn.aps Normal file

Binary file not shown.

BIN
locale/cn/Resources_Cn.ncb Normal file

Binary file not shown.

BIN
locale/cn/Resources_Cn.rc Normal file

Binary file not shown.

@ -0,0 +1,20 @@

Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Resources_CN", "Resources_CN.vcproj", "{F8D07BBB-A04B-4C0C-8AF8-7F839A152456}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{F8D07BBB-A04B-4C0C-8AF8-7F839A152456}.Debug|Win32.ActiveCfg = Debug|Win32
{F8D07BBB-A04B-4C0C-8AF8-7F839A152456}.Debug|Win32.Build.0 = Debug|Win32
{F8D07BBB-A04B-4C0C-8AF8-7F839A152456}.Release|Win32.ActiveCfg = Release|Win32
{F8D07BBB-A04B-4C0C-8AF8-7F839A152456}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

BIN
locale/cn/Resources_Cn.suo Normal file

Binary file not shown.

@ -0,0 +1,259 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="Resources_CN"
ProjectGUID="{F8D07BBB-A04B-4C0C-8AF8-7F839A152456}"
RootNamespace="Resources_CN"
Keyword="Win32Proj"
TargetFrameworkVersion="196613"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="..\..\$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="2"
CharacterSet="1"
EnableManagedIncrementalBuild="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
AdditionalIncludeDirectories="..\..\host"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="2"
ResourceOnlyDLL="true"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="..\..\$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="2"
CharacterSet="1"
WholeProgramOptimization="1"
EnableManagedIncrementalBuild="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
EnableIntrinsicFunctions="true"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
AdditionalIncludeDirectories="..\..\host"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
ResourceOnlyDLL="true"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\Resources_CN.rc"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\resource.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
<File
RelativePath=".\res\bigicons.bmp"
>
</File>
<File
RelativePath=".\res\dxw1.ico"
>
</File>
<File
RelativePath=".\res\dxw2.ico"
>
</File>
<File
RelativePath=".\res\dxw5.ico"
>
</File>
<File
RelativePath=".\res\gho.ico"
>
</File>
<File
RelativePath=".\res\palette24.bmp"
>
</File>
<File
RelativePath=".\res\run+33.ico"
>
</File>
<File
RelativePath=".\res\run+66.ico"
>
</File>
<File
RelativePath=".\res\run-0.ico"
>
</File>
<File
RelativePath=".\res\run-180.ico"
>
</File>
<File
RelativePath=".\res\run-33.ico"
>
</File>
<File
RelativePath=".\res\run-66.ico"
>
</File>
<File
RelativePath=".\res\run-90.ico"
>
</File>
<File
RelativePath=".\res\smallicons.bmp"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

BIN
release/Resources_CN.pdb Normal file

Binary file not shown.