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
@ -144,6 +144,7 @@
|
|||||||
#define HOTPATCHALWAYS 0x10000000 // Force hot patching to every call
|
#define HOTPATCHALWAYS 0x10000000 // Force hot patching to every call
|
||||||
#define NOD3DRESET 0x20000000 // Disables D3D8/9 D3DDevice::Reset method
|
#define NOD3DRESET 0x20000000 // Disables D3D8/9 D3DDevice::Reset method
|
||||||
#define OVERRIDEREGISTRY 0x40000000 // same as EMULATEREGISTRY, but fake keys takeprecedence
|
#define OVERRIDEREGISTRY 0x40000000 // same as EMULATEREGISTRY, but fake keys takeprecedence
|
||||||
|
#define HIDECDROMEMPTY 0x80000000 // hide empty CDROM drivers
|
||||||
|
|
||||||
// logging Tflags DWORD:
|
// logging Tflags DWORD:
|
||||||
#define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general
|
#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
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:0552e42ae11b81672959e1b316db09614269737d6e12393f0bd473b140ce6d50
|
oid sha256:512069ae0535b5c459f092824da7d559e7950574c161c31657fdcbc739a29f93
|
||||||
size 487424
|
size 489472
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:d25ed7d43c0672c5ce69054896578802218de233bbc82f22b392c3406e56915f
|
oid sha256:c06874fa4dbb6cee68cbee26cbb5510526ed30c895494280e8d365a0fdb7ce56
|
||||||
size 540160
|
size 547328
|
||||||
|
@ -3,3 +3,35 @@ timetoggle=0x72
|
|||||||
altf4=0x73
|
altf4=0x73
|
||||||
timeslow=0x74
|
timeslow=0x74
|
||||||
timefast=0x75
|
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=
|
opengllib0=
|
||||||
ver0=0
|
ver0=0
|
||||||
coord0=0
|
coord0=0
|
||||||
flag0=939524146
|
flag0=671088674
|
||||||
flagg0=1207959552
|
flagg0=1207959552
|
||||||
flagh0=16
|
flagh0=20
|
||||||
flagi0=138412036
|
flagi0=4
|
||||||
tflag0=0
|
tflag0=0
|
||||||
initx0=0
|
initx0=0
|
||||||
inity0=0
|
inity0=0
|
||||||
@ -22,6 +22,3 @@ sizx0=800
|
|||||||
sizy0=600
|
sizy0=600
|
||||||
maxfps0=0
|
maxfps0=0
|
||||||
initts0=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
|
flag0=679493664
|
||||||
flagg0=1207959552
|
flagg0=1207959552
|
||||||
flagh0=65556
|
flagh0=65556
|
||||||
flagi0=69206020
|
flagi0=4
|
||||||
tflag0=0
|
tflag0=0
|
||||||
initx0=0
|
initx0=0
|
||||||
inity0=0
|
inity0=0
|
||||||
@ -24,4 +24,3 @@ maxfps0=0
|
|||||||
initts0=0
|
initts0=0
|
||||||
winver0=0
|
winver0=0
|
||||||
maxres0=-1
|
maxres0=-1
|
||||||
launchpath0=
|
|
||||||
|
@ -6,9 +6,9 @@ opengllib0=
|
|||||||
ver0=1
|
ver0=1
|
||||||
coord0=0
|
coord0=0
|
||||||
flag0=138428450
|
flag0=138428450
|
||||||
flagg0=1242562576
|
flagg0=1108344848
|
||||||
flagh0=20
|
flagh0=20
|
||||||
flagi0=4194304
|
flagi0=0
|
||||||
tflag0=0
|
tflag0=0
|
||||||
initx0=0
|
initx0=0
|
||||||
inity0=0
|
inity0=0
|
||||||
@ -22,6 +22,3 @@ sizx0=640
|
|||||||
sizy0=480
|
sizy0=480
|
||||||
maxfps0=0
|
maxfps0=0
|
||||||
initts0=0
|
initts0=0
|
||||||
launchpath0=
|
|
||||||
winver0=0
|
|
||||||
maxres0=0
|
|
||||||
|
@ -6,9 +6,9 @@ opengllib0=
|
|||||||
ver0=0
|
ver0=0
|
||||||
coord0=0
|
coord0=0
|
||||||
flag0=16418
|
flag0=16418
|
||||||
flagg0=708837376
|
flagg0=574619648
|
||||||
flagh0=20
|
flagh0=20
|
||||||
flagi0=4194304
|
flagi0=0
|
||||||
tflag0=263
|
tflag0=263
|
||||||
initx0=0
|
initx0=0
|
||||||
inity0=0
|
inity0=0
|
||||||
@ -22,6 +22,3 @@ sizx0=800
|
|||||||
sizy0=600
|
sizy0=600
|
||||||
maxfps0=0
|
maxfps0=0
|
||||||
initts0=0
|
initts0=0
|
||||||
launchpath0=
|
|
||||||
winver0=0
|
|
||||||
maxres0=0
|
|
||||||
|
@ -8,7 +8,7 @@ coord0=0
|
|||||||
flag0=134217762
|
flag0=134217762
|
||||||
flagg0=1209008384
|
flagg0=1209008384
|
||||||
flagh0=20
|
flagh0=20
|
||||||
flagi0=4194308
|
flagi0=4
|
||||||
tflag0=64
|
tflag0=64
|
||||||
initx0=0
|
initx0=0
|
||||||
inity0=0
|
inity0=0
|
||||||
@ -24,4 +24,3 @@ maxfps0=0
|
|||||||
initts0=0
|
initts0=0
|
||||||
winver0=0
|
winver0=0
|
||||||
maxres0=-1
|
maxres0=-1
|
||||||
launchpath0=
|
|
||||||
|
@ -8,7 +8,7 @@ coord0=0
|
|||||||
flag0=150994976
|
flag0=150994976
|
||||||
flagg0=1207959552
|
flagg0=1207959552
|
||||||
flagh0=20
|
flagh0=20
|
||||||
flagi0=4194308
|
flagi0=4
|
||||||
tflag0=259
|
tflag0=259
|
||||||
initx0=0
|
initx0=0
|
||||||
inity0=0
|
inity0=0
|
||||||
@ -22,6 +22,3 @@ sizx0=800
|
|||||||
sizy0=600
|
sizy0=600
|
||||||
maxfps0=0
|
maxfps0=0
|
||||||
initts0=0
|
initts0=0
|
||||||
launchpath0=D:\Games\International Football 2000\MSIF2000.EXE
|
|
||||||
winver0=0
|
|
||||||
maxres0=0
|
|
||||||
|
@ -8,8 +8,8 @@ coord0=0
|
|||||||
flag0=134217762
|
flag0=134217762
|
||||||
flagg0=1207959552
|
flagg0=1207959552
|
||||||
flagh0=20
|
flagh0=20
|
||||||
flagi0=4194308
|
flagi0=1028
|
||||||
tflag0=0
|
tflag0=6163
|
||||||
initx0=0
|
initx0=0
|
||||||
inity0=0
|
inity0=0
|
||||||
minx0=0
|
minx0=0
|
||||||
@ -22,6 +22,3 @@ sizx0=800
|
|||||||
sizy0=600
|
sizy0=600
|
||||||
maxfps0=0
|
maxfps0=0
|
||||||
initts0=0
|
initts0=0
|
||||||
launchpath0=
|
|
||||||
winver0=0
|
|
||||||
maxres0=0
|
|
||||||
|
@ -6,9 +6,9 @@ opengllib0=
|
|||||||
ver0=0
|
ver0=0
|
||||||
coord0=0
|
coord0=0
|
||||||
flag0=138428450
|
flag0=138428450
|
||||||
flagg0=201326592
|
flagg0=1275068416
|
||||||
flagh0=20
|
flagh0=8388628
|
||||||
flagi0=4194304
|
flagi0=0
|
||||||
tflag0=259
|
tflag0=259
|
||||||
initx0=0
|
initx0=0
|
||||||
inity0=0
|
inity0=0
|
||||||
@ -22,6 +22,3 @@ sizx0=800
|
|||||||
sizy0=600
|
sizy0=600
|
||||||
maxfps0=0
|
maxfps0=0
|
||||||
initts0=0
|
initts0=0
|
||||||
launchpath0=
|
|
||||||
winver0=0
|
|
||||||
maxres0=0
|
|
||||||
|
@ -4,11 +4,11 @@ path0=D:\Games\O.R.B\orb.exe
|
|||||||
module0=
|
module0=
|
||||||
opengllib0=
|
opengllib0=
|
||||||
ver0=0
|
ver0=0
|
||||||
coord0=0
|
coord0=2
|
||||||
flag0=134234144
|
flag0=134234144
|
||||||
flagg0=1207959552
|
flagg0=1207959568
|
||||||
flagh0=20
|
flagh0=20
|
||||||
flagi0=4194308
|
flagi0=4
|
||||||
tflag0=6163
|
tflag0=6163
|
||||||
initx0=0
|
initx0=0
|
||||||
inity0=0
|
inity0=0
|
||||||
@ -24,4 +24,3 @@ maxfps0=0
|
|||||||
initts0=0
|
initts0=0
|
||||||
winver0=0
|
winver0=0
|
||||||
maxres0=-1
|
maxres0=-1
|
||||||
launchpath0=
|
|
||||||
|
@ -5,10 +5,10 @@ module0=
|
|||||||
opengllib0=
|
opengllib0=
|
||||||
ver0=0
|
ver0=0
|
||||||
coord0=0
|
coord0=0
|
||||||
flag0=134219810
|
flag0=2082
|
||||||
flagg0=135266304
|
flagg0=143654912
|
||||||
flagh0=16
|
flagh0=16
|
||||||
flagi0=4194304
|
flagi0=0
|
||||||
tflag0=0
|
tflag0=0
|
||||||
initx0=0
|
initx0=0
|
||||||
inity0=0
|
inity0=0
|
||||||
@ -22,6 +22,3 @@ sizx0=800
|
|||||||
sizy0=600
|
sizy0=600
|
||||||
maxfps0=0
|
maxfps0=0
|
||||||
initts0=0
|
initts0=0
|
||||||
launchpath0=
|
|
||||||
winver0=0
|
|
||||||
maxres0=0
|
|
||||||
|
@ -10,7 +10,7 @@ flag0=134217760
|
|||||||
flagg0=134217728
|
flagg0=134217728
|
||||||
flagh0=20
|
flagh0=20
|
||||||
flagi0=138412036
|
flagi0=138412036
|
||||||
tflag0=0
|
tflag0=6147
|
||||||
initx0=0
|
initx0=0
|
||||||
inity0=0
|
inity0=0
|
||||||
minx0=0
|
minx0=0
|
||||||
|
@ -5,10 +5,10 @@ module0=
|
|||||||
opengllib0=
|
opengllib0=
|
||||||
ver0=0
|
ver0=0
|
||||||
coord0=0
|
coord0=0
|
||||||
flag0=671105058
|
flag0=134234146
|
||||||
flagg0=1207959568
|
flagg0=1073741840
|
||||||
flagh0=16
|
flagh0=16
|
||||||
flagi0=4194304
|
flagi0=0
|
||||||
tflag0=0
|
tflag0=0
|
||||||
initx0=0
|
initx0=0
|
||||||
inity0=0
|
inity0=0
|
||||||
@ -22,6 +22,3 @@ sizx0=800
|
|||||||
sizy0=600
|
sizy0=600
|
||||||
maxfps0=0
|
maxfps0=0
|
||||||
initts0=0
|
initts0=0
|
||||||
launchpath0=
|
|
||||||
winver0=0
|
|
||||||
maxres0=0
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
[window]
|
[window]
|
||||||
posx=1393
|
posx=1289
|
||||||
posy=159
|
posy=149
|
||||||
sizx=455
|
sizx=465
|
||||||
sizy=708
|
sizy=382
|
||||||
|
@ -525,3 +525,10 @@ handling of DWL_DLGPROC message
|
|||||||
|
|
||||||
v2.02.79
|
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((dwflags & DDFLIP_WAIT) || (dxw.dwFlags1 & SAVELOAD)) lpPrimaryDD->WaitForVerticalBlank(DDWAITVB_BLOCKEND , 0);
|
||||||
|
|
||||||
if(dxw.dwFlags4 & NOFLIPEMULATION){
|
if(dxw.dwFlags4 & NOFLIPEMULATION){
|
||||||
|
HRESULT res2;
|
||||||
// create a temporary working surface
|
// create a temporary working surface
|
||||||
memset(&ddsd, 0, sizeof(ddsd));
|
memset(&ddsd, 0, sizeof(ddsd));
|
||||||
ddsd.dwSize = SurfaceDescrSize(lpdds);
|
ddsd.dwSize = SurfaceDescrSize(lpdds);
|
||||||
|
// v2.02.80: the BackBuffer may not exist? see "HellCopter"
|
||||||
|
if(lpDDSBack){
|
||||||
(*pGetSurfaceDescMethod(lpdds))((LPDIRECTDRAWSURFACE2)lpDDSBack, &ddsd);
|
(*pGetSurfaceDescMethod(lpdds))((LPDIRECTDRAWSURFACE2)lpDDSBack, &ddsd);
|
||||||
ddsd.dwFlags &= ~DDSD_PITCH;
|
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__);
|
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);
|
//OutTrace("DEBUG: copied surface size=(%dx%d)\n", ddsd.dwWidth, ddsd.dwHeight);
|
||||||
// copy front buffer
|
// copy front buffer
|
||||||
if(dxw.dwFlags1 & EMULATESURFACE){
|
if(dxw.dwFlags1 & EMULATESURFACE){
|
||||||
// in emulated mode, the primary surface is virtual and you can pick it all
|
// in emulated mode, the primary surface is virtual and you can pick it all
|
||||||
// needed for "Gruntz"
|
// needed for "Gruntz"
|
||||||
res= (*pBlt)(lpddsTmp, NULL, lpdds, NULL, DDBLT_WAIT, NULL);
|
res2= (*pBlt)(lpddsTmp, NULL, lpdds, NULL, DDBLT_WAIT, NULL);
|
||||||
if(res) BlitError(res, NULL, NULL, __LINE__);
|
if(res2) BlitError(res2, NULL, NULL, __LINE__);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// in no-emulated mode, the primary surface is the whole screen, so you have to pick...
|
// 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();
|
clip=dxw.GetScreenRect();
|
||||||
else
|
else
|
||||||
clip=dxw.GetUnmappedScreenRect();
|
clip=dxw.GetUnmappedScreenRect();
|
||||||
res= (*pBlt)(lpddsTmp, NULL, lpdds, &clip, DDBLT_WAIT, NULL);
|
res2= (*pBlt)(lpddsTmp, NULL, lpdds, &clip, DDBLT_WAIT, NULL);
|
||||||
if(res) BlitError(res, &clip, NULL, __LINE__);
|
if(res2) BlitError(res2, &clip, NULL, __LINE__);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3404,9 +3419,10 @@ HRESULT WINAPI extFlip(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWSURFACE lpddssrc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(dxw.dwFlags4 & NOFLIPEMULATION){
|
if(dxw.dwFlags4 & NOFLIPEMULATION){
|
||||||
|
HRESULT res2;
|
||||||
// restore flipped backbuffer and delete temporary surface
|
// restore flipped backbuffer and delete temporary surface
|
||||||
res= (*pBlt)(lpddssrc, NULL, lpddsTmp, NULL, DDBLT_WAIT, NULL);
|
res2= (*pBlt)(lpddssrc, NULL, lpddsTmp, NULL, DDBLT_WAIT, NULL);
|
||||||
if(res) OutTraceE("Blt: ERROR %x(%s) at %d", res, ExplainDDError(res), __LINE__);
|
if(res2) OutTraceE("Blt: ERROR %x(%s) at %d\n", res2, ExplainDDError(res2), __LINE__);
|
||||||
(*pReleaseS)(lpddsTmp);
|
(*pReleaseS)(lpddsTmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4114,6 +4130,7 @@ HRESULT WINAPI extEnumDisplayModes(EnumDisplayModes1_Type pEnumDisplayModes, LPD
|
|||||||
EmuDesc.ddpfPixelFormat.dwFlags=DDPF_RGB;
|
EmuDesc.ddpfPixelFormat.dwFlags=DDPF_RGB;
|
||||||
for (DepthIdx=0; SupportedDepths[DepthIdx]; DepthIdx++) {
|
for (DepthIdx=0; SupportedDepths[DepthIdx]; DepthIdx++) {
|
||||||
EmuDesc.ddpfPixelFormat.dwRGBBitCount=SupportedDepths[DepthIdx];
|
EmuDesc.ddpfPixelFormat.dwRGBBitCount=SupportedDepths[DepthIdx];
|
||||||
|
EmuDesc.lPitch=SupportedRes[ResIdx].w * SupportedDepths[DepthIdx] / 8;
|
||||||
FixPixelFormat(EmuDesc.ddpfPixelFormat.dwRGBBitCount, &(EmuDesc.ddpfPixelFormat));
|
FixPixelFormat(EmuDesc.ddpfPixelFormat.dwRGBBitCount, &(EmuDesc.ddpfPixelFormat));
|
||||||
res=(*cb)((LPDDSURFACEDESC)&EmuDesc, lpContext);
|
res=(*cb)((LPDDSURFACEDESC)&EmuDesc, lpContext);
|
||||||
OutTraceDW("EnumDisplayModes(D): proposed depth[%d]=%d size[%d]=(%d,%d) res=%x\n",
|
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);
|
res = (*pGetDeviceState)(lpdid, cbdata, lpvdata);
|
||||||
if(res) return res;
|
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);
|
GetMousePosition((int *)&p.x, (int *)&p.y);
|
||||||
lpvdata->lX = p.x;
|
lpvdata->lX = p.x;
|
||||||
lpvdata->lY = p.y;
|
lpvdata->lY = p.y;
|
||||||
@ -304,16 +306,65 @@ HRESULT WINAPI extGetDeviceState(LPDIRECTINPUTDEVICE lpdid, DWORD cbdata, LPDIMO
|
|||||||
lpvdata->lZ = 0;
|
lpvdata->lZ = 0;
|
||||||
*(DWORD *)lpvdata->rgbButtons = 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);
|
if(cbdata == 256 && !dxw.bActive) ZeroMemory(lpvdata, 256);
|
||||||
return 0;
|
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)
|
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_ABSAXIS) dxw.bDInputAbs = 1;
|
||||||
if(lpdf->dwFlags & DIDF_RELAXIS) dxw.bDInputAbs = 0;
|
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)
|
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();
|
if(dxw.IsRealDesktop(hwnd)) hwnd=dxw.GethWnd();
|
||||||
dwflags = DISCL_NONEXCLUSIVE | DISCL_BACKGROUND;
|
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->dwSize, p, dev->guidInstance.Data1, dev->guidInstance.Data2, dev->guidInstance.Data3, dev->guidInstance.Data4,
|
||||||
dev->dwDevType, dev->tszInstanceName, dev->tszProductName);
|
dev->dwDevType, dev->tszInstanceName, dev->tszProductName);
|
||||||
|
|
||||||
|
#if 0
|
||||||
if(0){
|
if(0){
|
||||||
DIDEVICEINSTANCEW fixdev;
|
DIDEVICEINSTANCEW fixdev;
|
||||||
fixdev.dwSize=sizeof(DIDEVICEINSTANCEW);
|
fixdev.dwSize=sizeof(DIDEVICEINSTANCEW);
|
||||||
@ -383,13 +436,9 @@ HRESULT WINAPI extDeviceProxy(LPCDIDEVICEINSTANCE dev, LPVOID arg)
|
|||||||
OutTraceDW("EnumDevices: CALLBACK ret=%x\n", res);
|
OutTraceDW("EnumDevices: CALLBACK ret=%x\n", res);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
__try{
|
res = (*(((CallbackArg *)arg)->cb))(dev, ((CallbackArg *)arg)->arg);
|
||||||
res = ((((CallbackArg *)arg)->cb))(dev, ((CallbackArg *)arg)->arg);
|
|
||||||
}
|
|
||||||
__except(EXCEPTION_EXECUTE_HANDLER){
|
|
||||||
res=TRUE;
|
|
||||||
}
|
|
||||||
OutTraceDW("EnumDevices: CALLBACK ret=%x\n", res);
|
OutTraceDW("EnumDevices: CALLBACK ret=%x\n", res);
|
||||||
return 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);
|
OutTraceDW("EnumDevices(I): di=%x DevType=%x CallBack=%x Ref=%x Flags=%x\n", lpdi, dwDevType, lpCallback, pvRef, dwFlags);
|
||||||
Arg.cb= lpCallback;
|
Arg.cb= lpCallback;
|
||||||
Arg.arg=pvRef;
|
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);
|
//res=(*pDIEnumDevices)( lpdi, dwDevType, lpCallback, pvRef, dwFlags);
|
||||||
OutTraceDW("EnumDevices(I): res=%x\n", res);
|
OutTraceDW("EnumDevices(I): res=%x\n", res);
|
||||||
return res;
|
return res;
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <ddraw.h>
|
#include <ddraw.h>
|
||||||
#include <d3d.h>
|
#include <d3d.h>
|
||||||
|
#include <dinput.h>
|
||||||
#include "dxwnd.h"
|
#include "dxwnd.h"
|
||||||
|
|
||||||
|
|
||||||
@ -1716,3 +1717,18 @@ char *ExplainChangeDisplaySettingsFlags(DWORD c)
|
|||||||
return(eb);
|
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 *ExplainRenderstateValue(DWORD);
|
||||||
extern char *ExplainWfPFlags(DWORD);
|
extern char *ExplainWfPFlags(DWORD);
|
||||||
extern char *ExplainChangeDisplaySettingsFlags(DWORD);
|
extern char *ExplainChangeDisplaySettingsFlags(DWORD);
|
||||||
|
extern char *ExplainDICooperativeFlags(DWORD);
|
||||||
|
@ -1143,7 +1143,7 @@ void dxwCore::ShowFPS(HDC xdc)
|
|||||||
static int x, y;
|
static int x, y;
|
||||||
static DWORD color;
|
static DWORD color;
|
||||||
|
|
||||||
if((*pGetTickCount)()-dwTimer > 4000){
|
if((*pGetTickCount)()-dwTimer > 6000){
|
||||||
RECT rect;
|
RECT rect;
|
||||||
dwTimer = (*pGetTickCount)();
|
dwTimer = (*pGetTickCount)();
|
||||||
corner = dwTimer % 4;
|
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 "dxwnd.h"
|
||||||
#include "dxwcore.hpp"
|
#include "dxwcore.hpp"
|
||||||
|
|
||||||
#define VERSION "2.02.79"
|
#define VERSION "2.02.80"
|
||||||
|
|
||||||
#define DDTHREADLOCK 1
|
#define DDTHREADLOCK 1
|
||||||
|
|
||||||
|
Binary file not shown.
@ -5,6 +5,7 @@
|
|||||||
#include "dxhelper.h"
|
#include "dxhelper.h"
|
||||||
#include "hddraw.h"
|
#include "hddraw.h"
|
||||||
#include "ddproxy.h"
|
#include "ddproxy.h"
|
||||||
|
#include "stdio.h"
|
||||||
|
|
||||||
//#undef IsTraceDW
|
//#undef IsTraceDW
|
||||||
//#define IsTraceDW TRUE
|
//#define IsTraceDW TRUE
|
||||||
@ -17,6 +18,7 @@ static HookEntry_Type Hooks[]={
|
|||||||
{HOOK_IAT_CANDIDATE, "LoadLibraryW", (FARPROC)LoadLibraryW, (FARPROC *)&pLoadLibraryW, (FARPROC)extLoadLibraryW},
|
{HOOK_IAT_CANDIDATE, "LoadLibraryW", (FARPROC)LoadLibraryW, (FARPROC *)&pLoadLibraryW, (FARPROC)extLoadLibraryW},
|
||||||
{HOOK_IAT_CANDIDATE, "LoadLibraryExW", (FARPROC)LoadLibraryExW, (FARPROC *)&pLoadLibraryExW, (FARPROC)extLoadLibraryExW},
|
{HOOK_IAT_CANDIDATE, "LoadLibraryExW", (FARPROC)LoadLibraryExW, (FARPROC *)&pLoadLibraryExW, (FARPROC)extLoadLibraryExW},
|
||||||
{HOOK_IAT_CANDIDATE, "GetDriveTypeA", (FARPROC)NULL, (FARPROC *)&pGetDriveType, (FARPROC)extGetDriveType},
|
{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
|
{HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -29,8 +31,8 @@ static HookEntry_Type FixIOHooks[]={
|
|||||||
};
|
};
|
||||||
|
|
||||||
static HookEntry_Type LimitHooks[]={
|
static HookEntry_Type LimitHooks[]={
|
||||||
{HOOK_IAT_CANDIDATE, "GetDiskFreeSpaceA", (FARPROC)GetDiskFreeSpaceA, (FARPROC *)&pGetDiskFreeSpaceA, (FARPROC)extGetDiskFreeSpaceA},
|
{HOOK_HOT_CANDIDATE, "GetDiskFreeSpaceA", (FARPROC)GetDiskFreeSpaceA, (FARPROC *)&pGetDiskFreeSpaceA, (FARPROC)extGetDiskFreeSpaceA},
|
||||||
{HOOK_IAT_CANDIDATE, "GlobalMemoryStatus", (FARPROC)GlobalMemoryStatus, (FARPROC *)&pGlobalMemoryStatus, (FARPROC)extGlobalMemoryStatus},
|
{HOOK_HOT_CANDIDATE, "GlobalMemoryStatus", (FARPROC)GlobalMemoryStatus, (FARPROC *)&pGlobalMemoryStatus, (FARPROC)extGlobalMemoryStatus},
|
||||||
{HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator
|
{HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -316,12 +318,9 @@ VOID WINAPI extSleep(DWORD dwMilliseconds)
|
|||||||
{
|
{
|
||||||
DWORD dwNewDelay;
|
DWORD dwNewDelay;
|
||||||
dwNewDelay=dwMilliseconds;
|
dwNewDelay=dwMilliseconds;
|
||||||
if (dwMilliseconds!=INFINITE && dwMilliseconds!=0){
|
if ((dwMilliseconds!=INFINITE) && (dwMilliseconds!=0)){
|
||||||
dwNewDelay = dxw.StretchTime(dwMilliseconds);
|
dwNewDelay = dxw.StretchTime(dwMilliseconds);
|
||||||
if (dwNewDelay==0){ // oh oh! troubles...
|
if (dwNewDelay==0) dwNewDelay=1; // minimum allowed...
|
||||||
if (dxw.TimeShift > 0) dwNewDelay=1; // minimum allowed...
|
|
||||||
else dwNewDelay = INFINITE-1; // maximum allowed !!!
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (IsDebug) OutTrace("Sleep: msec=%d->%d timeshift=%d\n", dwMilliseconds, dwNewDelay, dxw.TimeShift);
|
if (IsDebug) OutTrace("Sleep: msec=%d->%d timeshift=%d\n", dwMilliseconds, dwNewDelay, dxw.TimeShift);
|
||||||
(*pSleep)(dwNewDelay);
|
(*pSleep)(dwNewDelay);
|
||||||
@ -331,12 +330,9 @@ DWORD WINAPI extSleepEx(DWORD dwMilliseconds, BOOL bAlertable)
|
|||||||
{
|
{
|
||||||
DWORD dwNewDelay;
|
DWORD dwNewDelay;
|
||||||
dwNewDelay=dwMilliseconds;
|
dwNewDelay=dwMilliseconds;
|
||||||
if (dwMilliseconds!=INFINITE && dwMilliseconds!=0){
|
if ((dwMilliseconds!=INFINITE) && (dwMilliseconds!=0)){
|
||||||
dwNewDelay = dxw.StretchTime(dwMilliseconds);
|
dwNewDelay = dxw.StretchTime(dwMilliseconds);
|
||||||
if (dwNewDelay==0){ // oh oh! troubles...
|
if (dwNewDelay==0) dwNewDelay=1; // minimum allowed...
|
||||||
if (dxw.TimeShift > 0) dwNewDelay=1; // minimum allowed...
|
|
||||||
else dwNewDelay = INFINITE-1; // maximum allowed !!!
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (IsDebug) OutTrace("SleepEx: msec=%d->%d alertable=%x, timeshift=%d\n", dwMilliseconds, dwNewDelay, bAlertable, dxw.TimeShift);
|
if (IsDebug) OutTrace("SleepEx: msec=%d->%d alertable=%x, timeshift=%d\n", dwMilliseconds, dwNewDelay, bAlertable, dxw.TimeShift);
|
||||||
return (*pSleepEx)(dwNewDelay, bAlertable);
|
return (*pSleepEx)(dwNewDelay, bAlertable);
|
||||||
@ -611,9 +607,37 @@ UINT WINAPI extGetDriveType(LPCTSTR lpRootPathName)
|
|||||||
{
|
{
|
||||||
OutTraceDW("GetDriveType: path=\"%s\"\n", lpRootPathName);
|
OutTraceDW("GetDriveType: path=\"%s\"\n", lpRootPathName);
|
||||||
if (dxw.dwFlags3 & CDROMDRIVETYPE) return DRIVE_CDROM;
|
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);
|
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 WINAPI extReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped)
|
||||||
{
|
{
|
||||||
BOOL ret;
|
BOOL ret;
|
||||||
|
@ -99,6 +99,7 @@ typedef DWORD (WINAPI *GetObjectType_Type)(HGDIOBJ);
|
|||||||
// Kernel32.dll:
|
// Kernel32.dll:
|
||||||
typedef BOOL (WINAPI *GetDiskFreeSpaceA_Type)(LPCSTR, LPDWORD, LPDWORD, LPDWORD, LPDWORD);
|
typedef BOOL (WINAPI *GetDiskFreeSpaceA_Type)(LPCSTR, LPDWORD, LPDWORD, LPDWORD, LPDWORD);
|
||||||
typedef UINT (WINAPI *GetDriveType_Type)(LPCSTR);
|
typedef UINT (WINAPI *GetDriveType_Type)(LPCSTR);
|
||||||
|
typedef DWORD (WINAPI *GetLogicalDrives_Type)(void);
|
||||||
typedef void (WINAPI *GetLocalTime_Type)(LPSYSTEMTIME);
|
typedef void (WINAPI *GetLocalTime_Type)(LPSYSTEMTIME);
|
||||||
typedef FARPROC (WINAPI *GetProcAddress_Type)(HMODULE, LPCSTR);
|
typedef FARPROC (WINAPI *GetProcAddress_Type)(HMODULE, LPCSTR);
|
||||||
typedef void (WINAPI *GetSystemTime_Type)(LPSYSTEMTIME);
|
typedef void (WINAPI *GetSystemTime_Type)(LPSYSTEMTIME);
|
||||||
@ -308,6 +309,7 @@ DXWEXTERN GetObjectType_Type pGetObjectType DXWINITIALIZED;
|
|||||||
// Kernel32.dll:
|
// Kernel32.dll:
|
||||||
DXWEXTERN GetDiskFreeSpaceA_Type pGetDiskFreeSpaceA DXWINITIALIZED;
|
DXWEXTERN GetDiskFreeSpaceA_Type pGetDiskFreeSpaceA DXWINITIALIZED;
|
||||||
DXWEXTERN GetDriveType_Type pGetDriveType DXWINITIALIZED;
|
DXWEXTERN GetDriveType_Type pGetDriveType DXWINITIALIZED;
|
||||||
|
DXWEXTERN GetLogicalDrives_Type pGetLogicalDrives DXWINITIALIZED;
|
||||||
DXWEXTERN GetLocalTime_Type pGetLocalTime DXWINITIALIZED;
|
DXWEXTERN GetLocalTime_Type pGetLocalTime DXWINITIALIZED;
|
||||||
DXWEXTERN GetProcAddress_Type pGetProcAddress DXWINITIALIZED;
|
DXWEXTERN GetProcAddress_Type pGetProcAddress DXWINITIALIZED;
|
||||||
DXWEXTERN GetSystemTime_Type pGetSystemTime DXWINITIALIZED;
|
DXWEXTERN GetSystemTime_Type pGetSystemTime DXWINITIALIZED;
|
||||||
@ -508,6 +510,7 @@ extern DWORD WINAPI extGetObjectType(HGDIOBJ);
|
|||||||
// Kernel32.dll:
|
// Kernel32.dll:
|
||||||
extern BOOL WINAPI extGetDiskFreeSpaceA(LPCSTR, LPDWORD, LPDWORD, LPDWORD, LPDWORD);
|
extern BOOL WINAPI extGetDiskFreeSpaceA(LPCSTR, LPDWORD, LPDWORD, LPDWORD, LPDWORD);
|
||||||
extern UINT WINAPI extGetDriveType(LPCSTR);
|
extern UINT WINAPI extGetDriveType(LPCSTR);
|
||||||
|
extern DWORD WINAPI extGetLogicalDrives(void);
|
||||||
extern void WINAPI extGetLocalTime(LPSYSTEMTIME);
|
extern void WINAPI extGetLocalTime(LPSYSTEMTIME);
|
||||||
extern FARPROC WINAPI extGetProcAddress(HMODULE, LPCSTR);
|
extern FARPROC WINAPI extGetProcAddress(HMODULE, LPCSTR);
|
||||||
extern void WINAPI extGetSystemTime(LPSYSTEMTIME);
|
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
|
// duplicate activation check
|
||||||
GlobalLocker=CreateSemaphore(NULL, 0, 1, "DxWnd LOCKER");
|
GlobalLocker=CreateSemaphore(NULL, 0, 1, "DxWnd LOCKER");
|
||||||
if(GlobalLocker==NULL){
|
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;
|
return;
|
||||||
}
|
}
|
||||||
if(GetLastError()==ERROR_ALREADY_EXISTS){
|
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);
|
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_ZBUFFER0CLEAN, cTarget->m_ZBuffer0Clean);
|
||||||
DDX_Check(pDX, IDC_NOPOWER2FIX, cTarget->m_NoPower2Fix);
|
DDX_Check(pDX, IDC_NOPOWER2FIX, cTarget->m_NoPower2Fix);
|
||||||
DDX_Check(pDX, IDC_NOPERFCOUNTER, cTarget->m_NoPerfCounter);
|
DDX_Check(pDX, IDC_NOPERFCOUNTER, cTarget->m_NoPerfCounter);
|
||||||
|
DDX_Check(pDX, IDC_HIDECDROMEMPTY, cTarget->m_HideCDROMEmpty);
|
||||||
|
|
||||||
// 3D management
|
// 3D management
|
||||||
DDX_Check(pDX, IDC_NOTEXTURES, cTarget->m_NoTextures);
|
DDX_Check(pDX, IDC_NOTEXTURES, cTarget->m_NoTextures);
|
||||||
|
@ -57,6 +57,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
|
|||||||
m_SingleProcAffinity = FALSE;
|
m_SingleProcAffinity = FALSE;
|
||||||
m_LimitResources = FALSE;
|
m_LimitResources = FALSE;
|
||||||
m_CDROMDriveType = FALSE;
|
m_CDROMDriveType = FALSE;
|
||||||
|
m_HideCDROMEmpty = FALSE;
|
||||||
m_FontBypass = FALSE;
|
m_FontBypass = FALSE;
|
||||||
m_BufferedIOFix = FALSE;
|
m_BufferedIOFix = FALSE;
|
||||||
m_ZBufferClean = FALSE;
|
m_ZBufferClean = FALSE;
|
||||||
|
@ -129,6 +129,7 @@ public:
|
|||||||
BOOL m_NoPaletteUpdate;
|
BOOL m_NoPaletteUpdate;
|
||||||
BOOL m_LimitResources;
|
BOOL m_LimitResources;
|
||||||
BOOL m_CDROMDriveType;
|
BOOL m_CDROMDriveType;
|
||||||
|
BOOL m_HideCDROMEmpty;
|
||||||
BOOL m_FontBypass;
|
BOOL m_FontBypass;
|
||||||
BOOL m_BufferedIOFix;
|
BOOL m_BufferedIOFix;
|
||||||
BOOL m_ZBufferClean;
|
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;
|
gbDebug = TRUE;
|
||||||
return;
|
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:"){
|
if (sParam.Left(2).MakeLower() == "c:"){
|
||||||
strcpy_s(m_ConfigFileName, sizeof(m_ConfigFileName)-1, sParam.Mid(2,sizeof(m_ConfigFileName)-1));
|
strcpy_s(m_ConfigFileName, sizeof(m_ConfigFileName)-1, sParam.Mid(2,sizeof(m_ConfigFileName)-1));
|
||||||
return;
|
return;
|
||||||
@ -139,12 +148,7 @@ BOOL CDxwndhostApp::InitInstance()
|
|||||||
BOOL const fIsElevated = IsProcessElevated();
|
BOOL const fIsElevated = IsProcessElevated();
|
||||||
BOOL MustRestart;
|
BOOL MustRestart;
|
||||||
if(fIsElevated) return TRUE;
|
if(fIsElevated) return TRUE;
|
||||||
MustRestart=MessageBoxEx(0,
|
MustRestart=MessageBoxLang(DXW_STRING_ADMINCAP, DXW_STRING_WARNING, MB_OKCANCEL | MB_ICONQUESTION);
|
||||||
"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);
|
|
||||||
|
|
||||||
if(MustRestart==IDOK){
|
if(MustRestart==IDOK){
|
||||||
extern HANDLE GlobalLocker;
|
extern HANDLE GlobalLocker;
|
||||||
CloseHandle(GlobalLocker);
|
CloseHandle(GlobalLocker);
|
||||||
@ -153,11 +157,18 @@ BOOL CDxwndhostApp::InitInstance()
|
|||||||
{
|
{
|
||||||
// Launch itself as administrator.
|
// Launch itself as administrator.
|
||||||
SHELLEXECUTEINFO sei = { sizeof(sei) };
|
SHELLEXECUTEINFO sei = { sizeof(sei) };
|
||||||
|
CString args;
|
||||||
sei.lpVerb = "runas";
|
sei.lpVerb = "runas";
|
||||||
sei.lpFile = szPath;
|
sei.lpFile = szPath;
|
||||||
//sei.hwnd = (HWND)this->GetMainWnd();
|
//sei.hwnd = (HWND)this->GetMainWnd();
|
||||||
sei.hwnd = (HWND)NULL; // set to NULL to force the confirmation dialog on top of everything...
|
sei.hwnd = (HWND)NULL; // set to NULL to force the confirmation dialog on top of everything...
|
||||||
sei.nShow = SW_NORMAL;
|
sei.nShow = SW_NORMAL;
|
||||||
|
args = "";
|
||||||
|
for(int i=1; i<=__argc; i++) {
|
||||||
|
args += (LPCSTR)(__argv[i]);
|
||||||
|
args += " ";
|
||||||
|
}
|
||||||
|
sei.lpParameters = args;
|
||||||
if (!ShellExecuteEx(&sei)){
|
if (!ShellExecuteEx(&sei)){
|
||||||
DWORD dwError = GetLastError();
|
DWORD dwError = GetLastError();
|
||||||
if (dwError == ERROR_CANCELLED){
|
if (dwError == ERROR_CANCELLED){
|
||||||
@ -236,15 +247,6 @@ void CDxwndhostApp::OnAppAbout()
|
|||||||
aboutDlg.DoModal();
|
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
|
// 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
|
# Visual Studio 2008
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dxwndhost", "dxwndhost.vs2008.vcproj", "{FD0B0234-8EC5-43C0-A384-1B881DD3D925}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dxwndhost", "dxwndhost.vs2008.vcproj", "{FD0B0234-8EC5-43C0-A384-1B881DD3D925}"
|
||||||
EndProject
|
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
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Win32 = Debug|Win32
|
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}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
{FD0B0234-8EC5-43C0-A384-1B881DD3D925}.Release|Win32.ActiveCfg = Release|Win32
|
{FD0B0234-8EC5-43C0-A384-1B881DD3D925}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
{FD0B0234-8EC5-43C0-A384-1B881DD3D925}.Release|Win32.Build.0 = 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
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
Binary file not shown.
@ -168,7 +168,7 @@
|
|||||||
<Tool
|
<Tool
|
||||||
Name="VCResourceCompilerTool"
|
Name="VCResourceCompilerTool"
|
||||||
PreprocessorDefinitions="_DEBUG"
|
PreprocessorDefinitions="_DEBUG"
|
||||||
Culture="1041"
|
Culture="0"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPreLinkEventTool"
|
Name="VCPreLinkEventTool"
|
||||||
@ -343,6 +343,10 @@
|
|||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\MessageBox.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\PaletteDialog.cpp"
|
RelativePath=".\PaletteDialog.cpp"
|
||||||
>
|
>
|
||||||
|
@ -76,8 +76,7 @@ END_MESSAGE_MAP()
|
|||||||
static BOOL CheckStatus()
|
static BOOL CheckStatus()
|
||||||
{
|
{
|
||||||
if(GetHookStatus(NULL)==DXW_RUNNING){
|
if(GetHookStatus(NULL)==DXW_RUNNING){
|
||||||
MessageBoxEx(0, "A hooked task is still running.\nWait its termination.",
|
MessageBoxLang(DXW_STRING_WAITTASK, DXW_STRING_WARNING, MB_OK | MB_ICONEXCLAMATION);
|
||||||
"Warning", MB_OK | MB_ICONEXCLAMATION, NULL);
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -91,10 +90,7 @@ static void RevertScreenChanges(DEVMODE *InitDevMode)
|
|||||||
if ((CurDevMode.dmPelsHeight != InitDevMode->dmPelsHeight) ||
|
if ((CurDevMode.dmPelsHeight != InitDevMode->dmPelsHeight) ||
|
||||||
(CurDevMode.dmPelsWidth != InitDevMode->dmPelsWidth) ||
|
(CurDevMode.dmPelsWidth != InitDevMode->dmPelsWidth) ||
|
||||||
(CurDevMode.dmBitsPerPel != InitDevMode->dmBitsPerPel)){
|
(CurDevMode.dmBitsPerPel != InitDevMode->dmBitsPerPel)){
|
||||||
if (MessageBoxEx(0,
|
if (MessageBoxLang(DXW_STRING_RESTORE, DXW_STRING_WARNING, MB_YESNO | MB_ICONQUESTION)==IDYES)
|
||||||
"Desktop setting has changed.\n"
|
|
||||||
"Do you want to restore the previous ones?",
|
|
||||||
"Warning", MB_YESNO | MB_ICONQUESTION, NULL)==IDYES)
|
|
||||||
ChangeDisplaySettings(InitDevMode, 0);
|
ChangeDisplaySettings(InitDevMode, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -166,6 +162,7 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
|
|||||||
if(dlg->m_HandleExceptions) t->flags |= HANDLEEXCEPTIONS;
|
if(dlg->m_HandleExceptions) t->flags |= HANDLEEXCEPTIONS;
|
||||||
if(dlg->m_LimitResources) t->flags2 |= LIMITRESOURCES;
|
if(dlg->m_LimitResources) t->flags2 |= LIMITRESOURCES;
|
||||||
if(dlg->m_CDROMDriveType) t->flags3 |= CDROMDRIVETYPE;
|
if(dlg->m_CDROMDriveType) t->flags3 |= CDROMDRIVETYPE;
|
||||||
|
if(dlg->m_HideCDROMEmpty) t->flags4 |= HIDECDROMEMPTY;
|
||||||
if(dlg->m_FontBypass) t->flags3 |= FONTBYPASS;
|
if(dlg->m_FontBypass) t->flags3 |= FONTBYPASS;
|
||||||
if(dlg->m_BufferedIOFix) t->flags3 |= BUFFEREDIOFIX;
|
if(dlg->m_BufferedIOFix) t->flags3 |= BUFFEREDIOFIX;
|
||||||
if(dlg->m_ZBufferClean) t->flags4 |= ZBUFFERCLEAN;
|
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_SingleProcAffinity = t->flags3 & SINGLEPROCAFFINITY ? 1 : 0;
|
||||||
dlg->m_LimitResources = t->flags2 & LIMITRESOURCES ? 1 : 0;
|
dlg->m_LimitResources = t->flags2 & LIMITRESOURCES ? 1 : 0;
|
||||||
dlg->m_CDROMDriveType = t->flags3 & CDROMDRIVETYPE ? 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_FontBypass = t->flags3 & FONTBYPASS ? 1 : 0;
|
||||||
dlg->m_BufferedIOFix = t->flags3 & BUFFEREDIOFIX ? 1 : 0;
|
dlg->m_BufferedIOFix = t->flags3 & BUFFEREDIOFIX ? 1 : 0;
|
||||||
dlg->m_ZBufferClean = t->flags4 & ZBUFFERCLEAN ? 1 : 0;
|
dlg->m_ZBufferClean = t->flags4 & ZBUFFERCLEAN ? 1 : 0;
|
||||||
@ -697,12 +695,10 @@ CDxwndhostView::~CDxwndhostView()
|
|||||||
|
|
||||||
RevertScreenChanges(&this->InitDevMode);
|
RevertScreenChanges(&this->InitDevMode);
|
||||||
|
|
||||||
if (this->isUpdated)
|
if (this->isUpdated){
|
||||||
if (MessageBoxEx(0,
|
if (MessageBoxLang(DXW_STRING_LISTUPDATE, DXW_STRING_WARNING, MB_YESNO | MB_ICONQUESTION)==IDYES)
|
||||||
"Task list has changed.\n"
|
|
||||||
"Do you want to save it?",
|
|
||||||
"Warning", MB_YESNO | MB_ICONQUESTION, NULL)==IDYES)
|
|
||||||
this->SaveConfigFile();
|
this->SaveConfigFile();
|
||||||
|
}
|
||||||
|
|
||||||
if(this->SystemTray.Enabled()){
|
if(this->SystemTray.Enabled()){
|
||||||
this->SystemTray.StopAnimation();
|
this->SystemTray.StopAnimation();
|
||||||
@ -714,11 +710,8 @@ void CDxwndhostView::OnExit()
|
|||||||
{
|
{
|
||||||
// check for running apps ....
|
// check for running apps ....
|
||||||
if (GetHookStatus(NULL)==DXW_RUNNING){
|
if (GetHookStatus(NULL)==DXW_RUNNING){
|
||||||
if (MessageBoxEx(0,
|
if (MessageBoxLang(DXW_STRING_EXIT, DXW_STRING_WARNING, MB_OKCANCEL | MB_ICONQUESTION)==IDCANCEL)
|
||||||
"A hooked task is still running.\n"
|
return;
|
||||||
"Exiting now may crash it.\n"
|
|
||||||
"Do you still want to exit?",
|
|
||||||
"Warning", MB_OKCANCEL | MB_ICONQUESTION, NULL)==IDCANCEL) return;
|
|
||||||
}
|
}
|
||||||
delete(this->GetParent());
|
delete(this->GetParent());
|
||||||
}
|
}
|
||||||
@ -853,18 +846,19 @@ void CDxwndhostView::OnImport()
|
|||||||
char path[MAX_PATH];
|
char path[MAX_PATH];
|
||||||
for (i=0; strlen(TargetMaps[i].path) && i<MAXTARGETS; i++)
|
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;
|
path[0]=0;
|
||||||
CListCtrl& listctrl = GetListCtrl();
|
CListCtrl& listctrl = GetListCtrl();
|
||||||
|
|
||||||
//static char buffer[4096] = {0};
|
|
||||||
//static char dirbuffer[4096] = {0};
|
|
||||||
char folder[MAX_PATH+1];
|
char folder[MAX_PATH+1];
|
||||||
char pathname[MAX_PATH+1];
|
char pathname[MAX_PATH+1];
|
||||||
OPENFILENAME ofn = {0};
|
OPENFILENAME ofn = {0};
|
||||||
ofn.lStructSize = sizeof(ofn);
|
ofn.lStructSize = sizeof(ofn);
|
||||||
|
ofn.lpstrFilter = "DxWnd export file\0*.dxw\0\0";
|
||||||
ofn.lpstrFile = (LPSTR)ImportExportPath;
|
ofn.lpstrFile = (LPSTR)ImportExportPath;
|
||||||
//ofn.lpstrInitialDir = (LPSTR)dirbuffer;
|
|
||||||
ofn.nMaxFile = 4096;
|
ofn.nMaxFile = 4096;
|
||||||
ofn.Flags = OFN_ALLOWMULTISELECT | OFN_EXPLORER;
|
ofn.Flags = OFN_ALLOWMULTISELECT | OFN_EXPLORER;
|
||||||
ofn.lpstrDefExt = "dxw";
|
ofn.lpstrDefExt = "dxw";
|
||||||
@ -873,7 +867,7 @@ void CDxwndhostView::OnImport()
|
|||||||
if(ImportExportPath[ofn.nFileOffset - 1] != '\0'){
|
if(ImportExportPath[ofn.nFileOffset - 1] != '\0'){
|
||||||
// Single-Select
|
// Single-Select
|
||||||
// "buffer" - name of file
|
// "buffer" - name of file
|
||||||
LoadConfigItem(&TargetMaps[i], &TitleMaps[i], 0, ImportExportPath);
|
if(LoadConfigItem(&TargetMaps[i], &TitleMaps[i], 0, ImportExportPath)){
|
||||||
listitem.mask = LVIF_TEXT | LVIF_IMAGE;
|
listitem.mask = LVIF_TEXT | LVIF_IMAGE;
|
||||||
listitem.iItem = i;
|
listitem.iItem = i;
|
||||||
listitem.iSubItem = 0;
|
listitem.iSubItem = 0;
|
||||||
@ -881,18 +875,20 @@ void CDxwndhostView::OnImport()
|
|||||||
listitem.pszText = TitleMaps[i].title;
|
listitem.pszText = TitleMaps[i].title;
|
||||||
listctrl.InsertItem(&listitem);
|
listctrl.InsertItem(&listitem);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else{
|
else{
|
||||||
// Multi-Select
|
// Multi-Select
|
||||||
char* p = ImportExportPath;
|
char* p = ImportExportPath;
|
||||||
strcpy(folder, p);
|
strcpy(folder, p);
|
||||||
strcat(folder, "\\");
|
strcat(folder, "\\");
|
||||||
p += lstrlen((LPSTR)p) + 1;
|
p += lstrlen((LPSTR)p) + 1;
|
||||||
while(*p){
|
while(*p && (i<MAXTARGETS)){
|
||||||
// "p" - name of each files, NULL to terminate
|
// "p" - name of each files, NULL to terminate
|
||||||
if(!*p)break;
|
if(!*p) break;
|
||||||
|
if(i==MAXTARGETS) break;
|
||||||
strcpy(pathname, folder);
|
strcpy(pathname, folder);
|
||||||
strcat(pathname, p);
|
strcat(pathname, p);
|
||||||
LoadConfigItem(&TargetMaps[i], &TitleMaps[i], 0, pathname);
|
if (LoadConfigItem(&TargetMaps[i], &TitleMaps[i], 0, pathname)){
|
||||||
listitem.mask = LVIF_TEXT | LVIF_IMAGE;
|
listitem.mask = LVIF_TEXT | LVIF_IMAGE;
|
||||||
listitem.iItem = i;
|
listitem.iItem = i;
|
||||||
listitem.iSubItem = 0;
|
listitem.iSubItem = 0;
|
||||||
@ -900,6 +896,7 @@ void CDxwndhostView::OnImport()
|
|||||||
listitem.pszText = TitleMaps[i].title;
|
listitem.pszText = TitleMaps[i].title;
|
||||||
listctrl.InsertItem(&listitem);
|
listctrl.InsertItem(&listitem);
|
||||||
i++;
|
i++;
|
||||||
|
}
|
||||||
p += lstrlen((LPSTR)p) + 1;
|
p += lstrlen((LPSTR)p) + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1007,8 +1004,7 @@ void CDxwndhostView::OnDeleteLog()
|
|||||||
if((logfp=fopen(FilePath,"rb"))!=NULL){ // if the file exists ....
|
if((logfp=fopen(FilePath,"rb"))!=NULL){ // if the file exists ....
|
||||||
fclose(logfp);
|
fclose(logfp);
|
||||||
// ... ask confirmation.
|
// ... ask confirmation.
|
||||||
res=MessageBoxEx(0, "Clear log file?",
|
res=MessageBoxLang(DXW_STRING_CLEARLOG, DXW_STRING_WARNING, MB_YESNO | MB_ICONQUESTION);
|
||||||
"Warning", MB_YESNO | MB_ICONQUESTION, NULL);
|
|
||||||
if(res!=IDYES) return;
|
if(res!=IDYES) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1032,8 +1028,7 @@ void CDxwndhostView::OnSort()
|
|||||||
if (itemcount<2) return;
|
if (itemcount<2) return;
|
||||||
|
|
||||||
// ask for confirmation
|
// ask for confirmation
|
||||||
res=MessageBoxEx(0, "Sort the application list?",
|
res=MessageBoxLang(DXW_STRING_SORTLIST, DXW_STRING_WARNING, MB_YESNO | MB_ICONQUESTION);
|
||||||
"Warning", MB_YESNO | MB_ICONQUESTION, NULL);
|
|
||||||
if(res!=IDYES) return;
|
if(res!=IDYES) return;
|
||||||
|
|
||||||
// bubble sort the list
|
// bubble sort the list
|
||||||
@ -1117,14 +1112,14 @@ void CDxwndhostView::OnPause()
|
|||||||
{
|
{
|
||||||
CTargetDlg dlg;
|
CTargetDlg dlg;
|
||||||
HRESULT res;
|
HRESULT res;
|
||||||
char sMsg[128+1];
|
|
||||||
DXWNDSTATUS DxWndStatus;
|
DXWNDSTATUS DxWndStatus;
|
||||||
if ((GetHookStatus(&DxWndStatus) != DXW_RUNNING) || (DxWndStatus.hWnd==NULL)) {
|
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 {
|
else {
|
||||||
sprintf_s(sMsg, 128, "Do you want to pause \nthe \"%s\" task?", TitleMaps[DxWndStatus.TaskIdx].title);
|
wchar_t *wcstring = new wchar_t[48+1];
|
||||||
res=MessageBoxEx(0, sMsg, "Warning", MB_YESNO | MB_ICONQUESTION, NULL);
|
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;
|
if(res!=IDYES) return;
|
||||||
PauseResumeThreadList(DxWndStatus.dwPid, FALSE);
|
PauseResumeThreadList(DxWndStatus.dwPid, FALSE);
|
||||||
}
|
}
|
||||||
@ -1134,14 +1129,14 @@ void CDxwndhostView::OnResume()
|
|||||||
{
|
{
|
||||||
CTargetDlg dlg;
|
CTargetDlg dlg;
|
||||||
HRESULT res;
|
HRESULT res;
|
||||||
char sMsg[128+1];
|
|
||||||
DXWNDSTATUS DxWndStatus;
|
DXWNDSTATUS DxWndStatus;
|
||||||
if ((GetHookStatus(&DxWndStatus) != DXW_RUNNING) || (DxWndStatus.hWnd==NULL)) {
|
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 {
|
else {
|
||||||
sprintf_s(sMsg, 128, "Do you want to resume \nthe \"%s\" task?", TitleMaps[DxWndStatus.TaskIdx].title);
|
wchar_t *wcstring = new wchar_t[48+1];
|
||||||
res=MessageBoxEx(0, sMsg, "Warning", MB_YESNO | MB_ICONQUESTION, NULL);
|
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;
|
if(res!=IDYES) return;
|
||||||
PauseResumeThreadList(DxWndStatus.dwPid, TRUE);
|
PauseResumeThreadList(DxWndStatus.dwPid, TRUE);
|
||||||
}
|
}
|
||||||
@ -1152,26 +1147,24 @@ void CDxwndhostView::OnKill()
|
|||||||
CTargetDlg dlg;
|
CTargetDlg dlg;
|
||||||
HRESULT res;
|
HRESULT res;
|
||||||
HANDLE TargetHandle;
|
HANDLE TargetHandle;
|
||||||
char sMsg[128+1];
|
|
||||||
DXWNDSTATUS DxWndStatus;
|
DXWNDSTATUS DxWndStatus;
|
||||||
if ((GetHookStatus(&DxWndStatus) != DXW_RUNNING) || (DxWndStatus.hWnd==NULL)) {
|
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 {
|
else {
|
||||||
sprintf_s(sMsg, 128, "Do you want to kill \nthe \"%s\" task?", TitleMaps[DxWndStatus.TaskIdx].title);
|
wchar_t *wcstring = new wchar_t[48+1];
|
||||||
res=MessageBoxEx(0, sMsg, "Warning", MB_YESNO | MB_ICONQUESTION, NULL);
|
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;
|
if(res!=IDYES) return;
|
||||||
DxWndStatus.dwPid;
|
DxWndStatus.dwPid;
|
||||||
|
|
||||||
TargetHandle = OpenProcess(PROCESS_TERMINATE, FALSE, DxWndStatus.dwPid);
|
TargetHandle = OpenProcess(PROCESS_TERMINATE, FALSE, DxWndStatus.dwPid);
|
||||||
if(!TargetHandle){
|
if(!TargetHandle){
|
||||||
sprintf_s(sMsg, 128, "OpenProcess(%x) error %d, operation failed.", DxWndStatus.dwPid, GetLastError());
|
MessageBoxLangArg(DXW_STRING_OPENPROCESS, DXW_STRING_ERROR, MB_ICONEXCLAMATION, DxWndStatus.dwPid, GetLastError());
|
||||||
MessageBoxEx(0, sMsg, "Error", MB_ICONEXCLAMATION, NULL);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(!TerminateProcess(TargetHandle, 0)){
|
if(!TerminateProcess(TargetHandle, 0)){
|
||||||
sprintf_s(sMsg, 128, "TerminateProcess(%x) error %d, operation failed.", TargetHandle, GetLastError());
|
MessageBoxLangArg(DXW_STRING_TERMINATE, DXW_STRING_ERROR, MB_ICONEXCLAMATION, TargetHandle, GetLastError());
|
||||||
MessageBoxEx(0, sMsg, "Error", MB_ICONEXCLAMATION, NULL);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
CloseHandle(TargetHandle);
|
CloseHandle(TargetHandle);
|
||||||
@ -1189,17 +1182,17 @@ void CDxwndhostView::OnProcessKill()
|
|||||||
char FilePath[MAX_PATH+1];
|
char FilePath[MAX_PATH+1];
|
||||||
char *lpProcName, *lpNext;
|
char *lpProcName, *lpNext;
|
||||||
HRESULT res;
|
HRESULT res;
|
||||||
char sMsg[128+1];
|
|
||||||
|
|
||||||
if(!listctrl.GetSelectedCount()) return ;
|
if(!listctrl.GetSelectedCount()) return ;
|
||||||
pos = listctrl.GetFirstSelectedItemPosition();
|
pos = listctrl.GetFirstSelectedItemPosition();
|
||||||
i = listctrl.GetNextSelectedItem(pos);
|
i = listctrl.GetNextSelectedItem(pos);
|
||||||
|
|
||||||
strncpy(FilePath,TargetMaps[i].path,MAX_PATH);
|
wchar_t *wcstring = new wchar_t[48+1];
|
||||||
sprintf_s(sMsg, 128, "Do you want to kill \nthe \"%s\" task?", TitleMaps[i].title);
|
mbstowcs_s(NULL, wcstring, 48, TitleMaps[i].title, _TRUNCATE);
|
||||||
res=MessageBoxEx(0, sMsg, "Warning", MB_YESNO | MB_ICONQUESTION, NULL);
|
res=MessageBoxLangArg(DXW_STRING_KILLTASK, DXW_STRING_WARNING, MB_YESNO | MB_ICONQUESTION, wcstring);
|
||||||
if(res!=IDYES) return;
|
if(res!=IDYES) return;
|
||||||
|
|
||||||
|
strncpy(FilePath,TargetMaps[i].path,MAX_PATH);
|
||||||
lpProcName=FilePath;
|
lpProcName=FilePath;
|
||||||
while (lpNext=strchr(lpProcName,'\\')) lpProcName=lpNext+1;
|
while (lpNext=strchr(lpProcName,'\\')) lpProcName=lpNext+1;
|
||||||
|
|
||||||
@ -1216,14 +1209,9 @@ void CDxwndhostView::OnAdd()
|
|||||||
CTargetDlg dlg;
|
CTargetDlg dlg;
|
||||||
LV_ITEM listitem;
|
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;
|
for(i = 0; i < MAXTARGETS; i ++) if(!TargetMaps[i].path[0]) break;
|
||||||
if(i>=MAXTARGETS){
|
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;
|
return;
|
||||||
}
|
}
|
||||||
memset(&TargetMaps[i],0,sizeof(TARGETMAP)); // clean up, just in case....
|
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);
|
FilePath=FilePath.Right(FilePath.GetLength()-len-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
res=MessageBoxEx(0, "Delete \""+FilePath+"\" ?",
|
wchar_t *wcstring = new wchar_t[MAX_PATH+1];
|
||||||
"Warning", MB_YESNO | MB_ICONQUESTION, NULL);
|
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;
|
if(res!=IDYES) return;
|
||||||
listctrl.DeleteItem(i);
|
listctrl.DeleteItem(i);
|
||||||
for(; i < MAXTARGETS - 1; i ++) {
|
for(; i < MAXTARGETS - 1; i ++) {
|
||||||
@ -1324,8 +1313,7 @@ void CDxwndhostView::OnClearAllLogs()
|
|||||||
CString FilePath;
|
CString FilePath;
|
||||||
HRESULT res;
|
HRESULT res;
|
||||||
|
|
||||||
res=MessageBoxEx(0, "Clear ALL logs?",
|
res=MessageBoxLang(DXW_STRING_CLEARALL, DXW_STRING_WARNING, MB_YESNO | MB_ICONQUESTION);
|
||||||
"Warning", MB_YESNO | MB_ICONQUESTION, NULL);
|
|
||||||
if(res!=IDYES) return;
|
if(res!=IDYES) return;
|
||||||
|
|
||||||
for(i = 0; i < MAXTARGETS; i ++) {
|
for(i = 0; i < MAXTARGETS; i ++) {
|
||||||
@ -1419,12 +1407,12 @@ void CDxwndhostView::OnGoToTrayIcon()
|
|||||||
m_StartToTray ? NULL : "DxWnd DirectDraw windowizer", // NULL inhibits the Tray banner
|
m_StartToTray ? NULL : "DxWnd DirectDraw windowizer", // NULL inhibits the Tray banner
|
||||||
"DxWnd",
|
"DxWnd",
|
||||||
NIIF_INFO, 10)){
|
NIIF_INFO, 10)){
|
||||||
MessageBox(0, "SystemTray.Create failed", MB_OK);
|
MessageBoxLang(DXW_STRING_TRAYFAIL, DXW_STRING_ERROR, MB_OK);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
IconId=(menu->GetMenuState(ID_HOOK_START, MF_BYCOMMAND)==MF_CHECKED)?IDI_DXWAIT:IDI_DXIDLE;
|
IconId=(menu->GetMenuState(ID_HOOK_START, MF_BYCOMMAND)==MF_CHECKED)?IDI_DXWAIT:IDI_DXIDLE;
|
||||||
if(!this->SystemTray.SetIcon(IconId)){
|
if(!this->SystemTray.SetIcon(IconId)){
|
||||||
MessageBox(0, "SystemTray.LoadIcon failed", MB_OK);
|
MessageBoxLang(DXW_STRING_ICONFAIL, DXW_STRING_ERROR, MB_OK);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
StatusThread= CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)TrayIconUpdate, (LPVOID)&this->SystemTray, 0, &dwThrdId);
|
StatusThread= CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)TrayIconUpdate, (LPVOID)&this->SystemTray, 0, &dwThrdId);
|
||||||
@ -1438,10 +1426,7 @@ void CDxwndhostView::OnGoToTrayIcon()
|
|||||||
void CDxwndhostView::OnSaveFile()
|
void CDxwndhostView::OnSaveFile()
|
||||||
{
|
{
|
||||||
if (this->isUpdated)
|
if (this->isUpdated)
|
||||||
if (MessageBoxEx(0,
|
if (MessageBoxLang(DXW_STRING_SAVELIST, DXW_STRING_WARNING, MB_YESNO | MB_ICONQUESTION)==IDYES)
|
||||||
"Task list has changed.\n"
|
|
||||||
"Do you want to save it?",
|
|
||||||
"Warning", MB_YESNO | MB_ICONQUESTION, NULL)==IDYES)
|
|
||||||
this->SaveConfigFile();
|
this->SaveConfigFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1598,6 +1583,7 @@ DWORD WINAPI StartDebug(void *p)
|
|||||||
switch(debug_event.dwDebugEventCode){
|
switch(debug_event.dwDebugEventCode){
|
||||||
case EXIT_PROCESS_DEBUG_EVENT:
|
case EXIT_PROCESS_DEBUG_EVENT:
|
||||||
if(step){
|
if(step){
|
||||||
|
// DXW_STRING_STEPPING
|
||||||
xpi=(EXIT_PROCESS_DEBUG_INFO *)&debug_event.u;
|
xpi=(EXIT_PROCESS_DEBUG_INFO *)&debug_event.u;
|
||||||
sprintf(DebugMessage, "EXIT PROCESS RetCode=%x", xpi->dwExitCode);
|
sprintf(DebugMessage, "EXIT PROCESS RetCode=%x", xpi->dwExitCode);
|
||||||
res=MessageBoxEx(0, DebugMessage, "Continue stepping?", MB_YESNO | MB_ICONQUESTION, NULL);
|
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
|
// ref: problems in setting default exception handler in Tomb Raider IV demo
|
||||||
if(ThInfo->TM->flags & HANDLEEXCEPTIONS) {
|
if(ThInfo->TM->flags & HANDLEEXCEPTIONS) {
|
||||||
Sleep(500);
|
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){
|
if(step){
|
||||||
pi=(PROCESS_INFORMATION *)&debug_event.u;
|
pi=(PROCESS_INFORMATION *)&debug_event.u;
|
||||||
@ -1621,6 +1607,7 @@ DWORD WINAPI StartDebug(void *p)
|
|||||||
}
|
}
|
||||||
GetFullPathName("dxwnd.dll", MAX_PATH, path, NULL);
|
GetFullPathName("dxwnd.dll", MAX_PATH, path, NULL);
|
||||||
if(!Inject(pinfo.dwProcessId, path)){
|
if(!Inject(pinfo.dwProcessId, path)){
|
||||||
|
// DXW_STRING_INJECTION
|
||||||
sprintf(DebugMessage,"Injection error: pid=%x dll=%s", pinfo.dwProcessId, path);
|
sprintf(DebugMessage,"Injection error: pid=%x dll=%s", pinfo.dwProcessId, path);
|
||||||
MessageBoxEx(0, DebugMessage, "Injection", MB_ICONEXCLAMATION, NULL);
|
MessageBoxEx(0, DebugMessage, "Injection", MB_ICONEXCLAMATION, NULL);
|
||||||
}
|
}
|
||||||
@ -1718,29 +1705,29 @@ void SwitchToColorDepth(int bpp)
|
|||||||
{
|
{
|
||||||
DEVMODE CurrentDevMode;
|
DEVMODE CurrentDevMode;
|
||||||
BOOL res;
|
BOOL res;
|
||||||
char MsgBuf[256+1];
|
|
||||||
EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &CurrentDevMode);
|
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",
|
//OutTraceDW("ChangeDisplaySettings: CURRENT wxh=(%dx%d) BitsPerPel=%d -> 16\n",
|
||||||
// CurrentDevMode.dmPelsWidth, CurrentDevMode.dmPelsHeight, CurrentDevMode.dmBitsPerPel);
|
// CurrentDevMode.dmPelsWidth, CurrentDevMode.dmPelsHeight, CurrentDevMode.dmBitsPerPel);
|
||||||
CurrentDevMode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
|
CurrentDevMode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
|
||||||
CurrentDevMode.dmBitsPerPel = bpp;
|
CurrentDevMode.dmBitsPerPel = bpp;
|
||||||
res=ChangeDisplaySettings(&CurrentDevMode, CDS_UPDATEREGISTRY);
|
res=ChangeDisplaySettings(&CurrentDevMode, CDS_UPDATEREGISTRY);
|
||||||
if(res!=DISP_CHANGE_SUCCESSFUL) {
|
if(res!=DISP_CHANGE_SUCCESSFUL) {
|
||||||
char *err;
|
WCHAR *err;
|
||||||
switch(res){
|
switch(res){
|
||||||
case DISP_CHANGE_BADDUALVIEW: err="BADDUALVIEW"; break;
|
case DISP_CHANGE_BADDUALVIEW: err=L"BADDUALVIEW"; break;
|
||||||
case DISP_CHANGE_BADFLAGS: err="BADFLAGS"; break;
|
case DISP_CHANGE_BADFLAGS: err=L"BADFLAGS"; break;
|
||||||
case DISP_CHANGE_BADMODE: err="BADMODE"; break;
|
case DISP_CHANGE_BADMODE: err=L"BADMODE"; break;
|
||||||
case DISP_CHANGE_BADPARAM: err="BADPARAM"; break;
|
case DISP_CHANGE_BADPARAM: err=L"BADPARAM"; break;
|
||||||
case DISP_CHANGE_FAILED: err="FAILED"; break;
|
case DISP_CHANGE_FAILED: err=L"FAILED"; break;
|
||||||
case DISP_CHANGE_NOTUPDATED: err="NOTUPDATED"; break;
|
case DISP_CHANGE_NOTUPDATED: err=L"NOTUPDATED"; break;
|
||||||
case DISP_CHANGE_RESTART: err="RESTART"; break;
|
case DISP_CHANGE_RESTART: err=L"RESTART"; break;
|
||||||
default: err="???"; break;
|
default: err=L"???"; break;
|
||||||
}
|
}
|
||||||
sprintf(MsgBuf, "ChangeDisplaySettings ERROR res=%s err=%d\n", err, GetLastError());
|
MessageBoxLangArg(DXW_STRING_ERRCOLOR, DXW_STRING_ERROR, MB_OK | MB_ICONEXCLAMATION, err, GetLastError());
|
||||||
MessageBoxEx(0, MsgBuf, "Error", MB_OKCANCEL | MB_ICONQUESTION, NULL);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BIN
host/palette.bmp
BIN
host/palette.bmp
Binary file not shown.
Before Width: | Height: | Size: 246 B |
Binary file not shown.
Before Width: | Height: | 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