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:
parent
afbcaf5324
commit
320d894ae9
Include
build
Resources_CN.dlldxwnd.cn.batdxwnd.cn.lnkdxwnd.dlldxwnd.exedxwnd.ini
exports
Actua Soccer 3.dxwBattle Realms.dxwDarkened Skye.dxwDiablo.dxwDungeon Keeper II.dxwHollywood Monsters.dxwInternational Football 2000.dxwKohan II Kings of War.dxwMagic & Mayhem.dxwO.R.B. Offword Rescue Base.dxwRailroad Tycoon II.dxwRollcage 2 (D3D).dxwTotal Annihilation Kingdoms.dxwdxwnd.ini
readme-relnotes.txtdll
ddraw.cppdinput.cppdxhelper.cppdxhelper.hdxwcore.cppdxwnd.apsdxwnd.cppdxwnd.vs2008.suokernel32.cppsyslibs.h
host
CppUACSelfElevation.cppMainFrm.cppMessageBox.cppResource.hTabCompat.cppTargetDlg.cppTargetDlg.hdxwnd.inidxwndhost.apsdxwndhost.cppdxwndhost.rcdxwndhost.rc2.txtdxwndhost.vs2008.slndxwndhost.vs2008.suodxwndhost.vs2008.vcprojdxwndhostView.cpppalette.bmp
res
locale/cn
Release
Resources_Ch.suoResources_Cn.apsResources_Cn.ncbResources_Cn.rcResources_Cn.slnResources_Cn.suoResources_Cn.vcprojrelease
@ -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
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
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
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;
|
||||
|
BIN
dll/dxwnd.aps
BIN
dll/dxwnd.aps
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
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);
|
||||
}
|
BIN
host/Resource.h
BIN
host/Resource.h
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
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());
|
||||
}
|
||||
}
|
||||
|
||||
|
BIN
host/palette.bmp
BIN
host/palette.bmp
Binary file not shown.
Before ![]() (image error) Size: 246 B |
Binary file not shown.
Before ![]() (image error) Size: 3.1 KiB |
BIN
locale/cn/Release/BuildLog.htm
Normal file
BIN
locale/cn/Release/BuildLog.htm
Normal file
Binary file not shown.
10
locale/cn/Release/Resources_CN.dll.intermediate.manifest
Normal file
10
locale/cn/Release/Resources_CN.dll.intermediate.manifest
Normal file
@ -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>
|
BIN
locale/cn/Release/Resources_CN.res
Normal file
BIN
locale/cn/Release/Resources_CN.res
Normal file
Binary file not shown.
1
locale/cn/Release/mt.dep
Normal file
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
BIN
locale/cn/Resources_Ch.suo
Normal file
Binary file not shown.
BIN
locale/cn/Resources_Cn.aps
Normal file
BIN
locale/cn/Resources_Cn.aps
Normal file
Binary file not shown.
BIN
locale/cn/Resources_Cn.ncb
Normal file
BIN
locale/cn/Resources_Cn.ncb
Normal file
Binary file not shown.
BIN
locale/cn/Resources_Cn.rc
Normal file
BIN
locale/cn/Resources_Cn.rc
Normal file
Binary file not shown.
20
locale/cn/Resources_Cn.sln
Normal file
20
locale/cn/Resources_Cn.sln
Normal file
@ -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
BIN
locale/cn/Resources_Cn.suo
Normal file
Binary file not shown.
259
locale/cn/Resources_Cn.vcproj
Normal file
259
locale/cn/Resources_Cn.vcproj
Normal file
@ -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
BIN
release/Resources_CN.pdb
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user