Remap all textures with a white texture (D3D only).
+
+
+
+
3D wireframe
+
+
WIREFRAME
+
+
As a fancy and easy action that DxWnd may implement on D3D and OpenGL programs (not ddraw ones!!), checking this flag will show the graphic in wireframe mode.
Forces the program to declare its compatibility with AERO desktop mode, suppressing the switch from AERO to standard desktop mode. Useful for Windows Vista to Windows 8.
Some games pretends you switch the video mode to 8BPP before you activate them, making it useless the 8BPP emulated mode. This flag just let the program believe that the desktop setting is in 8BPP mode already.
+
+
+
+
Simulate 16BPP desktop
+
+
INIT16BPP
+
+
Same as above, but declaring a 16BPP setting. These two flags should not be set together.
+
+
+
+
Forces 16BPP desktop
+
+
FORCE16BPP
+
+
In some cases, the game really needs a 16BPP desktop, but does not contain the code for activate this color depth, and on modern platforms, though supported, it is very difficult (Win7) when not impossible (Win8) to do it manually. This flag switched the desktop to 16BPP before the game would complain.
+
+
+
+
Simulate BW monitor
+
+
BLACKWHITE
+
+
Activate a tweak in the palette handling that causes all colors to be replaced with the corresponding grayscale color. It works only on 8BPP palettized games or emulating 16BPP on a 32BPP desktop.
+
+
+
+
Set 16BPP RGB565 encoding
+
+
USERGB565
+
+
By default, DxWnd emulates 16BPP color with RGB555 encoding. The option forces RGB565. Thi option, of course, impacts the video only in emulation mode and for 16BPP color depth.
+
+
+
+
Lock Sys Colors
+
+
LOCKSYSCOLORS
+
+
???
+
+
+
+
Disable setting gamma ramp
+
+
DISABLEGAMMARAMP
+
+
Disables API trying to alter the default gamma ramp making the screen lighter or darker. Since there API affect the whole screen, this flag is mainly useful to avoid the background desktop to be affected.
DxWnd accepts a few command line arguments, that can all be combined together to alter his behaviour:
+
+
+
+
/T
+
+
Starts DxWnd iconized in the System Tray (see DxWnd in the System Tray).
+
+
+
+
/I
+
+
Starts DxWnd initially in the IDLE state, so that it doesn't effect the programs until you manually issue a Hook ► Start command.
+
+
+
+
/C:<filename>
+
+
Uses the <filename> configuration file instead of the default config.ini file. In any case, the configuration file must be located in the same DxWnd execution folder.
+
+
+
+
/lang=<xx>
+
+
If you need a localized version of DxWnd, this argument causes DxWnd to load all resources text from the external dlls, Resources_<xx>.dll.
The dxwnd.ini configuration file holds the DxWnd almost complete configuration (some registry tricks need the dxwnd.reg file with registry tweaks...), but needs no manual editing since almost all the information in there comes form the DxWnd GUI.
+
+
There are a few exceptions that need to be known so that just in case you can manually edit them.
Compensate for X,Y mouse coordinates when the window is moved or resized. It should be typically set for most games.
+
+
+
+
Force cursor clipping
+
+
CLIPCURSOR
+
+
Set hardware cursor clipping within the window's region. It greately improves the game playability in some cases (namely, the Dungeon Keeper series).
+
+
+
+
Keep cursor within window
+
+
KEEPCURSORWITHIN
+
+
Avoid moving the cursor outside the window area. Doing so was used as “Cursor OFF” directive in some games.
+
+
+
+
Keep cursor fixed
+
+
KEEPCURSORFIXED
+
+
Inhibits the SetCursorPos() API: in some cases, it affects the program's behaviour (e.g. “Necrodrome”).
+
+
+
+
Intercept GDI cursor clipping
+
+
ENABLECLIPPING
+
+
Disables GDI clipping, avoiding unpleasant effects such as the mouse that is not free to move within the whole window.
+
+
+
+
Message processing
+
+
MESSAGEPROC
+
+
Most programs get X,Y mouse coordinates from the mouse messages or from the specific API. One tricky way to get the same info, though, is to listen from the windows message queue using PeekMessag / GetMessage, and retrieve the X,Y coordinates from ANY received message in the pt field. Checking this box make DxWnd to fix the X,Y coordinates on this uncommon situation as well (see “Uprising”).
+
+
+
+
Fix WM_NCHITTEST
+
+
FIXNCHITTEST
+
+
Fixes the WM_NCHITTEST message X,Y coordinates. When the window's border behaves strangely, set this flag to correct the position of the mouse cursor.
+
+
+
+
Slow down mouse polling
+
+
SLOW
+
+
Some old programs have this bad habit to continuously loop through the mouse status polling with no delay, using 100% of CPU time. This flag introduces a minimal and unnoticeable delay between mouse polls, saving most of CPU time.
+
+
+
+
Release mouse outside window
+
+
RELEASEMOUSE
+
+
Normally, when the mouse is placed outside the window and the window keeps receiving mouse messages, the mouse cursor is placed on the corresponding window border and the program performs video scrolling or so forth. The re are some cases in which you don't want this to happen, for instance when you want to use two programs alternatively, such as a game and a keyboard simulator. Checking this flag causes DxWnd to detect the mouse outside window condition, and in this case it places the cursor right in the middle of the screen, where it is supposed to make no harm.
+
+
+
+
Filter offending messages
+
+
DEFAULTMESSAGES
+
+
While a well-designed window program should react to all window system messages, it is possible that a fullscreen program was designed without an appropriate reaction to such unexpected messages, like window stretching. This option makes DxWnd automatically process all these messages that an application might not correctly handle. It should be turned on if operations like window resizing or movement cause crashes or other problems.
+
+
+
+
Peek all messages in queue
+
+
PEEKALLMESSAGES
+
+
In Windows 7 and newer, any window application MUST empty its message queue. The operating system considers any application that does not do this within a defined timeout period (about 5 seconds) to be malfunctioning, and kills the process (although it keeps displaying the window's contents). Programs developed before Windows 7 didn't take this constraint into account and may easily fail to get messages during processes such as unskippable cutscenes or long calculations. This option periodically empties the system queue, ensuring that the program won't be killed. However, there is a small chance that some events (like mouse clicks) could get lost occasionally and will need to be repeated.
+
+
+
+
DirectInput Hooking
+
+
HOOKDI
+
+
Hooks DirectInput libraries, making sure that the DirectInput modes are appropriate for a non fullscreen program and enabling all other flags in the same group.
+
+
+
+
DirectInput8 Hooking
+
+
HOOKDI8
+
+
Hooks DirectInput8 libraries, making sure that the DirectInput8 modes are appropriate for a non fullscreen program and enabling all other flags in the same group.
+
+
+
+
Unacquire devices on input lost
+
+
UNACQUIRE
+
+
Unacquire DirectInput/DirectInput8 devices when they lose focus and acquire them back when they regain focus. This option should be set if the program using DirectInput libraries keeps listening to mouse input even when the program's window is inactive, or when it keeps ignoring mouse input even when the program's window becomes active once again.
+
+
+
+
Emulates mouse relative movement
+
+
EMULATERELMOUSE
+
+
Emulates the DirectInput detection of relative mouse position by keeping the mouse at the center of the window and looking for movements. It should be used whenever the native DirectInput mechanism doesn't work properly.
Decrement the reference counter of some objects to properly track all of DxWnd's service objects.
+
+
+
+
Return 0 refcount
+
+
RETURNNULLREF
+
+
Always return a 0 reference counter when a surface or DirectDraw session is released.
+
+
+
+
Suppress overlay capability
+
+
???
+
+
???
+
+
+
+
Set minimal caps
+
+
???
+
+
???
+
+
+
+
Deinterlace movies
+
+
???
+
+
???
+
+
+
+
Set ZBufferBitDepths capability
+
+
???
+
+
???
+
+
+
+
Limit ddraw interface
+
+
???
+
+
???
+
+
+
+
Forces HEL
+
+
FORCESHEL
+
+
Forces Hardware Emulation Layer.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Full RECT blit
+
+
+
+
Causes every blit operation to the primary surface to be applied to the full surface (NULL rect coordinates). It allows you to recover from improper surface handling, but this situation should be classified more properly as a bug in DxWnd.
Shows a window that displays some information about the desktop's display settings, including its size, color depth, pixel format, color bits, and color shift.
On recent platforms, low color depths are no longer supported for the desktop, though still working. This menu let you ask the system to set the current color depth to 8, 16, 24 or 32 bits per pixel. Of course, it is possible that some color / resolution combinations are not supported.
Some games don't properly check whether the hardware can properly manage textures whose sizes are not a power of 2 (e.g. 16, 32, 64, 128 bits). If textures of a different size are processed by hardware without this capability, you get diagonal effects on the rendered image. The option fixes this problem.
+
+
+
+
Clean ZBUFFER @0.0 fix
+
+
ZBUFFER0CLEAN
+
+
Some games don't properly clear the zeta buffer between frames, producing incorrect surface z-ordering and other issues. This flag fixes this problem.
+
+
+
+
Clean ZBUFFER @1.0 fix
+
+
ZBUFFERCLEAN
+
+
Some games don't properly clear the zeta buffer between frames, producing incorrect surface z-ordering and other issues. This flag fixes this problem. It is similar to ZBUFFER0CLEAN, but it works in different contexts.
+
+
+
+
Suppress D3D8/9 Reset
+
+
NOD3DRESET
+
+
Do not perform the D3D reset operation.
+
+
+
+
Suppress d3d9 extensions
+
+
SUPPRESSD3DEXT
+
+
D3d9.dll comes in different versions depending on the platform: on older windows releases it exports the Direct3DCreate API, while in more recent versions there are many further exported calls. This flag suppresses the additional entries.
Some badly programmed games (namely the "Cossaks" series) don't follow the specification to blit changes on screen, they just get the primary surface memory address and keep writing there. The option forces a periodic blitting of the primary surface on screen even if the game doesn't request it. You want a second example? It has not been easy to find, but "Crush! Deluxe" suffers the same problem.
+
+
+
+
VIDEO → SYSTEM Surface on fail
+
+
VIDEOTOSYSTEMMEM
+
+
When this option is set and a CreateSurface fails because of video memory shortage, DxWnd backs this up by creating the surface on memory. Oddly enough, some games expect to notice this by themselves and work correctly only when the option is NOT set.
+
+
+
+
Suppress DX common errors
+
+
SUPPRESSDXERRORS
+
+
Some games running in windowed mode generate sporadic errors that wouldn't prevent the game to work, but terminate the application. This option makes directx methods return OK condition in such common cases.
+
+
+
+
Make Backbuf attachable
+
+
BACKBUFATTACH
+
+
Alters the size specification of the created backbuffer so that it copes with the actual primary surface, so that it may be attachable to a ZBUFFER surface. It makes “Dave Mirra Freestyle BMX” playable.
+
+
+
+
Blit from Backbuffer
+
+
BLITFROMBACKBUFFER
+
+
Some games (the Sims, the only one so far....) read graphic data from the primary surface. When the game runs windowed, the approximation introduced in a scaled window brings cumulative error that appear as a progressive "smearing" effect. In this case, it might be better to read the data from the backbuffer surface that is not scaled, even if in such a way you get other troubles when scrolling (see it by yourself...). The only reasonable alternative: write game code in a better way, in my opinion!
+
+
+
+
Compensate Flip emulation
+
+
NOFLIPEMULATION
+
+
???
+
+
+
+
Suppress clipping
+
+
SUPPRESSCLIPPING
+
+
DxWnd sets clipping on the primary surface. If the game does it as way, there might be interferences. As a matter of fact, setting this flag is the only way to make "Pax Imperia Eminent Domain" working correctly.
+
+
+
+
Full RECT blit
+
+
+
+
Causes every blit operation to primary surface to be applied to the full surface (NULL rect coordinates). It could be handy to recover wrong surface handling, but this situation should be classified more properly as a DxWnd BUG!
+
+
+
+
Palette update don't blit
+
+
NOPALETTEUPDATE
+
+
Avoid executing a plit operation in case of palette update. This could be used to fix conflicts between GDI and ddraw palette updates.
+
+
+
+
Set AERO compatible mode
+
+
AEROBOOST
+
+
Quite useful in Windows Vista to Win8 platforms, forces the program to declare its compatibility with AERO desktop mode, avoiding then the switch from AERO to standard desktop mode.
+
+
+
+
Forces HEL
+
+
FORCESHEL
+
+
Forces Hardware Emulation Layer.
+
+
+
+
Win7 color fix
+
+
COLORFIX
+
+
???
+
+
+
+
Don't fix the Pixel Format
+
+
NOPIXELFORMAT
+
+
Do not try to fix the surface pixel format.
+
+
+
+
By default set no ALPHACHANNEL
+
+
NOALPHACHANNEL
+
+
???
+
+
+
+
Fix ddraw ref counter
+
+
FIXREFCOUNTER
+
+
Decrement the reference counter of some objects to keep in proper account all service objects created internally by DxWnd.
+
+
+
+
Return 0 ref counter
+
+
RETURNNULLREF
+
+
Returns always a 0 reference counter when a surface / directdraw session is released.
DirectX Version Hook: Sets the basic intervention strategy: depending on the game technology, a different hooking technique should be adopted. Automatic tries to find it by itself, but it doesn't always succeed! OpenGL handling require a dedicated setting (see libs tab).
+
+
Available options:
+
+
+
Automatic
+
DirectX1~6
+
DirectX7
+
DirectX8
+
DirectX9
+
DirectX10
+
DirectX11
+
None
+
+
+
In "Automatic" (the default mode), DxWnd automatically detects DirectX calls and hooks them to track and modify the calls and their corresponding COM methods. In some cases, though, DxWnd is unable to properly detect these calls and the windowing effect can be recovered by explicitly telling DxWnd what version of DirectX it should hook. Each option corresponds to a different DLL file that is involved in the DirectX implementation. This is directed by the following options:
+
+
+
DirectX1~6 (for ddraw.dll)
+
DirecX7 (for ddrawex.dll)
+
DirectX8 (for d3d8.dll)
+
DirectX9 (for d3d9.dll)
+
DirectX10 (for ...)
+
DirectX11 (for ...)
+
+
+
The last two options are generally useless since current d3d10/11 implementation seems to be based on d3d9, so hooking DirectX9 works for them as well (however, the implementation may change in the future).
+
+
It is also possible to specify the option "none" to avoid hooking DirectX at all. This could be helpful whenever you are interested in DxWnd features that are not related to the graphics (e.g. time stretching, compatibility options) and you want to leave the graphics alone.
Once you move DxWnd in the system tray and until the program is terminated, an icon will be visible in the system tray. Right-clicking on the icon, you get a subset of the DxWnd commands, plus the Show command that shows the DxWnd window again. The Show command is the menu default, so you can activate it also by double-clicking on the DxWnd tray icon.
DirectX emulation determines how the fullscreen DirectX operations are managed to fit a windowed environment, with the following options:
+
+
+
+
None
+
+
(default)
+
+
The primary surface and backbuffers are simply scaled to the desired size, but no other characteristic is altered. In particular, the pixel color depth and mode are not altered.
+
+
+
+
Primary Buffer
+
+
EMULATEBUFFER
+
+
Same as "None," but blit operations are made against a memory surface and then transferred to the real primary surface – this handles the otherwise known pitch-bug problem.
+
+
+
+
Locked Surface
+
+
LOCKEDSURFACE
+
+
Same as "Primary Buffer" (EMULATEBUFFER) but the buffer is the surface of an OFFSCREENPLAIN DirectDraw surface, so it is handled similarly to a DirectX surfacebuffer.
+
+
+
+
Primary Surface
+
+
EMULATESURFACE
+
+
The virtual primary surface has a different color depth from the real primary surface, and DxWnd takes care of the color transformation internally: it might be a little slower but it involves no screen mode changes. Furthermore, this option allows you to set the "Set AERO compatible mode" that avoids making a temporary color conversion and stretching it to the primary surface (which would break the AERO desktop composition mode).
+
+
+
+
Hybrid mode
+
+
HYBRIDMODE
+
+
Similar to "Primary Surface" mode (EMULATESURFACE), but the palette and color conversion are forwarded to GDI calls instead of internally managed by DxWnd. It is usually less compatible than primary surface, but in some rare cases it may better at managing unusual color conversions. Try this option if the game works but the colors are wrong or the screen is black.
+
+
+
+
GDI mode
+
+
GDIMODE
+
+
Similar to "Primary Surface" mode (EMULATESURFACE), but all the conversion between the virtual primary interface and the window surface is forwarded to GDI calls instead of being internally managed by DxWnd. Because of recent optimizations to GDI that can now take advantage of hardware-accelerated functions, this mode is becoming particularly interesting, and the lack of extra service surfaces makes it more adherent to the original game schema. It is also quite respectful of AERO desktop modes.
+
+
+
+
+
+
Note that the chosen option only influences DirectDraw1 through DirectDraw7 interfaces. Interfaces with d3d8 and up (or OpenGL) are not affected by these options.
Causes the program to detect the chosen Windows release. Notice: this is not the same thing as the compatibility setting of the Windows properties panel, that also adjust the system's behaviour to emulate the chosen platform.
On recent platforms, low color depths are no longer supported for the desktop, though still working. This menu let you ask the system to set the current color depth to 8, 16, 24 or 32 bits per pixel. Of course, it is possible that some color / resolution combinations are not supported.
+
+
+
+
Move to Tray
+
+
Move DxWnd in the System Tray, where a dedicated icon will show its state and allow a few commands, including the possibility to show the application window again. Note that once DxWnd goes in the System Tray, it always stays there also when it is made visible again.
+
+
+
+
eXit
+
+
Exits DxWnd. Beware that if a game was activated while DxWnd was active, it will very likely crash after the DxWnd termination, so a check is made and you'd be prompted to confirm the operation.
Introduces a configurable delay between screen refresh operations, so that the FPS is limited accordingly.
+
+
+
+
Skip
+
+
SKIPFPS
+
+
Introduces no delay in the screen operations, but skips several screen updates so that the actual FPS value is limited without the program noticing it.
+
+
+
+
delay (msec)
+
+
???
+
+
Sets the delay time, expressed in milliseconds, for both the "Limit" (LIMITFPS) and "Skip" (SKIPFPS) options. To be noted that the FPS is related to the delay by the formula FPS = 1000/Delay or, the other way around, Delay = 1000/FPS. So if, for example, you desire an FPS not greater than 50, the corresponding value to get this effect is Delay = 20msec. Note that a greater delay means a slower frame rate.
+
+
+
+
Show FPS on title
+
+
SHOWFPS
+
+
When checked, the FPS counter is appended to the window title.
+
+
+
+
Show FPS overlay
+
+
SHOWFPSOVERLAY
+
+
When checked, the FPS counter is drawn as an overlay of the program client area, in a corner of the screen and periodically and randomly moved to other cornes to avoid accidentally overlap an important screen region.
These flags determine the strategy to manage pure GDI programs or, in the most complicated case, hybrid games that mix GDI calls with other renderers like DirectDraw or Direct3D.
+
+
+
+
No GDI handling
+
+
GDINONE
+
+
Disables video-related GDI / user32 API hooking.
+
+
+
+
Scaled GDI calls
+
+
HOOKGDI
+
+
Scales GDI API coordinates to fit the window stretching.
+
+
+
+
Emulated Device Context
+
+
EMULATEDC
+
+
Handle an emulated GDI DC.
+
+
+
+
Map DC to Primary Surface
+
+
GDIEMULATEDC
+
+
Use the ddraw primary surface DC for GDI operations.
+
+
+
+
Scale font parameters
+
+
FIXTEXTOUT
+
+
Tries to scale font parameters to fit the window stretching.
If this flag is not set, DxWnd ignores the task - see gray icon
+
+
+
+
Do not notify on task switch
+
+
UNNOTIFY
+
+
Inhibits the task switch notification message that may hurt some games not designed to handle it properly
+
+
+
+
No banner
+
+
NOBANNER
+
+
Well, DxWnd celebrates itself a little by showing a very short splash screen at the beginning. If you're not happy with this, checking this flag will disable the show.
+
+
+
+
Run in window
+
+
WINDOWIZE
+
+
Checked by default, tells DxWnd to try to run the program in windowized mode, that is the essential reason why DxWnd exists. But if not checked DxWnd still performs all other functions not related to the screen size, such as time stretching, compatibility options and so forth.
+
+
+
+
Hook all DLLs
+
+
HOOKDLLS
+
+
The original DxWnd behaviour was limited to search & hook calls made by the main program directly. Checking this flag cause DxWnd to recurse in all non-system DLLs address space to hook calls there. It's necessary in all cases where the graphic engine is not directly coded in the program, but it's implemented in a separated engine DLL.
+
+
+
+
Hook OpenGL
+
+
HOOKOPENGL
+
+
Enables OpenGL API hooking
+
+
+
+
Remap Client Rect
+
+
CLIENTREMAPPING
+
+
Enabled by default, makes DxWnd remap the window client coordinates so that the program receives the same values as if the program was running in fullscreen mode.
+
+
+
+
Hot patch (obfuscated IAT)
+
+
HOTPATCH
+
+
The original DxWnd used IAT patching to redirect API calls to the altered routines. This method has its advantages, but fails when not all API are reached because they are located in unconnected dlls, referenced by ordinal number or referenced by programs with obfuscated IAT. IAT obfuscation is a sophisticated but common enough technique to make hacker's life harder: for instance, the game executable of Doom III has an obfuscated IAT.
+
+
Checking this flag cause DxWnd to use an alternate patching technique, that is the "hot patching" that creates a detour assembly code right at the beginning of the API implementation. Once done EVERY SINGLE CALL gets intercepted no matter from where the call is made, but it isn't always possible to apply this technique. Luckily, in the vast majority of cases, they both work.
+
+
+
+
Use DLL injection
+
+
STARTDEBUG
+
+
The basic hook thecnique intercepts the first window creation event. At that time, the program may have done unwanted actions already, such as changing video mode or detecting bad conditions or crashing. Checking this flag cause the DxWnd logic to be "injected" right at the beginning of the task execution, making DxWnd able to intercepts all events. The drawback is that this only works when the task is activated from the DxWnd interface – see red icon. Another drawback is that the injection process resembles pretty much of an activation from a debugger, increasing the chances for game protections to intercept this situation and stop the program.
+
+
+
+
Hook child WindowProc
+
+
HOOKCHILDWIN
+
+
By default, DxWnd intercepts the WindowProc routine of the main window, and this is enough for its purposes. In some cases, though, this is not enough and this flag tells DxWnd to intercept and redirect the WindowProc routines of all child windows as well.
+
+
+
+
Optimize CPU (DirectX 1-7)
+
+
SAVELOAD
+
+
Optimizes the CPU load, but only for ddraw operations (DirectX1 to DirectX7)
Shows the program version and references the development team and project supporters: currently SFB7 whoever he/she might be, GHO (that is myself), Olly for having developed both OllyDBG and the disassembly library I'm using and Aqrit for so many hints, informations and pieces of code.
If this flag is not set, DxWnd ignores the task - see gray icon
+
+
+
+
Additional modules:
+
+
+
+
DxWnd's hooking logic may not notice some DLLs. In these fortunately rare cases, you can fix the issue by entering one or more module names to be added to DxWnd's search algorithm.
+
+
+
+
Hot patch (obfuscated IAT)
+
+
HOTPATCH
+
+
The original DxWnd used IAT patching to redirect API calls to the altered routines. This method has its advantages, but fails when not all API are reached because they are located in unconnected dlls, referenced by ordinal number or referenced by programs with obfuscated IAT. IAT obfuscation is a sophisticated but common enough technique to make hacker's life harder: for instance, the game executable of Doom III has an obfuscated IAT.
+
+
Checking this flag cause DxWnd to use an alternate patching technique, that is the "hot patching" that creates a detour assembly code right at the beginning of the API implementation. Once done EVERY SINGLE CALL gets intercepted no matter from where the call is made, but it isn't always possible to apply this technique. Luckily, in the vast majority of cases, they both work.
+
+
+
+
Use DLL injection
+
+
STARTDEBUG
+
+
The basic hook thecnique intercepts the first window creation event. At that time, the program may have done unwanted actions already, such as changing video mode or detecting bad conditions or crashing. Checking this flag cause the DxWnd logic to be "injected" right at the beginning of the task execution, making DxWnd able to intercepts all events. The drawback is that this only works when the task is activated from the DxWnd interface – see red icon. Another drawback is that the injection process resembles pretty much of an activation from a debugger, increasing the chances for game protections to intercept this situation and stop the program.
+
+
+
+
Hook child WindowProc
+
+
HOOKCHILDWIN
+
+
By default, DxWnd intercepts the WindowProc routine of the main window, and this is enough for its purposes. In some cases, though, this is not enough and this flag tells DxWnd to intercept and redirect the WindowProc routines of all child windows as well.
+
+
+
+
Hook all DLLs
+
+
HOOKDLLS
+
+
The original DxWnd behaviour was limited to search & hook calls made by the main program directly. Checking this flag cause DxWnd to recurse in all non-system DLLs address space to hook calls there. It's necessary in all cases where the graphic engine is not directly coded in the program, but it's implemented in a separated engine DLL.
Windows 98 was the last platform to support asynchronous disk I/O from devices such as CD-ROMs. This flag suppresses requests for asynchronous mode, avoiding errors from this operation.
+
+
+
+
Set CDROM Drive Type
+
+
CDROMDRIVETYPE
+
+
Simulates each disk device to appear as a CDROM type. This allows you to copy the content of some CDs onto a hard disk and override the disk type controls that form some very basic copy protection schemes.
+
+
+
+
Hide empty CDROM drives
+
+
HIDECDROMEMPTY
+
+
Some old games didn't handle the possibility of having multiple CDROM devices and simply look for the game in the first available CDROM. If you have physical and virtual CDROM devices in your system, it may become complicated to insert a physical CD on a virtual device (or vice versa). This flag removes any CDROM devices that don't mount a CD from the list of available devices, so that you can simply unmount all disks except for the desired one.
Some games act as if you had switched the video mode to 8BPP before starting the game, making 8BPP emulation useless. This option tells the game that the desktop setting is in 8BPP mode already.
DxWnd is a Win32 hooker that intercepts and alter the behavior of window messages and APIs by means of event interception and code injection directed to the configured tasks in order to get a proper behavior of fullscreen programs, but in a windowed environment... too complicated? Well, actually DxWnd is a tool that does its best to let you run fullscreen applications in a window.
+
+
Is that all? Well, no, not really..... Taking advantage of the hooked logic injected in the application, DxWnd does some more little tricks, that fall in two general categories: making your program more compatible to different environments and altering its time flow. So, that makes some old programs able to run on modern platforms (well, at least sometimes...) and to increase or decrease the game speed at your will. Have you always been a complete nerd with FPS? Here comes your revenge: bullet time wherever you need it!
+
+
What is DxWnd for?
+
+
Let's start with the first one. Once upon a time (in the IT clock, that means a few years ago) people used to have clumsy PCs that in a slow and single-threaded environment tried to do their best to impress their owner with strength demonstrations, usually trying to move colored pixels on the screen in the fastest possible way. That custom was named videogaming, and implied using all tricky ways to improve the system performances. One common way to do that, was to hijack all hardware resources and dedicate them for this single purpose, of course disabling any attempt to run parallel tasks in other portions of the screen: the classic example being any videogame developed for Win95 and further.
+
+
Now, you guys may ask yourselves why should all this time be passed away and PC increased their power by a 100x times more, to keep playing the very same game in the very same environment. Someone is calling you on a chat? A new email message is arrived? You want to browse the net meanwhile? Something is happening on your favorite social network or MMPORPG? Forget about it! You're currently dealing with a task that wants 100% of your attention, even if it uses 1% of your PC power. So, why not attempting to push this old and invasive application within a window of its own?
+
+
That's what DxWnd is mainly for: let fullscreen applications run pretending they're still in a fullscreen context, but actually within their own separate window. And, taking advantage of the code hooking needed to do so, in some case it may even happen that things are further improved, but we'll see this later.
+
+
A second certain fact is the technological evolution that has turned games from different windows operating systems (through Windows 95 to current Windows 8), CPU architectures (16, 32, 64 bits) and from old and tricky directdraw support to recent 3D libraries like direct3d 8/9/10/11, and OpenGL. This evolution has left some victims behind: a lot of wonderful games are no longer supported in the current environment, even despite the efforts Microsoft is making to support legacy. In some cases, DxWnd is crucial to recover these old glories of the past.
+
+
Why develop DxWnd?
+
+
Now the second question: why someone should ever bother to develop a thing like this? This is different story. I started looking for a window-izer for a specific purpose: not having a dual monitor PC at home, I was looking for a way to debug fullscreen videogames. Looking in the net resources, I got references to an Asian (Japanese?) DxWnd project that seemed discontinued, but left an old copy of the C++ sources (unfortunately, not the most recent release) to be downloaded. After that, there were several attempts to translate and improve the program, but none shared the sources again. When I opened the project trying to understand the basic principle, I found that it was incredibly simple and yet sophisticated, acting I think in a very close way as virus or anti-virus programs do.
+
+
So I just thought it was such a pity that this incredible piece of artwork of C++ programming could be left discontinued, and then I decided to “adopt” the project and continue it, even if in the meanwhile I bought a second monitor for my domestic PC. And for the same reason, I published the source code on SourceForge, a proper location for any open source piece of coding, and I encourage anyone to join the project and extend it further on. And let me thank again the mysterious coder whose only trail left to make a reference is SFB7: whoever you are, SFB7 (if this was your nick), thank you.
+
+
From the time I published the first DxWnd releases, then, a lot of improvements have been made, most of them involving sophisticated techniques that I learnt from several great teachers, coming from SourceForge, CodeProject and anywhere else in the net. Thank you all, open source supporters!
+
+
How does DxWnd work?
+
+
Well, actually there are several different ways you may write a fullscreen application, and that's why there are corresponding different ways to handle it hence some annoying configuration to do before.
+
Please, bear in mind that DxWnd is still an experimental program, and then its configuration is still a little clumsy. This aspect will be improved and simplified at proper time, later on.
+
+
Anyway, these are the basic principles of the DxWnd behavior:
+
+
+
DxWnd DOES NOT alter in any way the behavior of your software (either system or applications) when not active. When turned off, everything behaves as if DxWnd never run on your machine, or never existed at all.
+
DxWnd DOES alter the behavior of your application software when running: it hooks custom code that changes the applications' behavior, hopefully in a positive way, but you never know. It's possible that because of hacks to the directdraw or other system code there might be annoying effects such as frozen screen, unresponsive keyboard and so on. Be patient and maybe you'll find a good game setting to play without side effects.
+
This is tricky: unless you need code injection support (this will be explained later) when running, DxWnd affects ALL games in the shown list, no matter whether the cursor is highlighting a particular one, or if you started your game outside the DxWnd interface. That's why you need not activate the game from the DxWnd menu, but you could keep managing it as usual (clicking on desktop icons, shortcuts or whatsoever). So, remember this: whenever DxWnd is running, it impacts on ANY game it is configured on its game list, no matter if you didn't start it from DxWnd interface.
+
Again, DxWnd is currently coded to make ONE SINGLE game working at a time, even if it could be possible to start and intercept more than one in parallel. In some cases, the games work together, but unpredictable things happen for instance when you try to control more than one game at a time. Maybe one day it will make it possible to play more games in parallel, but so far that feature is unsupported, so DxWnd is operating on one game (the fist started up) while the others will not be effected and should start normally in their original fullscreen mode.
+
+
+
DxWnd stores ALL its settings on a couple of configuration files (dxwnd.ini for almost everything, and dxwnd.reg for altered registry keys configuration) in the very same folder where dxwnd.exe and the hooker dxwnd.dll are located. No info is written in the registry or anywhere else in the system. No installation procedure is required, just copy the files where you like better, create your own shortcut entries wherever you like and, whenever you're satisfied with some DxWnd setting, just back-up the configuration by simply copying the dxwnd.ini file somewhere else. Also, keep in mind that ALL changes are written on disk just when DxWnd exits safely, so whenever it crashes your configuration changes are certain to be lost.
+
+
From release 2.02.22, then, it's also possible to export and import single pieces of configuration to separate files, so that people are encouraged to share working game configurations by sharing these files only.
DxWnd can set some special keys (Alt-Fn) to trigger special actions, storing the key association in the DxWnd.ini file. This flag enables the hot keys definitions. If unchecked, all hot keys are disabled for this program.
+
+
+
+
Intercept Alt-F4 key
+
+
HANDLEALTF4
+
+
Intercepts the Alt-F4 key in the message processing loop to immediately terminate the program, avoiding any programmed exit procedure (out-tro, savegame warnings, ads...). Of course, IF the game is doing the message processing loop!
Sets the DxWnd GUI language. The format is as follows:
+
+
lang=<specification>
+
+
The following languages are supported:
+
+
+
EN – english (default language)
+
CN – chinese
+
IT – italian
+
+
+
When you set a lang=<specification> specification DxWnd looks for and loads the resources in the Resources_<specification>.dll file, so anyone could build and use his own language pack.
+
+
lang=default disables resource loading and the program uses the default and built-in English pack.
+
+
lang=automatic makes DxWnd search for the current UI language and try to map it to the available language packs. If no corresponding pack is available, it switches to the default (English) behavior.
+
+
This setting is always overridden by a /lang=<specification> argument line specification.
Opens the dxwnd.log logfile of the selected application, if existing. Beware that in order to do so, you should “associate” the log file extension to your preferred text editor before.
+
+
+
+
Delete
+
+
Deletes the logfile of the selected application, if existing.
This works as a global flag that enables/disables all subsequent traces. If unchecked, no output is written. If checked, error messages, plus the specific messages related to other flags (see below) are written in the dxwnd.log file in the program's execution directory.
+
+
+
+
DxWnd hacks
+
+
???
+
+
Enables the operation logging of all significant events that DxWnd performs to bring the fullscreen program in windowed mode.
+
+
+
+
DirectDraw trace
+
+
???
+
+
Enables the operation logging of DirectDraw operations.
+
+
+
+
Direct3D trace
+
+
???
+
+
Enables the operation logging of Direct3D operations.
+
+
+
+
DirectX full trace
+
+
???
+
+
Enables extended logging of all DirectX operations, no matter whether they are related to fullscreen / windowed mode or not.
+
+
+
+
Win Events
+
+
???
+
+
Enables logging of all Window messages intercepted in the application's queues, together with events that are generated or processed internally by the Peek/GetMessage APIs.
+
+
+
+
Cursor / Mouse
+
+
???
+
+
Enables extended logging of all cursor or mouse related operations.
+
** BEWARE ** some old games don't mind the possibility of concurrent use and perform mouse/cursor operations in close loops, so that this type of log can quickly grow quite big in size. In this case, consider the possibility to slow down the program by using the “Slow Down” flag.
+
+
+
+
Import Table
+
+
???
+
+
Enables extended logging of the Import Table as seen by the DxWnd program. This can be quite useful to analyse and troubleshoot uncommon executables (e.g. when copy protections are applied).
+
+
+
+
Debug
+
+
???
+
+
Writes some more detailed information for diagnostic purposes.
+
+
+
+
Registry op.
+
+
???
+
+
Enables the operation logging of registry operations.
+
+
+
+
Hook op.
+
+
???
+
+
Enables the operation logging of hooking operations.
This works as a global flag that enables/disables all subsequent traces. If unchecked, no output is written. If checked, error messages, plus the specific messages related to other flags (see below) are written in the dxwnd.log file in the program's execution directory.
The user defined program name, to allow you to label your application with an evocative naming, possibly including qualifiers, versioning etc. If unset, DxWnd will insert here the task filename.
+
+
+
+
Path
+
+
+
+
The pathname of the task to be activated / hooked.
+
+
+
+
Launch
+
+
+
+
In some cases, the program to be hooked can't be run by launching itself directly, but needs arguments or other envoronment elements provided by some frontend father program. To simplify the program activation, the frontend pathname can be written here: when set, the run command does not run the path in the field above, but this one.
+
+
+
+
Module
+
+
+
+
In some occasional cases, some dlls may get unnoticed to the DxWnd hooking logic. In these fortunately rare cases, you have a chance to make the program working by referencing here one or more module names to be added at the DxWnd search algorithm.
In theory, a fullscreen message should not expect several messages that are impossible to receive, such as border sizing, taskbar events and so forth. Some programs are not properly coded to react to such "impossible" messages and may show falfuncions. This flag causes potentially harmful and meaningless messages to be suppressed.
If you save a configuration with any text in the Virtual registry, the Main tab will add an icon with an appearance of an exclamation mark in a speech bubble to the far right of the Launch field:
By default, DxWnd detects OpenGL APIs within the standard OpenGL32.dll library. The field allow to set a different filename for any custom OpenGL implementation that may refer to a different library name.
The following flags have an effect only when the "run in window" option is selected (with the WINDOWIZE flag).
+
+
+
+
Keep aspect ratio
+
+
KEEPASPECTRATIO
+
+
When the window is resized, the aspect ratio set by the window initial size is preserved (by default the 4:3 aspect ratio such as 800x600).
+
+
Selecting a fake fullscreen mode calculates the aspect ratio according to the window's initial aspect ratio. This way, you can have fake fullscreen modes with ratios other than 4:3 - for example, set a width of 16 and a height of 9 to fill a 16:9 widescreen monitor.
+
+
+
+
Window initial position & size
+
+
+
+
Four values for the initial X, Y coordinates of the upperleft window corner and the window width and height. All values are referred to the window client area rather than the outside border. The values are used depending on the Position selection: for "X, Y" coordinates they are all used, for "Desktop center" DxWnd automatically centers the position and uses only the height and width, and in the remaining fake-fullscreen modes the height and width are used only as a reference for the desired aspect ratio when "Keep aspect ratio" (the KEEPASPECTRATIO flag) is set (if it has not been set, the height and width are ignored).
+
+
+
+
Position
+
+
+
+
A selection of 4 possible cases:
+
+
X, Y coordinates: the window is placed at the chosen coordinates
+
Desktop center: the window is centered on the screen, and only the width and height fields are used.
+
Desktop work area: the window occupies the whole screen but the bottom taskbar.
+
Desktop: the window occupies the whole screen, as if it was fullscreen (a.k.a. Fake-fullscreen mode)
+
+
+
Note that the first two modes are windowed modes, while the last two modes can be considered fake fullscreen modes. This is because the behavior of the KEEPASPECTRATIO flag changes along with this classification.
Tries to pause the program by lowering each thread priority to the minimum.
+
+
+
+
Resume
+
+
Restore threads priorities.
+
+
+
+
Kill
+
+
Kills the last process activated by the DxWnd interface. Very useful to get rid of games gone crazy because of DxWnd that refuse to terminate themselves.
Exports the highlighted program configuration to a file.
+
+
+
+
Kill
+
+
Kills the corresponding program. Differently from the File -> Process -> Kill command, this command would not kill the currently active program, but the selected one, no matter whether it was managed by dxWnd or not. This is the reason why sometimes the first Kill command may fail and this one is in general more reliable, at the cost of selecting the proper entry.
If you save a configuration with any text in the Virtual registry, the Main tab will add an icon with an appearance of a stack of blue cubes to the immediate right of the Launch field:
Screen resolution affects the resolutions detected by the application. There is a choice of the following values:
+
+
+
+
SVGA modes
+
+
SUPPORTSVGA
+
+
The classic 4:3 screen resolutions starting from 320x200 up to 1280x800.
+
+
+
+
HDMI modes
+
+
SUPPORTHDMI
+
+
The typical 16:9 resolutions from 640x360 up to 1980x1080.
+
+
+
+
Monitor native modes
+
+
NATIVERES
+
+
Whatever resolution is returned from the video card.
+
+
+
+
Limit resolution
+
+
LIMITSCREENRES
+
+
Disables any resolution higher than the selected value. By default, the choice is "unlimited", that means no resolution is disabled.
+
+
+
+
+
+
Note that 320x200 resolution is typically no longer supported, but it is not a problem to emulate it in window and this resolution is necessary to run some older games.
DxWnd injects in the controlled application some special keys that might be useful:
+
+
+
+
cliptoggle
+
+
When the “Force cursor clipping” option is ON, this key toggles the clipping region ON and OFF so that you can exit the game area and control other tasks or move/resize your game window.
+
+
+
+
refresh
+
+
Forces a surface repaint. Some old games didn't even consider the possibility of a task overriding the game area, so they don't repaint when they should. I know this sounds a little “technicality”, but if your game screen gets dirty, try this key to fix it.
+
+
+
+
logtoggle
+
+
Toggles logging ON/OFF. Since painting operations can be quite verbose, toggling the log can be a useful trick to get information about a specific program's activity without having to browse tons of log lines.
+
+
+
+
plocktoggle
+
+
Toggle position locking: when the Windows – Lock win Coordinates flag is set, the window can't be moved or resized, unless you toggle this behaviour OFF, do the change and lock the position again to ON.
+
+
+
+
fpstoggle
+
+
Toggle the FPS display ON and OFF.
+
+
+
+
timefast/timeslow
+
+
Increase / decrease the timeshift multiply factor when the time stretching option is set.
+
+
+
+
altf4
+
+
This key is the well known quit command for any task. If the application doesn't react quickly enough to your command, you could set the “Intercept Alt-F4 key” option to cause DxWnd to immediately quit the program.
+
+
+
+
timetoggle
+
+
When time stretching is enabled, this key toggles the time stretching feature entirely OFF and ON. It's useful to play part of the program at a normal speed.
DxWnd comes with a nice and simple Graphic User Interface: when started, it shows a form pretty muck like the one in the following picture:
+
+
+
+
In the main window there is the list of hooked programs: DxWnd can currently handle up to 256. Trying to add more than that will give an error message. Keep in mind that DxWnd bundles contain a export subfolder where all supported games have their own default configuration ready to be imported, but because of the program absolute path value, these entries will actually work only after updating the path with the proper local value.
+
As shown in the picture, each configuration line includes an icon which color tells the general status of the program, as follows:
+
+
+
+
+
+
blank icon: the configuration refers to a not existent program's path, so that the entry won't work unless the path is corrected.
+
+
+
+
+
+
grey icon: the hook is not enabled: this program can be activated by the DxWnd menu, but won't be windowed.
+
+
+
+
+
+
green icon: the hook is enabled and the program will be windowed when run either from the DxWnd interface or however else.
+
+
+
+
+
+
red icon: the program requires code injection, then it will need to be activated from the DxWnd interface only.
+
+
+
+
+
+
You can activate command either via the top menu, or by right clicking on a row in the application list.
+
+
DxWnd is also able to operate iconized in the System Tray, from where it shows its state (either IDLE, READY or RUNNING) and run a few useful commands.
+
DxWnd detects the video settings when is started, and compares it to the current value after killing a task or terminating itself: in case it finds differences, it prompts you asking whether you want the previous screen setting to be restored. This is quite useful to handle all the games that terminates without restoring the previous setting, as it may happen when they die abnormally.
The Time Slider shows the current time stretching value, refreshing it periodically each one second. It also allow the user to alter the time stretching factor by grabbing the slider (click on the slider with the left button and keep it pressed) and moving it to left or to right:
+
+
+
+
The time stretching factors shown below the slider are related to the coarse (default) time resolution. If the fine time adjustment flag is set, the leftmost slider position corresponds approx. To x2 and the rightmost to approx. :2
If this option is checked, DxWnd tries to emulate an accelerated (xn) or decelerated (:n) time flow. The value set in the listbox is the initial value, that can be altered by means of the time control slider in the time panel. When checked, DxWnd stretches time in timing API such as GetSystemTime(), the query performance APIs and the Sleep APIs, that are the most used ways to control a program timing.
+
+
+
+
Show time stretch
+
+
SHOWTIMESTRETCH
+
+
When checked, the time stretch ratio is drawn as an overlay of the program client area, in a corner of the screen and periodically and randomly moved to other cornes whenever it is updated.
+
+
+
+
Fine time adjust
+
+
FINETIMING
+
+
When checked, the time stretch ratio coarse becomes finer, from a 1.5 (50%)ratio to a 1.1 (10%) ratio for each tick. This allows a better and finer control of timing, despite the more limited range (about 0.5x up to 2.0x).
+
+
+
+
Intercept RDTSC opcode
+
+
INTERCEPTRDTSC
+
+
Program timing is usually determined by system calls that can be easily and safely hooked to stretch the flow of time. There is one possible exception, however: when the program embeds in its assembly the RDTSC assembly instruction opcodes that directly access the hardware clock. This timing value can still be intercepted and manipulated, but using a more delicate technique that is searching for the assembly code and replacing it with specific calls. This is why I preferred to leave this possibility with a dedicated flag to be activated when necessary. The flag should be set whenever adjusting the time stretching option does not alter the time flow.
+
+
+
+
Stretch timers
+
+
STRETCHTIMERS
+
+
When checked, the window timers are stretched, namely the user32.dll timers set by SetTimer and the multimiedia timers in winmm.dll set by timeSetEvent().
D3d9.dll comes in different versions depending on the platform: on older windows releases it exports the Direct3DCreate API, while in more recent versions there are many further exported calls. The flag suppresses the additional entries.
+
+
+
+
Textures not power of 2 fix
+
+
NOPOWER2FIX
+
+
Some games don't properly check whether the hardware could manage textures that are not a power of 2 in size (e.g. 16, 32, 64, 128 bits). If textures of a different size are processed by hardware without this capability, you get diagonal effects on the rendered image. The option fixes this problem.
+
+
+
+
Clean ZBUFFER @0.0 fix
+
+
ZBUFFER0CLEAN
+
+
Some games don't properly clear the zeta buffer between frames, producing effects like wrong z-ordering of surfaces. This flag fixes this problem.
+
+
+
+
Clean ZBUFFER @1.0 fix
+
+
ZBUFFERCLEAN
+
+
Some games don't properly clear the zeta buffer between frames, producing effects like wrong z-ordering of surfaces. This flag fixes this problem. It is similar to ZBUFFER0CLEAN, but it works in different contexts.
+
+
+
+
Bypass font unsupported api
+
+
FONTBYPASS
+
+
Some games may attempt to manage old font styles that were present by default on legacy platforms and are no longer supported. This flag simulates a success operation to let the program continue. Of course, the font will be wrong, but Windows will approximate the choice with the most similar available font.
+
+
+
+
Set single core process affinity
+
+
SINGLEPROCAFFINITY
+
+
Some games are not properly synchronized to run on physically separated multiple core CPUs, or simply don't properly handle powerful CPUs. This option sets the program's core affinity so that the program is run by a single core (the first one).
+
+
+
+
Set last core affinity
+
+
USELASTCORE
+
+
Same as SINGLEPROCAFFINITY, but picks the last CPU core.
+
+
+
+
Suppress d3d9 extensions
+
+
duplicate entry? ???
+
+
???
+
+
+
+
Suppress IME
+
+
SUPPRESSIME
+
+
The flag tries to suppress IME windows, though that is not fully working yet!
+
+
+
+
Handle exceptions
+
+
HANDLEEXCEPTIONS
+
+
Setting this flag causes DxWnd to set its own exception handler that tries (and often succeds!) to fix sevral common exceptions such as the divide by zero exception of old games that were trying to calculate the CPU speed.
+
+
+
+
Limit available resources
+
+
LIMITRESOURCES
+
+
Makes the query for available resources (either RAM, hard disk free space and so on) to return a limited value: some old games can't handle a very big integer number and see it as a negative value, refusing to start.
Initializes the game window with a title bar and resizeable borders.
+
+
+
+
Prevent Win Maximize
+
+
PREVENTMAXIMIZE
+
+
Some modern games don't actually go in fullscreen mode, but just make the window occupy the whole screen. The option intercepts Windows messages and user32 calls to avoid changing the window position and size to make it a full-screen window.
+
+
+
+
Lock win coordinates
+
+
LOCKWINPOS
+
+
Intercepts messages and calls that the program makes to himself to chenge its own window coordinates. In this way, though, the game window becomes fixed in position and size.
+
+
+
+
Lock win style
+
+
LOCKWINSTYLE
+
+
Intercepts messages and calls that the program makes to himself to chenge its own windowstyle.
+
+
+
+
Recover screen mode
+
+
RECOVERSCREENMODE
+
+
Sets the screen mode to registry default settings. In general, DxWnd intercepts any attempt to change display settings and prevents unwanted operations, but still some programs have display settings instructions before DxWnd could possibly intercept them (e.g. before the window is created and the windows hook is invoked), so that chaanging the display settings right after is the only possible solution. Try this when other options don't work.
+
+
+
+
Refresh on win resize
+
+
REFRESHONRESIZE
+
+
Any decently written windows application should take care of refreshing the screen primary surface when resized, and most fullscreen games do it. Some don't (they were not supposed to ever be resized, actually). This flag is to force a refresh (useful for “Uprising”).
+
+
+
+
Fix Parent Window
+
+
FIXPARENTWIN
+
+
Typically, a game is started with an invisible program window, and then created a separate and child window for handling the graphic. Some games don't use the child window, but they rather use the parent one. In this case, the parent window becomes visible, then needs to be properly resized. It's experimental, for now, but seems to be able to manage successfully several tough games: Solaris, SleepWalker, Sid Meier's Sim Golf, the Worms series...
+
+
+
+
Modal Style
+
+
MODALSTYLE
+
+
When "Fix Window Frame Style" is set, a borderless and titleless modal style is chosen instead of the default one.
+
+
+
+
Force win resize
+
+
FORCEWINRESIZE
+
+
Experimental (and not working very well so far): should force the processing of window resizing messages so that the window can be resized by dragging borders.
+
+
+
+
Hide multi-monitor config
+
+
HIDEMULTIMONITOR
+
+
Makes the program ignore that there are multiple monitors in your system configuration, giving informations about the primary monitor only.
+
+
+
+
Wallpaper mode
+
+
WALLPAPERMODE
+
+
Experimental – forces the program Z-order to the lowest level so that it runs below any other task, like an active wallpaper.
+
+
+
+
Fix window frame in D3D
+
+
FIXD3DFRAME
+
+
Tries to avoid D3D to render on the whole window surface including the window border. It activates a small trick that cause the program to render to a child modal surface within the main window borders.
+
+
+
+
Don't move D3D rendering window
+
+
NOWINDOWMOVE
+
+
Do not try to update the window position and size on D3D rendering. In some cases, the window may be movable but the rendering area does not move with it. In these case, avoid moving the window at all. It is an experimental feature and doesn't always work.
+
+
+
+
Suppress child process creation
+
+
SUPPRESSCHILD
+
+
Suppressing the birth of child processes is necessary whenever the task is running child processes as video players, splash screens or similar things. In this case, hooking more than one process may be difficult and not worth the result.
+
+
+
+
Hide desktop background
+
+
HIDEDESKTOP
+
+
Starts the windowized program together with four black borderless windows that surround it entirely giving a better feeling of concentration. The whole idea was borrowed from "Mr. Hide": https://sourceforge.net/projects/mrhyde/
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/help/css/base.css b/build/help/css/base.css
new file mode 100644
index 0000000..e3b8b2d
--- /dev/null
+++ b/build/help/css/base.css
@@ -0,0 +1,111 @@
+body {
+ background-color: #fff;
+ overflow: auto;
+ width: 100%;
+}
+
+.clear {
+ border: 0;
+ clear: both;
+ margin: 0;
+ padding: 0;
+}
+
+#topic_header, #topic_footer,
+#toc_header, #toc_footer {
+ padding: 10px;
+}
+
+#topic_content,
+#toc_content{
+ margin: 10px;
+}
+
+/* Backgrounds */
+
+#topic_header {
+ background: #fff url(../img/header-bg.png) repeat-x left top;
+ border-bottom: 1px solid #ccc;
+ margin-bottom: 15px;
+}
+
+#topic_footer{
+ background: #fff url(../img/footer-bg.png) repeat-x left top;
+ margin-top: 20px;
+}
+
+/* Topic */
+
+#topic_header #topic_header_content {
+ float: left;
+}
+
+#topic_header #topic_header_nav {
+ float: right;
+}
+
+#topic_header #topic_header_nav img {
+ margin-left: 5px;
+}
+
+#topic_header a,
+#topic_footer a,
+#search_results a,
+#popupMenu a {
+ color: #333;
+ text-decoration: none;
+}
+
+#topic_header a:hover,
+#topic_footer a:hover,
+#search_results a:hover,
+#popupMenu a:hover{
+ text-decoration: underline;
+}
+
+#topic_header h1 {
+ color: #333;
+ font-size: 18px;
+}
+
+#topic_footer {
+ font-size: 11px;
+}
+
+#topic_breadcrumb {
+ font-size: 11px;
+}
+
+/* Popup */
+
+#popupMenu {
+ background-color: #eee;
+ border: 1px solid #999;
+ position: absolute;
+ padding: 5px;
+ webkit-box-shadow: 0px 0px 5px #cccccc;
+ -moz-box-shadow: 0px 0px 5px #cccccc;
+ box-shadow: 0px 0px 5px #cccccc;
+}
+
+#popupMenu a{
+ display: block;
+ margin: 5px 10px 2px 5px;
+}
+
+.close-button{
+ color: #666;
+ cursor: hand;
+ cursor: pointer;
+ float: right;
+ font-size: 10px;
+ position: relative;
+ top: -5px;
+ right: -3px;
+}
+
+/* Search highlight */
+
+.highlight {
+ background-color: yellow;
+}
\ No newline at end of file
diff --git a/build/help/css/dynatree/chm/0.png b/build/help/css/dynatree/chm/0.png
new file mode 100644
index 0000000..0189cda
Binary files /dev/null and b/build/help/css/dynatree/chm/0.png differ
diff --git a/build/help/css/dynatree/chm/1.png b/build/help/css/dynatree/chm/1.png
new file mode 100644
index 0000000..01335b0
Binary files /dev/null and b/build/help/css/dynatree/chm/1.png differ
diff --git a/build/help/css/dynatree/chm/10.png b/build/help/css/dynatree/chm/10.png
new file mode 100644
index 0000000..86c1b70
Binary files /dev/null and b/build/help/css/dynatree/chm/10.png differ
diff --git a/build/help/css/dynatree/chm/11.png b/build/help/css/dynatree/chm/11.png
new file mode 100644
index 0000000..60da179
Binary files /dev/null and b/build/help/css/dynatree/chm/11.png differ
diff --git a/build/help/css/dynatree/chm/12.png b/build/help/css/dynatree/chm/12.png
new file mode 100644
index 0000000..7977cad
Binary files /dev/null and b/build/help/css/dynatree/chm/12.png differ
diff --git a/build/help/css/dynatree/chm/13.png b/build/help/css/dynatree/chm/13.png
new file mode 100644
index 0000000..2d6b99e
Binary files /dev/null and b/build/help/css/dynatree/chm/13.png differ
diff --git a/build/help/css/dynatree/chm/14.png b/build/help/css/dynatree/chm/14.png
new file mode 100644
index 0000000..c6150b5
Binary files /dev/null and b/build/help/css/dynatree/chm/14.png differ
diff --git a/build/help/css/dynatree/chm/15.png b/build/help/css/dynatree/chm/15.png
new file mode 100644
index 0000000..58f205f
Binary files /dev/null and b/build/help/css/dynatree/chm/15.png differ
diff --git a/build/help/css/dynatree/chm/16.png b/build/help/css/dynatree/chm/16.png
new file mode 100644
index 0000000..746f6c4
Binary files /dev/null and b/build/help/css/dynatree/chm/16.png differ
diff --git a/build/help/css/dynatree/chm/17.png b/build/help/css/dynatree/chm/17.png
new file mode 100644
index 0000000..e450e6b
Binary files /dev/null and b/build/help/css/dynatree/chm/17.png differ
diff --git a/build/help/css/dynatree/chm/18.png b/build/help/css/dynatree/chm/18.png
new file mode 100644
index 0000000..fae8d06
Binary files /dev/null and b/build/help/css/dynatree/chm/18.png differ
diff --git a/build/help/css/dynatree/chm/19.png b/build/help/css/dynatree/chm/19.png
new file mode 100644
index 0000000..557aa37
Binary files /dev/null and b/build/help/css/dynatree/chm/19.png differ
diff --git a/build/help/css/dynatree/chm/2.png b/build/help/css/dynatree/chm/2.png
new file mode 100644
index 0000000..3887079
Binary files /dev/null and b/build/help/css/dynatree/chm/2.png differ
diff --git a/build/help/css/dynatree/chm/20.png b/build/help/css/dynatree/chm/20.png
new file mode 100644
index 0000000..cb6845b
Binary files /dev/null and b/build/help/css/dynatree/chm/20.png differ
diff --git a/build/help/css/dynatree/chm/21.png b/build/help/css/dynatree/chm/21.png
new file mode 100644
index 0000000..bfb11c9
Binary files /dev/null and b/build/help/css/dynatree/chm/21.png differ
diff --git a/build/help/css/dynatree/chm/22.png b/build/help/css/dynatree/chm/22.png
new file mode 100644
index 0000000..17ed9c5
Binary files /dev/null and b/build/help/css/dynatree/chm/22.png differ
diff --git a/build/help/css/dynatree/chm/23.png b/build/help/css/dynatree/chm/23.png
new file mode 100644
index 0000000..1c4a863
Binary files /dev/null and b/build/help/css/dynatree/chm/23.png differ
diff --git a/build/help/css/dynatree/chm/24.png b/build/help/css/dynatree/chm/24.png
new file mode 100644
index 0000000..e91b518
Binary files /dev/null and b/build/help/css/dynatree/chm/24.png differ
diff --git a/build/help/css/dynatree/chm/25.png b/build/help/css/dynatree/chm/25.png
new file mode 100644
index 0000000..00d2d5d
Binary files /dev/null and b/build/help/css/dynatree/chm/25.png differ
diff --git a/build/help/css/dynatree/chm/26.png b/build/help/css/dynatree/chm/26.png
new file mode 100644
index 0000000..4952af6
Binary files /dev/null and b/build/help/css/dynatree/chm/26.png differ
diff --git a/build/help/css/dynatree/chm/27.png b/build/help/css/dynatree/chm/27.png
new file mode 100644
index 0000000..a61fe9b
Binary files /dev/null and b/build/help/css/dynatree/chm/27.png differ
diff --git a/build/help/css/dynatree/chm/28.png b/build/help/css/dynatree/chm/28.png
new file mode 100644
index 0000000..52160f0
Binary files /dev/null and b/build/help/css/dynatree/chm/28.png differ
diff --git a/build/help/css/dynatree/chm/29.png b/build/help/css/dynatree/chm/29.png
new file mode 100644
index 0000000..06aa97c
Binary files /dev/null and b/build/help/css/dynatree/chm/29.png differ
diff --git a/build/help/css/dynatree/chm/3.png b/build/help/css/dynatree/chm/3.png
new file mode 100644
index 0000000..b1c9413
Binary files /dev/null and b/build/help/css/dynatree/chm/3.png differ
diff --git a/build/help/css/dynatree/chm/30.png b/build/help/css/dynatree/chm/30.png
new file mode 100644
index 0000000..7b52276
Binary files /dev/null and b/build/help/css/dynatree/chm/30.png differ
diff --git a/build/help/css/dynatree/chm/31.png b/build/help/css/dynatree/chm/31.png
new file mode 100644
index 0000000..02283db
Binary files /dev/null and b/build/help/css/dynatree/chm/31.png differ
diff --git a/build/help/css/dynatree/chm/32.png b/build/help/css/dynatree/chm/32.png
new file mode 100644
index 0000000..875843c
Binary files /dev/null and b/build/help/css/dynatree/chm/32.png differ
diff --git a/build/help/css/dynatree/chm/33.png b/build/help/css/dynatree/chm/33.png
new file mode 100644
index 0000000..d64f137
Binary files /dev/null and b/build/help/css/dynatree/chm/33.png differ
diff --git a/build/help/css/dynatree/chm/34.png b/build/help/css/dynatree/chm/34.png
new file mode 100644
index 0000000..a6d94c5
Binary files /dev/null and b/build/help/css/dynatree/chm/34.png differ
diff --git a/build/help/css/dynatree/chm/35.png b/build/help/css/dynatree/chm/35.png
new file mode 100644
index 0000000..dfc87bf
Binary files /dev/null and b/build/help/css/dynatree/chm/35.png differ
diff --git a/build/help/css/dynatree/chm/36.png b/build/help/css/dynatree/chm/36.png
new file mode 100644
index 0000000..ce6235b
Binary files /dev/null and b/build/help/css/dynatree/chm/36.png differ
diff --git a/build/help/css/dynatree/chm/37.png b/build/help/css/dynatree/chm/37.png
new file mode 100644
index 0000000..0120330
Binary files /dev/null and b/build/help/css/dynatree/chm/37.png differ
diff --git a/build/help/css/dynatree/chm/38.png b/build/help/css/dynatree/chm/38.png
new file mode 100644
index 0000000..5334fae
Binary files /dev/null and b/build/help/css/dynatree/chm/38.png differ
diff --git a/build/help/css/dynatree/chm/39.png b/build/help/css/dynatree/chm/39.png
new file mode 100644
index 0000000..06e446b
Binary files /dev/null and b/build/help/css/dynatree/chm/39.png differ
diff --git a/build/help/css/dynatree/chm/4.png b/build/help/css/dynatree/chm/4.png
new file mode 100644
index 0000000..6e5cfc0
Binary files /dev/null and b/build/help/css/dynatree/chm/4.png differ
diff --git a/build/help/css/dynatree/chm/40.png b/build/help/css/dynatree/chm/40.png
new file mode 100644
index 0000000..6d744db
Binary files /dev/null and b/build/help/css/dynatree/chm/40.png differ
diff --git a/build/help/css/dynatree/chm/41.png b/build/help/css/dynatree/chm/41.png
new file mode 100644
index 0000000..476edf4
Binary files /dev/null and b/build/help/css/dynatree/chm/41.png differ
diff --git a/build/help/css/dynatree/chm/5.png b/build/help/css/dynatree/chm/5.png
new file mode 100644
index 0000000..1df634f
Binary files /dev/null and b/build/help/css/dynatree/chm/5.png differ
diff --git a/build/help/css/dynatree/chm/6.png b/build/help/css/dynatree/chm/6.png
new file mode 100644
index 0000000..947d9c4
Binary files /dev/null and b/build/help/css/dynatree/chm/6.png differ
diff --git a/build/help/css/dynatree/chm/7.png b/build/help/css/dynatree/chm/7.png
new file mode 100644
index 0000000..a362886
Binary files /dev/null and b/build/help/css/dynatree/chm/7.png differ
diff --git a/build/help/css/dynatree/chm/8.png b/build/help/css/dynatree/chm/8.png
new file mode 100644
index 0000000..5bcd3ec
Binary files /dev/null and b/build/help/css/dynatree/chm/8.png differ
diff --git a/build/help/css/dynatree/chm/9.png b/build/help/css/dynatree/chm/9.png
new file mode 100644
index 0000000..3b4991d
Binary files /dev/null and b/build/help/css/dynatree/chm/9.png differ
diff --git a/build/help/css/dynatree/chm/icons.gif b/build/help/css/dynatree/chm/icons.gif
new file mode 100644
index 0000000..c0ccac1
Binary files /dev/null and b/build/help/css/dynatree/chm/icons.gif differ
diff --git a/build/help/css/dynatree/chm/loading.gif b/build/help/css/dynatree/chm/loading.gif
new file mode 100644
index 0000000..251df05
Binary files /dev/null and b/build/help/css/dynatree/chm/loading.gif differ
diff --git a/build/help/css/dynatree/chm/ui.dynatree.css b/build/help/css/dynatree/chm/ui.dynatree.css
new file mode 100644
index 0000000..29679b4
--- /dev/null
+++ b/build/help/css/dynatree/chm/ui.dynatree.css
@@ -0,0 +1,440 @@
+/*******************************************************************************
+ * Tree container
+ */
+ul.dynatree-container
+{
+ font-family: tahoma, arial, helvetica;
+ font-size: 10pt; /* font size should not be too big */
+ white-space: nowrap;
+ padding: 3px;
+ margin: 0; /* issue 201 */
+ background-color: white;
+ border: 1px dotted gray;
+ overflow: auto;
+ height: 100%; /* issue 263 */
+}
+
+ul.dynatree-container ul
+{
+ padding: 0 0 0 16px;
+ margin: 0;
+}
+
+ul.dynatree-container li
+{
+ list-style-image: none;
+ list-style-position: outside;
+ list-style-type: none;
+ -moz-background-clip:border;
+ -moz-background-inline-policy: continuous;
+ -moz-background-origin: padding;
+ background-attachment: scroll;
+ background-color: transparent;
+ background-repeat: repeat-y;
+ background-image: url("vline.gif");
+ background-position: 0 0;
+ /*
+ background-image: url("icons_96x256.gif");
+ background-position: -80px -64px;
+ */
+ margin: 0;
+ padding: 1px 0 0 0;
+}
+/* Suppress lines for last child node */
+ul.dynatree-container li.dynatree-lastsib
+{
+ background-image: none;
+}
+/* Suppress lines if level is fixed expanded (option minExpandLevel) */
+ul.dynatree-no-connector > li
+{
+ background-image: none;
+}
+
+/* Style, when control is disabled */
+.ui-dynatree-disabled ul.dynatree-container
+{
+ opacity: 0.5;
+/* filter: alpha(opacity=50); /* Yields a css warning */
+ background-color: silver;
+}
+
+/*******************************************************************************
+ * Common icon definitions
+ */
+span.dynatree-empty,
+span.dynatree-vline,
+span.dynatree-connector,
+span.dynatree-expander,
+span.dynatree-icon,
+span.dynatree-checkbox,
+span.dynatree-radio,
+span.dynatree-drag-helper-img,
+#dynatree-drop-marker
+{
+ width: 16px;
+ height: 16px;
+/* display: -moz-inline-box; /* @ FF 1+2 removed for issue 221 */
+/* -moz-box-align: start; /* issue 221 */
+ display: inline-block; /* Required to make a span sizeable */
+ vertical-align: top;
+ background-repeat: no-repeat;
+ background-position: left;
+ background-image: url("icons.gif");
+ background-position: 0 0;
+}
+
+/** Used by 'icon' node option: */
+ul.dynatree-container img
+{
+ width: 16px;
+ height: 16px;
+ margin-left: 3px;
+ vertical-align: top;
+ border-style: none;
+}
+
+
+/*******************************************************************************
+ * Lines and connectors
+ */
+
+span.dynatree-connector
+{
+ background-position: -16px -64px;
+}
+
+/*******************************************************************************
+ * Expander icon
+ * Note: IE6 doesn't correctly evaluate multiples class names,
+ * so we create combined class names that can be used in the CSS.
+ *
+ * Prefix: dynatree-exp-
+ * 1st character: 'e': expanded, 'c': collapsed
+ * 2nd character (optional): 'd': lazy (Delayed)
+ * 3rd character (optional): 'l': Last sibling
+ */
+
+span.dynatree-expander
+{
+ background-position: 0px -80px;
+ cursor: pointer;
+}
+.dynatree-exp-cl span.dynatree-expander /* Collapsed, not delayed, last sibling */
+{
+ background-position: 0px -96px;
+}
+.dynatree-exp-cd span.dynatree-expander /* Collapsed, delayed, not last sibling */
+{
+ background-position: -64px -80px;
+}
+.dynatree-exp-cdl span.dynatree-expander /* Collapsed, delayed, last sibling */
+{
+ background-position: -64px -96px;
+}
+.dynatree-exp-e span.dynatree-expander, /* Expanded, not delayed, not last sibling */
+.dynatree-exp-ed span.dynatree-expander /* Expanded, delayed, not last sibling */
+{
+ background-position: -32px -80px;
+}
+.dynatree-exp-el span.dynatree-expander, /* Expanded, not delayed, last sibling */
+.dynatree-exp-edl span.dynatree-expander /* Expanded, delayed, last sibling */
+{
+ background-position: -32px -96px;
+}
+.dynatree-loading span.dynatree-expander /* 'Loading' status overrides all others */
+{
+ background-position: 0 0;
+ background-image: url("loading.gif");
+}
+
+
+/*******************************************************************************
+ * Checkbox icon
+ */
+span.dynatree-checkbox
+{
+ margin-left: 3px;
+ background-position: 0px -32px;
+}
+span.dynatree-checkbox:hover
+{
+ background-position: -16px -32px;
+}
+
+.dynatree-partsel span.dynatree-checkbox
+{
+ background-position: -64px -32px;
+}
+.dynatree-partsel span.dynatree-checkbox:hover
+{
+ background-position: -80px -32px;
+}
+
+.dynatree-selected span.dynatree-checkbox
+{
+ background-position: -32px -32px;
+}
+.dynatree-selected span.dynatree-checkbox:hover
+{
+ background-position: -48px -32px;
+}
+
+/*******************************************************************************
+ * Radiobutton icon
+ * This is a customization, that may be activated by overriding the 'checkbox'
+ * class name as 'dynatree-radio' in the tree options.
+ */
+span.dynatree-radio
+{
+ margin-left: 3px;
+ background-position: 0px -48px;
+}
+span.dynatree-radio:hover
+{
+ background-position: -16px -48px;
+}
+
+.dynatree-partsel span.dynatree-radio
+{
+ background-position: -64px -48px;
+}
+.dynatree-partsel span.dynatree-radio:hover
+{
+ background-position: -80px -48px;
+}
+
+.dynatree-selected span.dynatree-radio
+{
+ background-position: -32px -48px;
+}
+.dynatree-selected span.dynatree-radio:hover
+{
+ background-position: -48px -48px;
+}
+
+/*******************************************************************************
+ * Node type icon
+ * Note: IE6 doesn't correctly evaluate multiples class names,
+ * so we create combined class names that can be used in the CSS.
+ *
+ * Prefix: dynatree-ico-
+ * 1st character: 'e': expanded, 'c': collapsed
+ * 2nd character (optional): 'f': folder
+ */
+
+span.dynatree-icon /* Default icon */
+{
+ margin-left: 3px;
+ background-position: 0px 0px;
+}
+
+.dynatree-ico-cf span.dynatree-icon /* Collapsed Folder */
+{
+ background-position: 0px -16px;
+}
+
+.dynatree-ico-ef span.dynatree-icon /* Expanded Folder */
+{
+ background-position: -64px -16px;
+}
+
+/* Status node icons */
+
+.dynatree-statusnode-wait span.dynatree-icon
+{
+ background-image: url("loading.gif");
+}
+
+.dynatree-statusnode-error span.dynatree-icon
+{
+ background-position: 0px -112px;
+/* background-image: url("ltError.gif");*/
+}
+
+/*******************************************************************************
+ * Node titles
+ */
+
+/* @Chrome: otherwise hit area of node titles is broken (issue 133)
+ Removed again for issue 165; (133 couldn't be reproduced) */
+span.dynatree-node
+{
+/* display: -moz-inline-box; /* issue 133, 165, 172, 192. removed for issue 221*/
+/* -moz-box-align: start; /* issue 221 */
+/* display: inline-block; /* Required to make a span sizeable */
+}
+
+
+/* Remove blue color and underline from title links */
+ul.dynatree-container a
+/*, ul.dynatree-container a:visited*/
+{
+ color: black; /* inherit doesn't work on IE */
+ text-decoration: none;
+ vertical-align: top;
+ margin: 0px;
+ margin-left: 3px;
+/* outline: 0; /* @ Firefox, prevent dotted border after click */
+}
+
+ul.dynatree-container a:hover
+{
+/* text-decoration: underline; */
+ background-color: #F2F7FD; /* light blue */
+ border-color: #B8D6FB; /* darker light blue */
+}
+
+span.dynatree-node a
+{
+ font-size: 10pt; /* required for IE, quirks mode */
+ display: inline-block; /* Better alignment, when title contains */
+/* vertical-align: top;*/
+ padding-left: 3px;
+ padding-right: 3px; /* Otherwise italic font will be outside bounds */
+ /* line-height: 16px; /* should be the same as img height, in case 16 px */
+}
+span.dynatree-folder a
+{
+ font-weight: bold;
+}
+
+ul.dynatree-container a:focus,
+span.dynatree-focused a:link /* @IE */
+{
+ background-color: #EFEBDE; /* gray */
+}
+
+span.dynatree-has-children a
+{
+}
+
+span.dynatree-expanded a
+{
+}
+
+span.dynatree-selected a
+{
+ color: green;
+ font-style: italic;
+}
+
+span.dynatree-active a
+{
+ background-color: #3169C6 !important;
+ color: white !important; /* @ IE6 */
+}
+
+/*******************************************************************************
+ * Drag'n'drop support
+ */
+
+/*** Helper object ************************************************************/
+div.dynatree-drag-helper
+{
+}
+div.dynatree-drag-helper a
+{
+ border: 1px solid gray;
+ background-color: white;
+ padding-left: 5px;
+ padding-right: 5px;
+ opacity: 0.8;
+}
+span.dynatree-drag-helper-img
+{
+ /*
+ position: relative;
+ left: -16px;
+ */
+}
+div.dynatree-drag-helper /*.dynatree-drop-accept*/
+{
+
+/* border-color: green;
+ background-color: red;*/
+}
+div.dynatree-drop-accept span.dynatree-drag-helper-img
+{
+ background-position: -32px -112px;
+}
+div.dynatree-drag-helper.dynatree-drop-reject
+{
+ border-color: red;
+}
+div.dynatree-drop-reject span.dynatree-drag-helper-img
+{
+ background-position: -16px -112px;
+}
+
+/*** Drop marker icon *********************************************************/
+
+#dynatree-drop-marker
+{
+ width: 24px;
+ position: absolute;
+ background-position: 0 -128px;
+ margin: 0;
+/* border: 1px solid red; */
+}
+#dynatree-drop-marker.dynatree-drop-after,
+#dynatree-drop-marker.dynatree-drop-before
+{
+ width:64px;
+ background-position: 0 -144px;
+}
+#dynatree-drop-marker.dynatree-drop-copy
+{
+ background-position: -64px -128px;
+}
+#dynatree-drop-marker.dynatree-drop-move
+{
+ background-position: -64px -128px;
+}
+
+/*** Source node while dragging ***********************************************/
+
+span.dynatree-drag-source
+{
+ /* border: 1px dotted gray; */
+ background-color: #e0e0e0;
+}
+span.dynatree-drag-source a
+{
+ color: gray;
+}
+
+/*** Target node while dragging cursor is over it *****************************/
+
+span.dynatree-drop-target
+{
+ /*border: 1px solid gray;*/
+}
+span.dynatree-drop-target a
+{
+}
+span.dynatree-drop-target.dynatree-drop-accept a
+{
+ /*border: 1px solid green;*/
+ background-color: #3169C6 !important;
+ color: white !important; /* @ IE6 */
+ text-decoration: none;
+}
+span.dynatree-drop-target.dynatree-drop-reject
+{
+ /*border: 1px solid red;*/
+}
+span.dynatree-drop-target.dynatree-drop-after a
+{
+}
+
+
+/*******************************************************************************
+ * Custom node classes (sample)
+ */
+
+span.custom1 a
+{
+ background-color: maroon;
+ color: yellow;
+}
diff --git a/build/help/css/dynatree/chm/vline.gif b/build/help/css/dynatree/chm/vline.gif
new file mode 100644
index 0000000..1b00ae5
Binary files /dev/null and b/build/help/css/dynatree/chm/vline.gif differ
diff --git a/build/help/css/dynatree/folder/0.png b/build/help/css/dynatree/folder/0.png
new file mode 100644
index 0000000..0189cda
Binary files /dev/null and b/build/help/css/dynatree/folder/0.png differ
diff --git a/build/help/css/dynatree/folder/1.png b/build/help/css/dynatree/folder/1.png
new file mode 100644
index 0000000..01335b0
Binary files /dev/null and b/build/help/css/dynatree/folder/1.png differ
diff --git a/build/help/css/dynatree/folder/10.png b/build/help/css/dynatree/folder/10.png
new file mode 100644
index 0000000..86c1b70
Binary files /dev/null and b/build/help/css/dynatree/folder/10.png differ
diff --git a/build/help/css/dynatree/folder/11.png b/build/help/css/dynatree/folder/11.png
new file mode 100644
index 0000000..60da179
Binary files /dev/null and b/build/help/css/dynatree/folder/11.png differ
diff --git a/build/help/css/dynatree/folder/12.png b/build/help/css/dynatree/folder/12.png
new file mode 100644
index 0000000..7977cad
Binary files /dev/null and b/build/help/css/dynatree/folder/12.png differ
diff --git a/build/help/css/dynatree/folder/13.png b/build/help/css/dynatree/folder/13.png
new file mode 100644
index 0000000..2d6b99e
Binary files /dev/null and b/build/help/css/dynatree/folder/13.png differ
diff --git a/build/help/css/dynatree/folder/14.png b/build/help/css/dynatree/folder/14.png
new file mode 100644
index 0000000..c6150b5
Binary files /dev/null and b/build/help/css/dynatree/folder/14.png differ
diff --git a/build/help/css/dynatree/folder/15.png b/build/help/css/dynatree/folder/15.png
new file mode 100644
index 0000000..58f205f
Binary files /dev/null and b/build/help/css/dynatree/folder/15.png differ
diff --git a/build/help/css/dynatree/folder/16.png b/build/help/css/dynatree/folder/16.png
new file mode 100644
index 0000000..746f6c4
Binary files /dev/null and b/build/help/css/dynatree/folder/16.png differ
diff --git a/build/help/css/dynatree/folder/17.png b/build/help/css/dynatree/folder/17.png
new file mode 100644
index 0000000..e450e6b
Binary files /dev/null and b/build/help/css/dynatree/folder/17.png differ
diff --git a/build/help/css/dynatree/folder/18.png b/build/help/css/dynatree/folder/18.png
new file mode 100644
index 0000000..fae8d06
Binary files /dev/null and b/build/help/css/dynatree/folder/18.png differ
diff --git a/build/help/css/dynatree/folder/19.png b/build/help/css/dynatree/folder/19.png
new file mode 100644
index 0000000..557aa37
Binary files /dev/null and b/build/help/css/dynatree/folder/19.png differ
diff --git a/build/help/css/dynatree/folder/2.png b/build/help/css/dynatree/folder/2.png
new file mode 100644
index 0000000..3887079
Binary files /dev/null and b/build/help/css/dynatree/folder/2.png differ
diff --git a/build/help/css/dynatree/folder/20.png b/build/help/css/dynatree/folder/20.png
new file mode 100644
index 0000000..cb6845b
Binary files /dev/null and b/build/help/css/dynatree/folder/20.png differ
diff --git a/build/help/css/dynatree/folder/21.png b/build/help/css/dynatree/folder/21.png
new file mode 100644
index 0000000..bfb11c9
Binary files /dev/null and b/build/help/css/dynatree/folder/21.png differ
diff --git a/build/help/css/dynatree/folder/22.png b/build/help/css/dynatree/folder/22.png
new file mode 100644
index 0000000..17ed9c5
Binary files /dev/null and b/build/help/css/dynatree/folder/22.png differ
diff --git a/build/help/css/dynatree/folder/23.png b/build/help/css/dynatree/folder/23.png
new file mode 100644
index 0000000..1c4a863
Binary files /dev/null and b/build/help/css/dynatree/folder/23.png differ
diff --git a/build/help/css/dynatree/folder/24.png b/build/help/css/dynatree/folder/24.png
new file mode 100644
index 0000000..e91b518
Binary files /dev/null and b/build/help/css/dynatree/folder/24.png differ
diff --git a/build/help/css/dynatree/folder/25.png b/build/help/css/dynatree/folder/25.png
new file mode 100644
index 0000000..00d2d5d
Binary files /dev/null and b/build/help/css/dynatree/folder/25.png differ
diff --git a/build/help/css/dynatree/folder/26.png b/build/help/css/dynatree/folder/26.png
new file mode 100644
index 0000000..4952af6
Binary files /dev/null and b/build/help/css/dynatree/folder/26.png differ
diff --git a/build/help/css/dynatree/folder/27.png b/build/help/css/dynatree/folder/27.png
new file mode 100644
index 0000000..a61fe9b
Binary files /dev/null and b/build/help/css/dynatree/folder/27.png differ
diff --git a/build/help/css/dynatree/folder/28.png b/build/help/css/dynatree/folder/28.png
new file mode 100644
index 0000000..52160f0
Binary files /dev/null and b/build/help/css/dynatree/folder/28.png differ
diff --git a/build/help/css/dynatree/folder/29.png b/build/help/css/dynatree/folder/29.png
new file mode 100644
index 0000000..06aa97c
Binary files /dev/null and b/build/help/css/dynatree/folder/29.png differ
diff --git a/build/help/css/dynatree/folder/3.png b/build/help/css/dynatree/folder/3.png
new file mode 100644
index 0000000..b1c9413
Binary files /dev/null and b/build/help/css/dynatree/folder/3.png differ
diff --git a/build/help/css/dynatree/folder/30.png b/build/help/css/dynatree/folder/30.png
new file mode 100644
index 0000000..7b52276
Binary files /dev/null and b/build/help/css/dynatree/folder/30.png differ
diff --git a/build/help/css/dynatree/folder/31.png b/build/help/css/dynatree/folder/31.png
new file mode 100644
index 0000000..02283db
Binary files /dev/null and b/build/help/css/dynatree/folder/31.png differ
diff --git a/build/help/css/dynatree/folder/32.png b/build/help/css/dynatree/folder/32.png
new file mode 100644
index 0000000..875843c
Binary files /dev/null and b/build/help/css/dynatree/folder/32.png differ
diff --git a/build/help/css/dynatree/folder/33.png b/build/help/css/dynatree/folder/33.png
new file mode 100644
index 0000000..d64f137
Binary files /dev/null and b/build/help/css/dynatree/folder/33.png differ
diff --git a/build/help/css/dynatree/folder/34.png b/build/help/css/dynatree/folder/34.png
new file mode 100644
index 0000000..a6d94c5
Binary files /dev/null and b/build/help/css/dynatree/folder/34.png differ
diff --git a/build/help/css/dynatree/folder/35.png b/build/help/css/dynatree/folder/35.png
new file mode 100644
index 0000000..dfc87bf
Binary files /dev/null and b/build/help/css/dynatree/folder/35.png differ
diff --git a/build/help/css/dynatree/folder/36.png b/build/help/css/dynatree/folder/36.png
new file mode 100644
index 0000000..ce6235b
Binary files /dev/null and b/build/help/css/dynatree/folder/36.png differ
diff --git a/build/help/css/dynatree/folder/37.png b/build/help/css/dynatree/folder/37.png
new file mode 100644
index 0000000..0120330
Binary files /dev/null and b/build/help/css/dynatree/folder/37.png differ
diff --git a/build/help/css/dynatree/folder/38.png b/build/help/css/dynatree/folder/38.png
new file mode 100644
index 0000000..5334fae
Binary files /dev/null and b/build/help/css/dynatree/folder/38.png differ
diff --git a/build/help/css/dynatree/folder/39.png b/build/help/css/dynatree/folder/39.png
new file mode 100644
index 0000000..06e446b
Binary files /dev/null and b/build/help/css/dynatree/folder/39.png differ
diff --git a/build/help/css/dynatree/folder/4.png b/build/help/css/dynatree/folder/4.png
new file mode 100644
index 0000000..6e5cfc0
Binary files /dev/null and b/build/help/css/dynatree/folder/4.png differ
diff --git a/build/help/css/dynatree/folder/40.png b/build/help/css/dynatree/folder/40.png
new file mode 100644
index 0000000..6d744db
Binary files /dev/null and b/build/help/css/dynatree/folder/40.png differ
diff --git a/build/help/css/dynatree/folder/41.png b/build/help/css/dynatree/folder/41.png
new file mode 100644
index 0000000..476edf4
Binary files /dev/null and b/build/help/css/dynatree/folder/41.png differ
diff --git a/build/help/css/dynatree/folder/5.png b/build/help/css/dynatree/folder/5.png
new file mode 100644
index 0000000..1df634f
Binary files /dev/null and b/build/help/css/dynatree/folder/5.png differ
diff --git a/build/help/css/dynatree/folder/6.png b/build/help/css/dynatree/folder/6.png
new file mode 100644
index 0000000..947d9c4
Binary files /dev/null and b/build/help/css/dynatree/folder/6.png differ
diff --git a/build/help/css/dynatree/folder/7.png b/build/help/css/dynatree/folder/7.png
new file mode 100644
index 0000000..a362886
Binary files /dev/null and b/build/help/css/dynatree/folder/7.png differ
diff --git a/build/help/css/dynatree/folder/8.png b/build/help/css/dynatree/folder/8.png
new file mode 100644
index 0000000..5bcd3ec
Binary files /dev/null and b/build/help/css/dynatree/folder/8.png differ
diff --git a/build/help/css/dynatree/folder/9.png b/build/help/css/dynatree/folder/9.png
new file mode 100644
index 0000000..3b4991d
Binary files /dev/null and b/build/help/css/dynatree/folder/9.png differ
diff --git a/build/help/css/dynatree/folder/icons.gif b/build/help/css/dynatree/folder/icons.gif
new file mode 100644
index 0000000..a58eb93
Binary files /dev/null and b/build/help/css/dynatree/folder/icons.gif differ
diff --git a/build/help/css/dynatree/folder/loading.gif b/build/help/css/dynatree/folder/loading.gif
new file mode 100644
index 0000000..251df05
Binary files /dev/null and b/build/help/css/dynatree/folder/loading.gif differ
diff --git a/build/help/css/dynatree/folder/ui.dynatree.css b/build/help/css/dynatree/folder/ui.dynatree.css
new file mode 100644
index 0000000..29679b4
--- /dev/null
+++ b/build/help/css/dynatree/folder/ui.dynatree.css
@@ -0,0 +1,440 @@
+/*******************************************************************************
+ * Tree container
+ */
+ul.dynatree-container
+{
+ font-family: tahoma, arial, helvetica;
+ font-size: 10pt; /* font size should not be too big */
+ white-space: nowrap;
+ padding: 3px;
+ margin: 0; /* issue 201 */
+ background-color: white;
+ border: 1px dotted gray;
+ overflow: auto;
+ height: 100%; /* issue 263 */
+}
+
+ul.dynatree-container ul
+{
+ padding: 0 0 0 16px;
+ margin: 0;
+}
+
+ul.dynatree-container li
+{
+ list-style-image: none;
+ list-style-position: outside;
+ list-style-type: none;
+ -moz-background-clip:border;
+ -moz-background-inline-policy: continuous;
+ -moz-background-origin: padding;
+ background-attachment: scroll;
+ background-color: transparent;
+ background-repeat: repeat-y;
+ background-image: url("vline.gif");
+ background-position: 0 0;
+ /*
+ background-image: url("icons_96x256.gif");
+ background-position: -80px -64px;
+ */
+ margin: 0;
+ padding: 1px 0 0 0;
+}
+/* Suppress lines for last child node */
+ul.dynatree-container li.dynatree-lastsib
+{
+ background-image: none;
+}
+/* Suppress lines if level is fixed expanded (option minExpandLevel) */
+ul.dynatree-no-connector > li
+{
+ background-image: none;
+}
+
+/* Style, when control is disabled */
+.ui-dynatree-disabled ul.dynatree-container
+{
+ opacity: 0.5;
+/* filter: alpha(opacity=50); /* Yields a css warning */
+ background-color: silver;
+}
+
+/*******************************************************************************
+ * Common icon definitions
+ */
+span.dynatree-empty,
+span.dynatree-vline,
+span.dynatree-connector,
+span.dynatree-expander,
+span.dynatree-icon,
+span.dynatree-checkbox,
+span.dynatree-radio,
+span.dynatree-drag-helper-img,
+#dynatree-drop-marker
+{
+ width: 16px;
+ height: 16px;
+/* display: -moz-inline-box; /* @ FF 1+2 removed for issue 221 */
+/* -moz-box-align: start; /* issue 221 */
+ display: inline-block; /* Required to make a span sizeable */
+ vertical-align: top;
+ background-repeat: no-repeat;
+ background-position: left;
+ background-image: url("icons.gif");
+ background-position: 0 0;
+}
+
+/** Used by 'icon' node option: */
+ul.dynatree-container img
+{
+ width: 16px;
+ height: 16px;
+ margin-left: 3px;
+ vertical-align: top;
+ border-style: none;
+}
+
+
+/*******************************************************************************
+ * Lines and connectors
+ */
+
+span.dynatree-connector
+{
+ background-position: -16px -64px;
+}
+
+/*******************************************************************************
+ * Expander icon
+ * Note: IE6 doesn't correctly evaluate multiples class names,
+ * so we create combined class names that can be used in the CSS.
+ *
+ * Prefix: dynatree-exp-
+ * 1st character: 'e': expanded, 'c': collapsed
+ * 2nd character (optional): 'd': lazy (Delayed)
+ * 3rd character (optional): 'l': Last sibling
+ */
+
+span.dynatree-expander
+{
+ background-position: 0px -80px;
+ cursor: pointer;
+}
+.dynatree-exp-cl span.dynatree-expander /* Collapsed, not delayed, last sibling */
+{
+ background-position: 0px -96px;
+}
+.dynatree-exp-cd span.dynatree-expander /* Collapsed, delayed, not last sibling */
+{
+ background-position: -64px -80px;
+}
+.dynatree-exp-cdl span.dynatree-expander /* Collapsed, delayed, last sibling */
+{
+ background-position: -64px -96px;
+}
+.dynatree-exp-e span.dynatree-expander, /* Expanded, not delayed, not last sibling */
+.dynatree-exp-ed span.dynatree-expander /* Expanded, delayed, not last sibling */
+{
+ background-position: -32px -80px;
+}
+.dynatree-exp-el span.dynatree-expander, /* Expanded, not delayed, last sibling */
+.dynatree-exp-edl span.dynatree-expander /* Expanded, delayed, last sibling */
+{
+ background-position: -32px -96px;
+}
+.dynatree-loading span.dynatree-expander /* 'Loading' status overrides all others */
+{
+ background-position: 0 0;
+ background-image: url("loading.gif");
+}
+
+
+/*******************************************************************************
+ * Checkbox icon
+ */
+span.dynatree-checkbox
+{
+ margin-left: 3px;
+ background-position: 0px -32px;
+}
+span.dynatree-checkbox:hover
+{
+ background-position: -16px -32px;
+}
+
+.dynatree-partsel span.dynatree-checkbox
+{
+ background-position: -64px -32px;
+}
+.dynatree-partsel span.dynatree-checkbox:hover
+{
+ background-position: -80px -32px;
+}
+
+.dynatree-selected span.dynatree-checkbox
+{
+ background-position: -32px -32px;
+}
+.dynatree-selected span.dynatree-checkbox:hover
+{
+ background-position: -48px -32px;
+}
+
+/*******************************************************************************
+ * Radiobutton icon
+ * This is a customization, that may be activated by overriding the 'checkbox'
+ * class name as 'dynatree-radio' in the tree options.
+ */
+span.dynatree-radio
+{
+ margin-left: 3px;
+ background-position: 0px -48px;
+}
+span.dynatree-radio:hover
+{
+ background-position: -16px -48px;
+}
+
+.dynatree-partsel span.dynatree-radio
+{
+ background-position: -64px -48px;
+}
+.dynatree-partsel span.dynatree-radio:hover
+{
+ background-position: -80px -48px;
+}
+
+.dynatree-selected span.dynatree-radio
+{
+ background-position: -32px -48px;
+}
+.dynatree-selected span.dynatree-radio:hover
+{
+ background-position: -48px -48px;
+}
+
+/*******************************************************************************
+ * Node type icon
+ * Note: IE6 doesn't correctly evaluate multiples class names,
+ * so we create combined class names that can be used in the CSS.
+ *
+ * Prefix: dynatree-ico-
+ * 1st character: 'e': expanded, 'c': collapsed
+ * 2nd character (optional): 'f': folder
+ */
+
+span.dynatree-icon /* Default icon */
+{
+ margin-left: 3px;
+ background-position: 0px 0px;
+}
+
+.dynatree-ico-cf span.dynatree-icon /* Collapsed Folder */
+{
+ background-position: 0px -16px;
+}
+
+.dynatree-ico-ef span.dynatree-icon /* Expanded Folder */
+{
+ background-position: -64px -16px;
+}
+
+/* Status node icons */
+
+.dynatree-statusnode-wait span.dynatree-icon
+{
+ background-image: url("loading.gif");
+}
+
+.dynatree-statusnode-error span.dynatree-icon
+{
+ background-position: 0px -112px;
+/* background-image: url("ltError.gif");*/
+}
+
+/*******************************************************************************
+ * Node titles
+ */
+
+/* @Chrome: otherwise hit area of node titles is broken (issue 133)
+ Removed again for issue 165; (133 couldn't be reproduced) */
+span.dynatree-node
+{
+/* display: -moz-inline-box; /* issue 133, 165, 172, 192. removed for issue 221*/
+/* -moz-box-align: start; /* issue 221 */
+/* display: inline-block; /* Required to make a span sizeable */
+}
+
+
+/* Remove blue color and underline from title links */
+ul.dynatree-container a
+/*, ul.dynatree-container a:visited*/
+{
+ color: black; /* inherit doesn't work on IE */
+ text-decoration: none;
+ vertical-align: top;
+ margin: 0px;
+ margin-left: 3px;
+/* outline: 0; /* @ Firefox, prevent dotted border after click */
+}
+
+ul.dynatree-container a:hover
+{
+/* text-decoration: underline; */
+ background-color: #F2F7FD; /* light blue */
+ border-color: #B8D6FB; /* darker light blue */
+}
+
+span.dynatree-node a
+{
+ font-size: 10pt; /* required for IE, quirks mode */
+ display: inline-block; /* Better alignment, when title contains */
+/* vertical-align: top;*/
+ padding-left: 3px;
+ padding-right: 3px; /* Otherwise italic font will be outside bounds */
+ /* line-height: 16px; /* should be the same as img height, in case 16 px */
+}
+span.dynatree-folder a
+{
+ font-weight: bold;
+}
+
+ul.dynatree-container a:focus,
+span.dynatree-focused a:link /* @IE */
+{
+ background-color: #EFEBDE; /* gray */
+}
+
+span.dynatree-has-children a
+{
+}
+
+span.dynatree-expanded a
+{
+}
+
+span.dynatree-selected a
+{
+ color: green;
+ font-style: italic;
+}
+
+span.dynatree-active a
+{
+ background-color: #3169C6 !important;
+ color: white !important; /* @ IE6 */
+}
+
+/*******************************************************************************
+ * Drag'n'drop support
+ */
+
+/*** Helper object ************************************************************/
+div.dynatree-drag-helper
+{
+}
+div.dynatree-drag-helper a
+{
+ border: 1px solid gray;
+ background-color: white;
+ padding-left: 5px;
+ padding-right: 5px;
+ opacity: 0.8;
+}
+span.dynatree-drag-helper-img
+{
+ /*
+ position: relative;
+ left: -16px;
+ */
+}
+div.dynatree-drag-helper /*.dynatree-drop-accept*/
+{
+
+/* border-color: green;
+ background-color: red;*/
+}
+div.dynatree-drop-accept span.dynatree-drag-helper-img
+{
+ background-position: -32px -112px;
+}
+div.dynatree-drag-helper.dynatree-drop-reject
+{
+ border-color: red;
+}
+div.dynatree-drop-reject span.dynatree-drag-helper-img
+{
+ background-position: -16px -112px;
+}
+
+/*** Drop marker icon *********************************************************/
+
+#dynatree-drop-marker
+{
+ width: 24px;
+ position: absolute;
+ background-position: 0 -128px;
+ margin: 0;
+/* border: 1px solid red; */
+}
+#dynatree-drop-marker.dynatree-drop-after,
+#dynatree-drop-marker.dynatree-drop-before
+{
+ width:64px;
+ background-position: 0 -144px;
+}
+#dynatree-drop-marker.dynatree-drop-copy
+{
+ background-position: -64px -128px;
+}
+#dynatree-drop-marker.dynatree-drop-move
+{
+ background-position: -64px -128px;
+}
+
+/*** Source node while dragging ***********************************************/
+
+span.dynatree-drag-source
+{
+ /* border: 1px dotted gray; */
+ background-color: #e0e0e0;
+}
+span.dynatree-drag-source a
+{
+ color: gray;
+}
+
+/*** Target node while dragging cursor is over it *****************************/
+
+span.dynatree-drop-target
+{
+ /*border: 1px solid gray;*/
+}
+span.dynatree-drop-target a
+{
+}
+span.dynatree-drop-target.dynatree-drop-accept a
+{
+ /*border: 1px solid green;*/
+ background-color: #3169C6 !important;
+ color: white !important; /* @ IE6 */
+ text-decoration: none;
+}
+span.dynatree-drop-target.dynatree-drop-reject
+{
+ /*border: 1px solid red;*/
+}
+span.dynatree-drop-target.dynatree-drop-after a
+{
+}
+
+
+/*******************************************************************************
+ * Custom node classes (sample)
+ */
+
+span.custom1 a
+{
+ background-color: maroon;
+ color: yellow;
+}
diff --git a/build/help/css/dynatree/folder/vline.gif b/build/help/css/dynatree/folder/vline.gif
new file mode 100644
index 0000000..1b00ae5
Binary files /dev/null and b/build/help/css/dynatree/folder/vline.gif differ
diff --git a/build/help/css/dynatree/vista/0.png b/build/help/css/dynatree/vista/0.png
new file mode 100644
index 0000000..0189cda
Binary files /dev/null and b/build/help/css/dynatree/vista/0.png differ
diff --git a/build/help/css/dynatree/vista/1.png b/build/help/css/dynatree/vista/1.png
new file mode 100644
index 0000000..01335b0
Binary files /dev/null and b/build/help/css/dynatree/vista/1.png differ
diff --git a/build/help/css/dynatree/vista/10.png b/build/help/css/dynatree/vista/10.png
new file mode 100644
index 0000000..86c1b70
Binary files /dev/null and b/build/help/css/dynatree/vista/10.png differ
diff --git a/build/help/css/dynatree/vista/11.png b/build/help/css/dynatree/vista/11.png
new file mode 100644
index 0000000..60da179
Binary files /dev/null and b/build/help/css/dynatree/vista/11.png differ
diff --git a/build/help/css/dynatree/vista/12.png b/build/help/css/dynatree/vista/12.png
new file mode 100644
index 0000000..7977cad
Binary files /dev/null and b/build/help/css/dynatree/vista/12.png differ
diff --git a/build/help/css/dynatree/vista/13.png b/build/help/css/dynatree/vista/13.png
new file mode 100644
index 0000000..2d6b99e
Binary files /dev/null and b/build/help/css/dynatree/vista/13.png differ
diff --git a/build/help/css/dynatree/vista/14.png b/build/help/css/dynatree/vista/14.png
new file mode 100644
index 0000000..c6150b5
Binary files /dev/null and b/build/help/css/dynatree/vista/14.png differ
diff --git a/build/help/css/dynatree/vista/15.png b/build/help/css/dynatree/vista/15.png
new file mode 100644
index 0000000..58f205f
Binary files /dev/null and b/build/help/css/dynatree/vista/15.png differ
diff --git a/build/help/css/dynatree/vista/16.png b/build/help/css/dynatree/vista/16.png
new file mode 100644
index 0000000..746f6c4
Binary files /dev/null and b/build/help/css/dynatree/vista/16.png differ
diff --git a/build/help/css/dynatree/vista/17.png b/build/help/css/dynatree/vista/17.png
new file mode 100644
index 0000000..e450e6b
Binary files /dev/null and b/build/help/css/dynatree/vista/17.png differ
diff --git a/build/help/css/dynatree/vista/18.png b/build/help/css/dynatree/vista/18.png
new file mode 100644
index 0000000..fae8d06
Binary files /dev/null and b/build/help/css/dynatree/vista/18.png differ
diff --git a/build/help/css/dynatree/vista/19.png b/build/help/css/dynatree/vista/19.png
new file mode 100644
index 0000000..557aa37
Binary files /dev/null and b/build/help/css/dynatree/vista/19.png differ
diff --git a/build/help/css/dynatree/vista/2.png b/build/help/css/dynatree/vista/2.png
new file mode 100644
index 0000000..3887079
Binary files /dev/null and b/build/help/css/dynatree/vista/2.png differ
diff --git a/build/help/css/dynatree/vista/20.png b/build/help/css/dynatree/vista/20.png
new file mode 100644
index 0000000..cb6845b
Binary files /dev/null and b/build/help/css/dynatree/vista/20.png differ
diff --git a/build/help/css/dynatree/vista/21.png b/build/help/css/dynatree/vista/21.png
new file mode 100644
index 0000000..bfb11c9
Binary files /dev/null and b/build/help/css/dynatree/vista/21.png differ
diff --git a/build/help/css/dynatree/vista/22.png b/build/help/css/dynatree/vista/22.png
new file mode 100644
index 0000000..17ed9c5
Binary files /dev/null and b/build/help/css/dynatree/vista/22.png differ
diff --git a/build/help/css/dynatree/vista/23.png b/build/help/css/dynatree/vista/23.png
new file mode 100644
index 0000000..1c4a863
Binary files /dev/null and b/build/help/css/dynatree/vista/23.png differ
diff --git a/build/help/css/dynatree/vista/24.png b/build/help/css/dynatree/vista/24.png
new file mode 100644
index 0000000..e91b518
Binary files /dev/null and b/build/help/css/dynatree/vista/24.png differ
diff --git a/build/help/css/dynatree/vista/25.png b/build/help/css/dynatree/vista/25.png
new file mode 100644
index 0000000..00d2d5d
Binary files /dev/null and b/build/help/css/dynatree/vista/25.png differ
diff --git a/build/help/css/dynatree/vista/26.png b/build/help/css/dynatree/vista/26.png
new file mode 100644
index 0000000..4952af6
Binary files /dev/null and b/build/help/css/dynatree/vista/26.png differ
diff --git a/build/help/css/dynatree/vista/27.png b/build/help/css/dynatree/vista/27.png
new file mode 100644
index 0000000..a61fe9b
Binary files /dev/null and b/build/help/css/dynatree/vista/27.png differ
diff --git a/build/help/css/dynatree/vista/28.png b/build/help/css/dynatree/vista/28.png
new file mode 100644
index 0000000..52160f0
Binary files /dev/null and b/build/help/css/dynatree/vista/28.png differ
diff --git a/build/help/css/dynatree/vista/29.png b/build/help/css/dynatree/vista/29.png
new file mode 100644
index 0000000..06aa97c
Binary files /dev/null and b/build/help/css/dynatree/vista/29.png differ
diff --git a/build/help/css/dynatree/vista/3.png b/build/help/css/dynatree/vista/3.png
new file mode 100644
index 0000000..b1c9413
Binary files /dev/null and b/build/help/css/dynatree/vista/3.png differ
diff --git a/build/help/css/dynatree/vista/30.png b/build/help/css/dynatree/vista/30.png
new file mode 100644
index 0000000..7b52276
Binary files /dev/null and b/build/help/css/dynatree/vista/30.png differ
diff --git a/build/help/css/dynatree/vista/31.png b/build/help/css/dynatree/vista/31.png
new file mode 100644
index 0000000..02283db
Binary files /dev/null and b/build/help/css/dynatree/vista/31.png differ
diff --git a/build/help/css/dynatree/vista/32.png b/build/help/css/dynatree/vista/32.png
new file mode 100644
index 0000000..875843c
Binary files /dev/null and b/build/help/css/dynatree/vista/32.png differ
diff --git a/build/help/css/dynatree/vista/33.png b/build/help/css/dynatree/vista/33.png
new file mode 100644
index 0000000..d64f137
Binary files /dev/null and b/build/help/css/dynatree/vista/33.png differ
diff --git a/build/help/css/dynatree/vista/34.png b/build/help/css/dynatree/vista/34.png
new file mode 100644
index 0000000..a6d94c5
Binary files /dev/null and b/build/help/css/dynatree/vista/34.png differ
diff --git a/build/help/css/dynatree/vista/35.png b/build/help/css/dynatree/vista/35.png
new file mode 100644
index 0000000..dfc87bf
Binary files /dev/null and b/build/help/css/dynatree/vista/35.png differ
diff --git a/build/help/css/dynatree/vista/36.png b/build/help/css/dynatree/vista/36.png
new file mode 100644
index 0000000..ce6235b
Binary files /dev/null and b/build/help/css/dynatree/vista/36.png differ
diff --git a/build/help/css/dynatree/vista/37.png b/build/help/css/dynatree/vista/37.png
new file mode 100644
index 0000000..0120330
Binary files /dev/null and b/build/help/css/dynatree/vista/37.png differ
diff --git a/build/help/css/dynatree/vista/38.png b/build/help/css/dynatree/vista/38.png
new file mode 100644
index 0000000..5334fae
Binary files /dev/null and b/build/help/css/dynatree/vista/38.png differ
diff --git a/build/help/css/dynatree/vista/39.png b/build/help/css/dynatree/vista/39.png
new file mode 100644
index 0000000..06e446b
Binary files /dev/null and b/build/help/css/dynatree/vista/39.png differ
diff --git a/build/help/css/dynatree/vista/4.png b/build/help/css/dynatree/vista/4.png
new file mode 100644
index 0000000..6e5cfc0
Binary files /dev/null and b/build/help/css/dynatree/vista/4.png differ
diff --git a/build/help/css/dynatree/vista/40.png b/build/help/css/dynatree/vista/40.png
new file mode 100644
index 0000000..6d744db
Binary files /dev/null and b/build/help/css/dynatree/vista/40.png differ
diff --git a/build/help/css/dynatree/vista/41.png b/build/help/css/dynatree/vista/41.png
new file mode 100644
index 0000000..476edf4
Binary files /dev/null and b/build/help/css/dynatree/vista/41.png differ
diff --git a/build/help/css/dynatree/vista/5.png b/build/help/css/dynatree/vista/5.png
new file mode 100644
index 0000000..1df634f
Binary files /dev/null and b/build/help/css/dynatree/vista/5.png differ
diff --git a/build/help/css/dynatree/vista/6.png b/build/help/css/dynatree/vista/6.png
new file mode 100644
index 0000000..947d9c4
Binary files /dev/null and b/build/help/css/dynatree/vista/6.png differ
diff --git a/build/help/css/dynatree/vista/7.png b/build/help/css/dynatree/vista/7.png
new file mode 100644
index 0000000..a362886
Binary files /dev/null and b/build/help/css/dynatree/vista/7.png differ
diff --git a/build/help/css/dynatree/vista/8.png b/build/help/css/dynatree/vista/8.png
new file mode 100644
index 0000000..5bcd3ec
Binary files /dev/null and b/build/help/css/dynatree/vista/8.png differ
diff --git a/build/help/css/dynatree/vista/9.png b/build/help/css/dynatree/vista/9.png
new file mode 100644
index 0000000..3b4991d
Binary files /dev/null and b/build/help/css/dynatree/vista/9.png differ
diff --git a/build/help/css/dynatree/vista/icons.gif b/build/help/css/dynatree/vista/icons.gif
new file mode 100644
index 0000000..6e237a0
Binary files /dev/null and b/build/help/css/dynatree/vista/icons.gif differ
diff --git a/build/help/css/dynatree/vista/loading.gif b/build/help/css/dynatree/vista/loading.gif
new file mode 100644
index 0000000..2a96840
Binary files /dev/null and b/build/help/css/dynatree/vista/loading.gif differ
diff --git a/build/help/css/dynatree/vista/ui.dynatree.css b/build/help/css/dynatree/vista/ui.dynatree.css
new file mode 100644
index 0000000..347f7f3
--- /dev/null
+++ b/build/help/css/dynatree/vista/ui.dynatree.css
@@ -0,0 +1,452 @@
+/*******************************************************************************
+ * Tree container
+ */
+ul.dynatree-container
+{
+ font-family: tahoma, arial, helvetica;
+ font-size: 10pt; /* font size should not be too big */
+ white-space: nowrap;
+ padding: 3px;
+ margin: 0; /* issue 201 */
+ background-color: white;
+ border: 1px dotted gray;
+ overflow: auto;
+ height: 100%; /* issue 263 */
+}
+
+ul.dynatree-container ul
+{
+ padding: 0 0 0 16px;
+ margin: 0;
+}
+
+ul.dynatree-container li
+{
+ list-style-image: none;
+ list-style-position: outside;
+ list-style-type: none;
+ -moz-background-clip:border;
+ -moz-background-inline-policy: continuous;
+ -moz-background-origin: padding;
+ background-attachment: scroll;
+ background-color: transparent;
+ background-position: 0 0;
+ background-repeat: repeat-y;
+ background-image: none; /* no v-lines */
+
+ margin:0;
+ padding:1px 0 0 0;
+}
+/* Suppress lines for last child node */
+ul.dynatree-container li.dynatree-lastsib
+{
+ background-image: none;
+}
+/* Suppress lines if level is fixed expanded (option minExpandLevel) */
+ul.dynatree-no-connector > li
+{
+ background-image: none;
+}
+
+/* Style, when control is disabled */
+.ui-dynatree-disabled ul.dynatree-container
+{
+ opacity: 0.5;
+/* filter: alpha(opacity=50); /* Yields a css warning */
+ background-color: silver;
+}
+
+
+/*******************************************************************************
+ * Common icon definitions
+ */
+span.dynatree-empty,
+span.dynatree-vline,
+span.dynatree-connector,
+span.dynatree-expander,
+span.dynatree-icon,
+span.dynatree-checkbox,
+span.dynatree-radio,
+span.dynatree-drag-helper-img,
+#dynatree-drop-marker
+{
+ width: 16px;
+ height: 16px;
+/* display: -moz-inline-box; /* @ FF 1+2 removed for issue 221*/
+/* -moz-box-align: start; /* issue 221 */
+ display: inline-block; /* Required to make a span sizeable */
+ vertical-align: top;
+ background-repeat: no-repeat;
+ background-position: left;
+ background-image: url("icons.gif");
+ background-position: 0 0;
+}
+
+/** Used by 'icon' node option: */
+ul.dynatree-container img
+{
+ width: 16px;
+ height: 16px;
+ margin-left: 3px;
+ vertical-align: top;
+ border-style: none;
+}
+
+
+/*******************************************************************************
+ * Lines and connectors
+ */
+
+/*
+span.dynatree-empty
+{
+}
+span.dynatree-vline
+{
+}
+*/
+span.dynatree-connector
+{
+ background-image: none;
+}
+/*
+.dynatree-lastsib span.dynatree-connector
+{
+}
+*/
+/*******************************************************************************
+ * Expander icon
+ * Note: IE6 doesn't correctly evaluate multiples class names,
+ * so we create combined class names that can be used in the CSS.
+ *
+ * Prefix: dynatree-exp-
+ * 1st character: 'e': expanded, 'c': collapsed
+ * 2nd character (optional): 'd': lazy (Delayed)
+ * 3rd character (optional): 'l': Last sibling
+ */
+
+span.dynatree-expander
+{
+ background-position: 0px -80px;
+ cursor: pointer;
+}
+span.dynatree-expander:hover
+{
+ background-position: -16px -80px;
+}
+.dynatree-exp-cl span.dynatree-expander /* Collapsed, not delayed, last sibling */
+{
+}
+.dynatree-exp-cd span.dynatree-expander /* Collapsed, delayed, not last sibling */
+{
+}
+.dynatree-exp-cdl span.dynatree-expander /* Collapsed, delayed, last sibling */
+{
+}
+.dynatree-exp-e span.dynatree-expander, /* Expanded, not delayed, not last sibling */
+.dynatree-exp-ed span.dynatree-expander, /* Expanded, delayed, not last sibling */
+.dynatree-exp-el span.dynatree-expander, /* Expanded, not delayed, last sibling */
+.dynatree-exp-edl span.dynatree-expander /* Expanded, delayed, last sibling */
+{
+ background-position: -32px -80px;
+}
+.dynatree-exp-e span.dynatree-expander:hover, /* Expanded, not delayed, not last sibling */
+.dynatree-exp-ed span.dynatree-expander:hover, /* Expanded, delayed, not last sibling */
+.dynatree-exp-el span.dynatree-expander:hover, /* Expanded, not delayed, last sibling */
+.dynatree-exp-edl span.dynatree-expander:hover /* Expanded, delayed, last sibling */
+{
+ background-position: -48px -80px;
+}
+.dynatree-loading span.dynatree-expander /* 'Loading' status overrides all others */
+{
+ background-position: 0 0;
+ background-image: url("loading.gif");
+}
+
+
+/*******************************************************************************
+ * Checkbox icon
+ */
+span.dynatree-checkbox
+{
+ margin-left: 3px;
+ background-position: 0px -32px;
+}
+span.dynatree-checkbox:hover
+{
+ background-position: -16px -32px;
+}
+
+.dynatree-partsel span.dynatree-checkbox
+{
+ background-position: -64px -32px;
+}
+.dynatree-partsel span.dynatree-checkbox:hover
+{
+ background-position: -80px -32px;
+}
+
+.dynatree-selected span.dynatree-checkbox
+{
+ background-position: -32px -32px;
+}
+.dynatree-selected span.dynatree-checkbox:hover
+{
+ background-position: -48px -32px;
+}
+
+/*******************************************************************************
+ * Radiobutton icon
+ * This is a customization, that may be activated by overriding the 'checkbox'
+ * class name as 'dynatree-radio' in the tree options.
+ */
+span.dynatree-radio
+{
+ margin-left: 3px;
+ background-position: 0px -48px;
+}
+span.dynatree-radio:hover
+{
+ background-position: -16px -48px;
+}
+
+.dynatree-partsel span.dynatree-radio
+{
+ background-position: -64px -48px;
+}
+.dynatree-partsel span.dynatree-radio:hover
+{
+ background-position: -80px -48px;
+}
+
+.dynatree-selected span.dynatree-radio
+{
+ background-position: -32px -48px;
+}
+.dynatree-selected span.dynatree-radio:hover
+{
+ background-position: -48px -48px;
+}
+
+/*******************************************************************************
+ * Node type icon
+ * Note: IE6 doesn't correctly evaluate multiples class names,
+ * so we create combined class names that can be used in the CSS.
+ *
+ * Prefix: dynatree-ico-
+ * 1st character: 'e': expanded, 'c': collapsed
+ * 2nd character (optional): 'f': folder
+ */
+
+span.dynatree-icon /* Default icon */
+{
+ margin-left: 3px;
+ background-position: 0px 0px;
+}
+
+.dynatree-has-children span.dynatree-icon /* Default icon */
+{
+/* background-position: 0px -16px; */
+}
+
+.dynatree-ico-cf span.dynatree-icon /* Collapsed Folder */
+{
+ background-position: 0px -16px;
+}
+
+.dynatree-ico-ef span.dynatree-icon /* Expanded Folder */
+{
+ background-position: -64px -16px;
+}
+
+/* Status node icons */
+
+.dynatree-statusnode-wait span.dynatree-icon
+{
+ background-image: url("loading.gif");
+}
+
+.dynatree-statusnode-error span.dynatree-icon
+{
+ background-position: 0px -112px;
+/* background-image: url("ltError.gif");*/
+}
+
+/*******************************************************************************
+ * Node titles
+ */
+
+/* @Chrome: otherwise hit area of node titles is broken (issue 133)
+ Removed again for issue 165; (133 couldn't be reproduced) */
+span.dynatree-node
+{
+/* display: -moz-inline-box; /* issue 133, 165, 172, 192. removed for issue 221 */
+/* -moz-box-align: start; /* issue 221 */
+/* display: inline-block; /* Required to make a span sizeable */
+}
+
+
+/* Remove blue color and underline from title links */
+ul.dynatree-container a
+/*, ul.dynatree-container a:visited*/
+{
+ color: black; /* inherit doesn't work on IE */
+ text-decoration: none;
+ vertical-align: top;
+ margin: 0px;
+ margin-left: 3px;
+/* outline: 0; /* @ Firefox, prevent dotted border after click */
+ /* Set transparent border to prevent jumping when active node gets a border
+ (we can do this, because this theme doesn't use vertical lines)
+ */
+ border: 1px solid white; /* Note: 'transparent' would not work in IE6 */
+
+}
+
+ul.dynatree-container a:hover
+{
+/* text-decoration: underline; */
+ background: #F2F7FD; /* light blue */
+ border-color: #B8D6FB; /* darker light blue */
+}
+
+span.dynatree-node a
+{
+ display: inline-block; /* Better alignment, when title contains */
+/* vertical-align: top;*/
+ padding-left: 3px;
+ padding-right: 3px; /* Otherwise italic font will be outside bounds */
+ /* line-height: 16px; /* should be the same as img height, in case 16 px */
+}
+span.dynatree-folder a
+{
+/* font-weight: bold; */ /* custom */
+}
+
+ul.dynatree-container a:focus,
+span.dynatree-focused a:link /* @IE */
+{
+ background-color: #EFEBDE; /* gray */
+}
+
+span.dynatree-has-children a
+{
+/* font-style: oblique; /* custom: */
+}
+
+span.dynatree-expanded a
+{
+}
+
+span.dynatree-selected a
+{
+/* color: green; */
+ font-style: italic;
+}
+
+span.dynatree-active a
+{
+ border: 1px solid #99DEFD;
+ background-color: #D8F0FA;
+}
+
+/*******************************************************************************
+ * Drag'n'drop support
+ */
+
+/*** Helper object ************************************************************/
+div.dynatree-drag-helper
+{
+}
+div.dynatree-drag-helper a
+{
+ border: 1px solid gray;
+ background-color: white;
+ padding-left: 5px;
+ padding-right: 5px;
+ opacity: 0.8;
+}
+span.dynatree-drag-helper-img
+{
+ /*
+ position: relative;
+ left: -16px;
+ */
+}
+div.dynatree-drag-helper /*.dynatree-drop-accept*/
+{
+/* border-color: green;
+ background-color: red;*/
+}
+div.dynatree-drop-accept span.dynatree-drag-helper-img
+{
+ background-position: -32px -112px;
+}
+div.dynatree-drag-helper.dynatree-drop-reject
+{
+ border-color: red;
+}
+div.dynatree-drop-reject span.dynatree-drag-helper-img
+{
+ background-position: -16px -112px;
+}
+
+/*** Drop marker icon *********************************************************/
+
+#dynatree-drop-marker
+{
+ width: 24px;
+ position: absolute;
+ background-position: 0 -128px;
+ margin: 0;
+}
+#dynatree-drop-marker.dynatree-drop-after,
+#dynatree-drop-marker.dynatree-drop-before
+{
+ width:64px;
+ background-position: 0 -144px;
+}
+#dynatree-drop-marker.dynatree-drop-copy
+{
+ background-position: -64px -128px;
+}
+#dynatree-drop-marker.dynatree-drop-move
+{
+ background-position: -64px -128px;
+}
+
+/*** Source node while dragging ***********************************************/
+
+span.dynatree-drag-source
+{
+ /* border: 1px dotted gray; */
+ background-color: #e0e0e0;
+}
+span.dynatree-drag-source a
+{
+ color: gray;
+}
+
+/*** Target node while dragging cursor is over it *****************************/
+
+span.dynatree-drop-target
+{
+ /*border: 1px solid gray;*/
+}
+span.dynatree-drop-target a
+{
+}
+span.dynatree-drop-target.dynatree-drop-accept a
+{
+ /*border: 1px solid green;*/
+ background-color: #3169C6 !important;
+ color: white !important; /* @ IE6 */
+ text-decoration: none;
+}
+span.dynatree-drop-target.dynatree-drop-reject
+{
+ /*border: 1px solid red;*/
+}
+span.dynatree-drop-target.dynatree-drop-after a
+{
+}
diff --git a/build/help/css/hnd.css b/build/help/css/hnd.css
new file mode 100644
index 0000000..e9490f4
--- /dev/null
+++ b/build/help/css/hnd.css
@@ -0,0 +1,143 @@
+/* ========== Text Styles ========== */
+hr { color: #000000}
+body, table, span.rvts0 /* Normal text */
+{
+ font-size: 10pt;
+ font-family: 'Arial', 'Helvetica', sans-serif;
+ font-style: normal;
+ font-weight: normal;
+ color: #000000;
+ text-decoration: none;
+}
+span.rvts1 /* Heading */
+{
+ font-weight: bold;
+ color: #0000ff;
+}
+span.rvts2 /* Subheading */
+{
+ font-weight: bold;
+ color: #000080;
+}
+span.rvts3 /* Keywords */
+{
+ font-style: italic;
+ color: #800000;
+}
+a.rvts4, span.rvts4 /* Jump 1 */
+{
+ color: #008000;
+ text-decoration: underline;
+}
+a.rvts5, span.rvts5 /* Jump 2 */
+{
+ color: #008000;
+ text-decoration: underline;
+}
+span.rvts6
+{
+}
+span.rvts7
+{
+ font-weight: bold;
+ color: #0000ff;
+}
+span.rvts8
+{
+ font-weight: bold;
+ color: #000080;
+}
+span.rvts9
+{
+ font-style: italic;
+ color: #800000;
+}
+a.rvts10, span.rvts10
+{
+ color: #008000;
+ text-decoration: underline;
+}
+span.rvts11
+{
+ font-size: 13pt;
+ font-weight: bold;
+}
+span.rvts12 /* Font Style */
+{
+ font-family: 'Tahoma', 'Geneva', sans-serif;
+ font-style: italic;
+ color: #c0c0c0;
+}
+a.rvts13, span.rvts13 /* Font Style */
+{
+ font-family: 'Tahoma', 'Geneva', sans-serif;
+ font-style: italic;
+ color: #6666ff;
+ text-decoration: underline;
+}
+a.rvts14, span.rvts14
+{
+ color: #0000ff;
+ text-decoration: underline;
+}
+span.rvts15
+{
+ font-family: 'Courier New', 'Courier', monospace;
+}
+span.rvts16
+{
+}
+span.rvts17
+{
+ font-family: 'Courier New', 'Courier', monospace;
+ font-style: italic;
+}
+/* ========== Para Styles ========== */
+p,ul,ol /* Paragraph Style */
+{
+ text-align: left;
+ text-indent: 0px;
+ padding: 0px 0px 0px 0px;
+ margin: 0px 0px 0px 0px;
+}
+.rvps1 /* Centered */
+{
+ text-align: center;
+}
+.rvps2
+{
+}
+.rvps3
+{
+ text-align: center;
+}
+.rvps4
+{
+ text-align: left;
+ text-indent: 0px;
+ page-break-after: avoid;
+ padding: 0px 0px 0px 0px;
+ margin: 16px 0px 4px 0px;
+}
+.rvps5 /* Paragraph Style */
+{
+ text-align: center;
+ border-color: #c0c0c0;
+ border-style: solid;
+ border-width: 1px;
+ border-right: none;
+ border-left: none;
+ padding: 2px 0px 2px 0px;
+ margin: 7px 0px 7px 0px;
+}
+.rvps6
+{
+ margin: 0px 0px 0px 24px;
+}
+/* ========== Lists ========== */
+.list0 {text-indent: 0px; margin-left: 24px; list-style-position: outside; list-style-type: decimal;}
+.list1 {text-indent: 0px; margin-left: 48px; list-style-position: outside; list-style-type: decimal;}
+.list2 {text-indent: 0px; margin-left: 24px; list-style-position: outside; list-style-type: disc;}
+.list3 {text-indent: 0px; margin-left: 48px; list-style-position: outside; list-style-type: circle;}
+.list4 {text-indent: 0px; margin-left: 48px; list-style-position: outside; list-style-type: square;}
+.list5 {text-indent: 0px; margin-left: 48px; list-style-position: outside; list-style-type: disc;}
diff --git a/build/help/css/ielte8.css b/build/help/css/ielte8.css
new file mode 100644
index 0000000..1d6f53c
--- /dev/null
+++ b/build/help/css/ielte8.css
@@ -0,0 +1,3 @@
+.ui-tabs .ui-tabs-nav {
+ padding: 0;
+}
\ No newline at end of file
diff --git a/build/help/css/reset.css b/build/help/css/reset.css
new file mode 100644
index 0000000..391d3a3
--- /dev/null
+++ b/build/help/css/reset.css
@@ -0,0 +1,48 @@
+/* http://meyerweb.com/eric/tools/css/reset/
+ v2.0 | 20110126
+ License: none (public domain)
+*/
+
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+article, aside, canvas, details, embed,
+figure, figcaption, footer, header, hgroup,
+menu, nav, output, ruby, section, summary,
+time, mark, audio, video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+ vertical-align: baseline;
+}
+img {
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+}
+table, caption, tbody, tfoot, thead, tr, th, td {
+ margin: 0;
+ font-size: 100%;
+ font: inherit;
+}
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section {
+ display: block;
+}
+blockquote, q {
+ quotes: none;
+}
+blockquote:before, blockquote:after,
+q:before, q:after {
+ content: '';
+ content: none;
+}
\ No newline at end of file
diff --git a/build/help/css/silver-theme/images/ui-bg_flat_0_aaaaaa_40x100.png b/build/help/css/silver-theme/images/ui-bg_flat_0_aaaaaa_40x100.png
new file mode 100644
index 0000000..5b5dab2
Binary files /dev/null and b/build/help/css/silver-theme/images/ui-bg_flat_0_aaaaaa_40x100.png differ
diff --git a/build/help/css/silver-theme/images/ui-bg_flat_75_ffffff_40x100.png b/build/help/css/silver-theme/images/ui-bg_flat_75_ffffff_40x100.png
new file mode 100644
index 0000000..ac8b229
Binary files /dev/null and b/build/help/css/silver-theme/images/ui-bg_flat_75_ffffff_40x100.png differ
diff --git a/build/help/css/silver-theme/images/ui-bg_glass_55_fbf9ee_1x400.png b/build/help/css/silver-theme/images/ui-bg_glass_55_fbf9ee_1x400.png
new file mode 100644
index 0000000..ad3d634
Binary files /dev/null and b/build/help/css/silver-theme/images/ui-bg_glass_55_fbf9ee_1x400.png differ
diff --git a/build/help/css/silver-theme/images/ui-bg_glass_65_ffffff_1x400.png b/build/help/css/silver-theme/images/ui-bg_glass_65_ffffff_1x400.png
new file mode 100644
index 0000000..42ccba2
Binary files /dev/null and b/build/help/css/silver-theme/images/ui-bg_glass_65_ffffff_1x400.png differ
diff --git a/build/help/css/silver-theme/images/ui-bg_glass_75_dadada_1x400.png b/build/help/css/silver-theme/images/ui-bg_glass_75_dadada_1x400.png
new file mode 100644
index 0000000..5a46b47
Binary files /dev/null and b/build/help/css/silver-theme/images/ui-bg_glass_75_dadada_1x400.png differ
diff --git a/build/help/css/silver-theme/images/ui-bg_glass_75_e6e6e6_1x400.png b/build/help/css/silver-theme/images/ui-bg_glass_75_e6e6e6_1x400.png
new file mode 100644
index 0000000..86c2baa
Binary files /dev/null and b/build/help/css/silver-theme/images/ui-bg_glass_75_e6e6e6_1x400.png differ
diff --git a/build/help/css/silver-theme/images/ui-bg_glass_95_fef1ec_1x400.png b/build/help/css/silver-theme/images/ui-bg_glass_95_fef1ec_1x400.png
new file mode 100644
index 0000000..4443fdc
Binary files /dev/null and b/build/help/css/silver-theme/images/ui-bg_glass_95_fef1ec_1x400.png differ
diff --git a/build/help/css/silver-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/build/help/css/silver-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png
new file mode 100644
index 0000000..7c9fa6c
Binary files /dev/null and b/build/help/css/silver-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ
diff --git a/build/help/css/silver-theme/images/ui-bg_inset-soft_95_fef1ec_1x100.png b/build/help/css/silver-theme/images/ui-bg_inset-soft_95_fef1ec_1x100.png
new file mode 100644
index 0000000..0e05810
Binary files /dev/null and b/build/help/css/silver-theme/images/ui-bg_inset-soft_95_fef1ec_1x100.png differ
diff --git a/build/help/css/silver-theme/images/ui-icons_222222_256x240.png b/build/help/css/silver-theme/images/ui-icons_222222_256x240.png
new file mode 100644
index 0000000..b273ff1
Binary files /dev/null and b/build/help/css/silver-theme/images/ui-icons_222222_256x240.png differ
diff --git a/build/help/css/silver-theme/images/ui-icons_2e83ff_256x240.png b/build/help/css/silver-theme/images/ui-icons_2e83ff_256x240.png
new file mode 100644
index 0000000..09d1cdc
Binary files /dev/null and b/build/help/css/silver-theme/images/ui-icons_2e83ff_256x240.png differ
diff --git a/build/help/css/silver-theme/images/ui-icons_454545_256x240.png b/build/help/css/silver-theme/images/ui-icons_454545_256x240.png
new file mode 100644
index 0000000..59bd45b
Binary files /dev/null and b/build/help/css/silver-theme/images/ui-icons_454545_256x240.png differ
diff --git a/build/help/css/silver-theme/images/ui-icons_888888_256x240.png b/build/help/css/silver-theme/images/ui-icons_888888_256x240.png
new file mode 100644
index 0000000..6d02426
Binary files /dev/null and b/build/help/css/silver-theme/images/ui-icons_888888_256x240.png differ
diff --git a/build/help/css/silver-theme/images/ui-icons_cd0a0a_256x240.png b/build/help/css/silver-theme/images/ui-icons_cd0a0a_256x240.png
new file mode 100644
index 0000000..2ab019b
Binary files /dev/null and b/build/help/css/silver-theme/images/ui-icons_cd0a0a_256x240.png differ
diff --git a/build/help/css/silver-theme/jquery-ui-1.8.12.custom.css b/build/help/css/silver-theme/jquery-ui-1.8.12.custom.css
new file mode 100644
index 0000000..d94b6b2
--- /dev/null
+++ b/build/help/css/silver-theme/jquery-ui-1.8.12.custom.css
@@ -0,0 +1,103 @@
+/*
+ * jQuery UI CSS Framework 1.8.12
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.12
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=&fwDefault=normal&fsDefault=&cornerRadius=0&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=05_inset_soft.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: ; font-size: 1em; }
+.ui-widget-content { background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
+.ui-widget-content a { color: #222222; }
+.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
+.ui-widget-header a { color: #222222; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_inset-soft_95_fef1ec_1x100.png) 50% bottom repeat-x; color: #cd0a0a; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/*
+ * jQuery UI Tabs 1.8.12
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.ui-tabs { position: relative; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.ui-tabs .ui-tabs-nav li a { float: left; padding: 2px 5px; text-decoration: none; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 10px; background: none; }
+.ui-tabs .ui-tabs-hide { display: none !important; }
diff --git a/build/help/css/toc.css b/build/help/css/toc.css
new file mode 100644
index 0000000..a8776ff
--- /dev/null
+++ b/build/help/css/toc.css
@@ -0,0 +1,71 @@
+/* -- Body -- */
+
+body {
+ overflow: hidden;
+}
+
+/* -- UI Tabs -- */
+
+ul.dynatree-container {
+ line-height: 1.5em;
+}
+
+.ui-tabs {
+ position: static;
+}
+
+#toc_header {
+ padding-bottom: 0;
+}
+
+#tabs .ui-tabs-nav {
+ border: 0;
+ border-bottom: 1px solid #ccc;
+ padding-top: 19px;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+}
+
+#tabs .ui-widget-header{
+ background: #fff url(../img/header-bg.png) left bottom repeat-x;
+}
+
+#tabs .ui-tabs-panel {
+ overflow: auto;
+ position: absolute;
+ top: 43px;
+ left: 0;
+ right: 0;
+ bottom: 0;
+}
+
+/* Search */
+
+#search_value {
+ width: 140px;
+}
+
+#search_results {
+ padding-top: 10px;
+}
+
+/* -- Tree -- */
+
+ul.dynatree-container {
+ border: 0;
+ font-family: inherit;
+ overflow: visible;
+ padding: 0;
+}
+
+/* Selection color */
+span.dynatree-active a {
+ background-color: #999999 !important;
+}
+
+/* Remove folder boldness */
+span.dynatree-folder a {
+ font-weight: normal;
+}
\ No newline at end of file
diff --git a/build/help/dxwndlogs.html b/build/help/dxwndlogs.html
new file mode 100644
index 0000000..3d16634
--- /dev/null
+++ b/build/help/dxwndlogs.html
@@ -0,0 +1,117 @@
+
+
+
+ dxwnd logs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This global flag enables/disables all subsequent traces. If unchecked, DxWnd doesn't write any output to the logs. If checked, DxWnd writes output to the dxwnd.log file in the program's working directory, recording error messages as well as the specific messages related to other flags (see logged info).
Enables the operation logging of all significant events that DxWnd performs to bring the fullscreen program in windowed mode.
+
+
+
+
DirectDraw trace
+
+
???
+
+
Enables the operation logging of DirectDraw operations.
+
+
+
+
Direct3D trace
+
+
???
+
+
Enables the operation logging of Direct3D operations.
+
+
+
+
DirectX full trace
+
+
???
+
+
Enables extended logging of all DirectX operations, no matter whether they are related to fullscreen / windowed mode or not.
+
+
+
+
Win Events
+
+
???
+
+
Enables logging of all Window messages intercepted in the application's queues, together with events that are generated or processed internally by the Peek/GetMessage APIs.
+
+
+
+
Cursor / Mouse
+
+
???
+
+
Enables extended logging of all cursor or mouse related operations.
+
** BEWARE ** some old games don't mind the possibility of concurrent use and perform mouse/cursor operations in close loops, so that this type of log can quickly grow quite big in size. In this case, consider the possibility to slow down the program by using the “Slow Down” flag.
+
+
+
+
Import Table
+
+
???
+
+
Enables extended logging of the Import Table as seen by the DxWnd program. This can be quite useful to analyse and troubleshoot uncommon executables (e.g. when copy protections are applied).
+
+
+
+
Debug
+
+
???
+
+
Writes some more detailed information for diagnostic purposes.
+
+
+
+
Registry op.
+
+
???
+
+
Enables the operation logging of registry operations.
+
+
+
+
Hook op.
+
+
???
+
+
Enables the operation logging of hooking operations.
Activate a tweak in the palette handling that causes all colors to be replaced with the corresponding grayscale color. It works only on 8BPP palettized games or while emulating 16BPP on a 32BPP desktop.
+
+
+
+
Set 16BPP RGB565 encoding
+
+
USERGB565
+
+
By default, DxWnd emulates 16BPP color with RGB555 encoding. The option forces RGB565. This option only impacts the video in emulation mode and with 16BPP color depth.
+
+
+
+
Lock Sys Colors
+
+
LOCKSYSCOLORS
+
+
???
+
+
+
+
Lock reserved palette entries
+
+
???
+
+
???
+
+
+
+
Disable setting gamma ramp
+
+
DISABLEGAMMARAMP
+
+
Prevents the API from altering the default gamma ramp, making the screen lighter or darker. Since the API affects the whole screen, this flag is mainly useful to prevent a game's gamma settings from affecting your entire desktop.
Starts DxWnd initially in the IDLE state, so that it doesn't affect the programs until you manually issue a Hook > Start command.
+
+
+
+
/C:<filename>
+
+
Uses the <filename> configuration file instead of the default config.ini file. In any case, the configuration file must be located in DxWnd's working directory.
+
+
+
+
/lang=<xx>
+
+
If you need a localized version of DxWnd, this argument causes DxWnd to load all resource text from the external DLLs, given in Resources_<xx>.dll.
The dxwnd.ini configuration file holds an almost complete configuration for DxWnd (some registry tricks need to be stored in the dxwnd.reg file instead), but needs no manual editing since almost all of its contained information comes from the DxWnd GUI.
+
+
There are a few important exceptions for settings that you might want to edit manually.
Compensate for X,Y mouse coordinates when the window is moved or resized. It should be typically set for most games.
+
+
+
+
Position message processing
+
+
???
+
+
???
+
+
+
+
Force cursor clipping
+
+
CLIPCURSOR
+
+
Set hardware cursor clipping within the window's region. This greatly improves the game's playability in some cases (namely, the Dungeon Keeper series).
+
+
+
+
Keep cursor within window
+
+
KEEPCURSORWITHIN
+
+
Avoid moving the cursor outside the window area. This was used as a “Cursor OFF” directive in some games.
+
+
+
+
Keep cursor fixed
+
+
KEEPCURSORFIXED
+
+
Inhibits the SetCursorPos() API. In some cases, it affects the program's behavior (e.g. the game Necrodrome).
+
+
+
+
Intercept GDI cursor clipping
+
+
ENABLECLIPPING
+
+
Disables GDI clipping, avoiding unpleasant effects such as preventing the mouse from moving within the whole window.
+
+
+
+
Fix WM_NCHITTEST
+
+
FIXNCHITTEST
+
+
Fixes the WM_NCHITTEST message X,Y coordinates. When the window's border behaves strangely, set this flag to correct the position of the mouse cursor.
+
+
+
+
Slow down mouse polling
+
+
SLOW
+
+
Some old programs have this bad habit of continuously looping through the mouse status polling with no delay, hogging 100% of CPU resources. This flag introduces a minimal and unnoticeable delay between mouse polls, saving CPU resources.
+
+
+
+
Release mouse outside window
+
+
RELEASEMOUSE
+
+
Normally, when the mouse is placed outside the window and the window keeps receiving mouse messages, the mouse cursor is placed on the corresponding window border and the program performs video scrolling or so forth. There are some cases in which you don't want this to happen: for instance, when you want to alternate between two programs, such as a game and a keyboard simulator. Checking this flag causes DxWnd to detect the "mouse outside window" condition, and in this case it places the cursor right in the middle of the screen, where it is supposed to cause no harm.
On recent platforms, low desktop color depths still work but are no longer supported. This menu lets you ask the system to set the current color depth to 8, 16, 24 or 32 bits per pixel. Some color/resolution combinations may not be supported.
Some badly programmed games (namely the "Cossaks" series) don't follow the specification to blit changes on screen, they just get the primary surface memory address and keep writing there. The option forces a periodic blitting of the primary surface on screen even if the game doesn't request it. You want a second example? It has not been easy to find, but "Crush! Deluxe" suffers the same problem.
+
+
+
+
switch VIDEO to SYSTEM on fail
+
+
VIDEOTOSYSTEMMEM
+
+
When this option is set and a CreateSurface fails because of video memory shortage, DxWnd backs this up by creating the surface on memory. Oddly enough, some games expect to notice this by themselves and work correctly only when the option is NOT set.
+
+
+
+
Suppress DX common errors
+
+
SUPPRESSDXERRORS
+
+
Some games running in windowed mode generate sporadic errors that wouldn't prevent the game to work, but terminate the application. This option makes directx methods return OK condition in such common cases.
+
+
+
+
Make Backbuf attachable
+
+
BACKBUFATTACH
+
+
Alters the size specification of the created backbuffer so that it copes with the actual primary surface, so that it may be attachable to a ZBUFFER surface. It makes “Dave Mirra Freestyle BMX” playable.
+
+
+
+
Blit from Backbuffer
+
+
BLITFROMBACKBUFFER
+
+
Some games (the Sims, the only one so far....) read graphic data from the primary surface. When the game runs windowed, the approximation introduced in a scaled window brings cumulative error that appear as a progressive "smearing" effect. In this case, it might be better to read the data from the backbuffer surface that is not scaled, even if in such a way you get other troubles when scrolling (see it by yourself...). The only reasonable alternative: write game code in a better way, in my opinion!
+
+
+
+
Suppress clipper
+
+
SUPPRESSCLIPPING
+
+
DxWnd sets clipping on the primary surface. If the game does it as way, there might be interferences. As a matter of fact, setting this flag is the only way to make "Pax Imperia Eminent Domain" working correctly.
+
+
+
+
Force clipper
+
+
???
+
+
+
+
+
+
Palette update don't blit
+
+
NOPALETTEUPDATE
+
+
Avoid executing a plit operation in case of palette update. This could be used to fix conflicts between GDI and ddraw palette updates.
Hooks DirectInput libraries, making sure that the DirectInput modes are appropriate for a non fullscreen program and enabling all other flags in the same group.
+
+
+
+
Hook dinput8
+
+
HOOKDI8
+
+
Hooks DirectInput8 libraries, making sure that the DirectInput8 modes are appropriate for a non fullscreen program and enabling all other flags in the same group.
+
+
+
+
Unacquire devices on focus lost
+
+
UNACQUIRE
+
+
Unacquire DirectInput/DirectInput8 devices when they lose focus and acquire them back when they regain focus. This option should be set if the program using DirectInput libraries keeps listening to mouse input even when the program's window is inactive, or when it keeps ignoring mouse input even when the program's window becomes active once again.
+
+
+
+
Emulate mouse relative movement
+
+
EMULATERELMOUSE
+
+
Emulates the DirectInput detection of relative mouse position by keeping the mouse at the center of the window and looking for movements. It should be used whenever the native DirectInput mechanism doesn't work properly.
DirectX Version Hook: Sets the basic intervention strategy. DxWnd should use a different hooking technique depending on the game technology. Automatic mode tries to find the correct technique by itself, but it doesn't always succeed. OpenGL handling requires a dedicated setting (see Libs).
+
+
Available options:
+
+
+
Automatic
+
DirectX1~6
+
DirectX7
+
DirectX8
+
DirectX9
+
DirectX10
+
DirectX11
+
None
+
+
+
In "Automatic" (the default mode), DxWnd automatically detects DirectX calls and hooks them to track and modify the calls and their corresponding COM methods. In some cases, though, DxWnd is unable to properly detect these calls and the windowing effect can be recovered by explicitly telling DxWnd what version of DirectX it should hook. Each option corresponds to a different DLL file that is involved in the DirectX implementation. This is directed by the following options:
+
+
+
DirectX1~6 (for ddraw.dll)
+
DirecX7 (for ddrawex.dll)
+
DirectX8 (for d3d8.dll)
+
DirectX9 (for d3d9.dll)
+
DirectX10 (for ...)
+
DirectX11 (for ...)
+
+
+
The last two options are generally useless, since the current Direct3D10/11 implementation seems to be based on Direct3D9, so hooking DirectX9 works for them as well (however, the implementation may change in the future).
+
+
It is also possible to specify the option "none" to avoid hooking DirectX at all. This could be helpful whenever you are interested in DxWnd features that are not related to the graphics (e.g. time stretching, compatibility options) and you want to leave the graphics alone.
Once you move DxWnd in the system tray with File > Move to tray and until the program is terminated, an icon will be visible in the system tray. Right-clicking on the icon, you get a subset of the DxWnd commands, plus the Show command that shows the DxWnd window again. The Show command is the menu default, so you can also activate it by double-clicking on the DxWnd tray icon.
DirectX emulation determines how the fullscreen DirectX operations are managed to fit a windowed environment, with the following options:
+
+
+
+
None
+
+
(default)
+
+
The primary surface and backbuffers are simply scaled to the desired size, but no other characteristic is altered. In particular, the pixel color depth and mode are not altered.
+
+
+
+
Primary Buffer
+
+
EMULATEBUFFER
+
+
Same as "None," but blit operations are made against a memory surface and then transferred to the real primary surface – this handles the so-called "pitch-bug" problem.
+
+
+
+
Locked Surface
+
+
LOCKEDSURFACE
+
+
Same as "Primary Buffer" (EMULATEBUFFER) but the buffer is the surface of an OFFSCREENPLAIN DirectDraw surface, so it is handled similarly to a DirectX surfacebuffer.
+
+
+
+
Primary Surface
+
+
EMULATESURFACE
+
+
The virtual primary surface has a different color depth from the real primary surface, and DxWnd takes care of the color transformation internally: it might be a little slower but it involves no screen mode changes. Furthermore, this option allows you to set the "Set AERO compatible mode" that avoids making a temporary color conversion and stretching it to the primary surface (which would break the AERO desktop composition mode).
+
+
+
+
Hybrid mode
+
+
HYBRIDMODE
+
+
Similar to "Primary Surface" mode (EMULATESURFACE), but DxWnd forwards the palette and color conversion to GDI calls instead of managing them internally. It is usually less compatible than primary surface, but in some rare cases it may better at managing unusual color conversions. Try this option if the game works but the colors are wrong or the screen is black.
+
+
+
+
GDI mode
+
+
GDIMODE
+
+
Similar to "Primary Surface" mode (EMULATESURFACE), but DxWnd forwards all the conversion between the virtual primary interface and the window surface instead of managing it internally. Because of recent optimizations to GDI that can now take advantage of hardware-accelerated functions, this mode is becoming particularly interesting, and the lack of extra service surfaces brings it closer to the original game schema. It is also quite respectful of AERO desktop modes.
+
+
+
+
+
+
Note that the chosen option only influences DirectDraw1 through DirectDraw7 interfaces. Interfaces with Direct3D8 and up (or OpenGL) are not affected by these options.
Causes the program to detect the chosen Windows release. Notice: this is not the same thing as the compatibility setting of the Windows properties panel, which also adjusts the system's behavior to emulate the chosen platform.
Move DxWnd to the System Tray, where a dedicated icon will show its state and allow a few commands, including the option to show the application window again. Note that once DxWnd goes in the System Tray, it always stays there even after its window is restored.
+
+
+
+
eXit
+
+
Exits DxWnd. Beware that if a game was activated while DxWnd was active, exiting DxWnd while the game is still running will very likely crash the game, so DxWnd will check for this and prompt you to confirm the operation.
Introduces a configurable delay between screen refresh operations, so that the FPS is limited accordingly.
+
+
+
+
Skip
+
+
SKIPFPS
+
+
Introduces no delay in the screen operations, but skips several screen updates so that the actual FPS value is limited without the program noticing it.
+
+
+
+
delay (msec)
+
+
???
+
+
Sets the delay time, expressed in milliseconds, for both the "Limit" (LIMITFPS) and "Skip" (SKIPFPS) options. To be noted that the FPS is related to the delay by the formula FPS = 1000/Delay or, the other way around, Delay = 1000/FPS. So if, for example, you desire an FPS not greater than 50, the corresponding value to get this effect is Delay = 20msec. Note that a greater delay means a slower frame rate.
+
+
+
+
Updates bigger than 1/4 screen size
+
+
???
+
+
???
+
+
+
+
Show FPS on title
+
+
SHOWFPS
+
+
When checked, the FPS counter is appended to the window title.
+
+
+
+
Show FPS overlay
+
+
SHOWFPSOVERLAY
+
+
When checked, the FPS counter is drawn as an overlay of the program client area, in a corner of the screen and periodically and randomly moved to other cornes to avoid accidentally overlap an important screen region.
These flags determine the strategy for managing pure GDI programs or, in the most complicated case, hybrid games that mix GDI calls with other renderers like DirectDraw or Direct3D.
+
+
+
+
No GDI handling
+
+
GDINONE
+
+
Disables video-related GDI/user32 API hooking.
+
+
+
+
Scaled GDI calls
+
+
HOOKGDI
+
+
Scales GDI API coordinates to fit the window stretching.
+
+
+
+
Emulated Device Context
+
+
EMULATEDC
+
+
Handle an emulated GDI device context.
+
+
+
+
Share ddraw and GDI DC
+
+
???
+
+
???
+
+
+
+
Remap Client Rect
+
+
CLIENTREMAPPING
+
+
Enabled by default. Makes DxWnd remap the window client coordinates so that the program receives the same values as if the program was running in fullscreen mode.
+
+
+
+
??? Map DC to Primary Surface
+
+
GDIEMULATEDC
+
+
Use the ddraw primary surface device context for GDI operations.
+
+
+
+
Scale font parameters
+
+
FIXTEXTOUT
+
+
Tries to scale font parameters to fit the window stretching.
Inhibits the task switch notification message that may hurt some games not designed to handle it properly
+
+
+
+
No banner
+
+
NOBANNER
+
+
Well, DxWnd celebrates itself a little by showing a very short splash screen at the beginning. If you're not happy with this, checking this flag will disable the show.
+
+
+
+
Run in window
+
+
WINDOWIZE
+
+
Checked by default, tells DxWnd to try to run the program in windowized mode, that is the essential reason why DxWnd exists. But if not checked DxWnd still performs all other functions not related to the screen size, such as time stretching, compatibility options and so forth.
+
+
+
+
Optimize CPU
+
+
SAVELOAD
+
+
Optimizes the CPU load, but only for ddraw operations (DirectX1 to DirectX7)
+
+
+
+
Ask confirmation on window close
+
+
???
+
+
Asks you for confirmation when you close the window.
+
+
+
+
Terminate on window close
+
+
???
+
+
Immediately terminates the application when you close the window.
+
+
+
+
Acquire admin caps
+
+
???
+
+
???
+
+
+
+
Fullscreen only
+
+
???
+
+
Forces applications to run in fullscreen mode only.
Windows 98 was the last platform to support asynchronous disk I/O from devices such as CD-ROMs. This flag suppresses requests for asynchronous mode, avoiding errors from this operation.
+
+
+
+
Set CDROM Drive Type
+
+
CDROMDRIVETYPE
+
+
Simulates each disk device to appear as a CDROM type. This allows you to copy the content of some CDs onto a hard disk and override the disk type controls that form some very basic copy protection schemes.
+
+
+
+
Hide empty CDROM drives
+
+
HIDECDROMEMPTY
+
+
Some old games didn't handle the possibility of having multiple CDROM devices and simply look for the game in the first available CDROM. If you have physical and virtual CDROM devices in your system, it may become complicated to insert a physical CD on a virtual device (or vice versa). This flag removes any CDROM devices that don't mount a CD from the list of available devices, so that you can simply unmount all disks except for the desired one.
DxWnd is a Win32 hooker that intercepts and alters the behavior of window messages and APIs. It intercepts events and injects code into the configured tasks to run fullscreen programs in a windowed environment while maintaining proper behavior. Simply put, DxWnd is a tool that does its best to let you run fullscreen applications in a window.
+
+
DxWnd takes advantage of the hooked logic injected into the application to add a few more little tricks on top of this basic functionality, falling into two general categories: compatibility and time flow. The extra compatibility features often allow some old programs to run on modern platforms, and the time flow features allow you to increase or decrease the game speed at will. Have you always had trouble with first-person shooters? Turn the tables with bullet time whenever you need it!
+
+
What is DxWnd for?
+
+
Let's start with the first one. Once upon a time (with computers, that means a few years ago), people used to have clumsy PCs that operated in a slow and single-threaded environment, trying their best to impress their owner with demonstrations of strength, usually by trying to move colored pixels on the screen in the fastest possible way. That custom was named video gaming, and involved many tricks to improve system performance. One common way to do that was to hijack all hardware resources and dedicate them to this single purpose, which of course disabled any attempt to run parallel tasks in other portions of the screen. The classic example is any videogame developed for Windows 95 and onward.
+
+
Now, you may be asking yourself why, after all this time, and with PCs so much more powerful, we have to keep playing these games in the very same environment. Someone is calling you in a chat program? A new email arrives? You want to browse the net? Something is happening on your favorite social network or MMPORPG? Forget about it! You're currently dealing with a task that wants 100% of your attention, even if it uses 1% of your PC's power. So, why not attempt to push this old and invasive application into a window of its own?
+
+
That's what DxWnd is mainly for: letting fullscreen applications run in their own separate window while pretending that they're still in a fullscreen context. The code hooking involved in this may even allow us to make further improvements, but we'll see this later.
+
+
A second certain fact is the technological evolution that has transitioned games from being built for specific Windows operating systems and CPU architectures using old and tricky DirectDraw support to using recent 3D libraries like Direct3D 8/9/10/11 and OpenGL. This evolution has left some victims behind: a lot of wonderful games are no longer supported in the current environment, despite Microsoft's efforts to support legacy programs. In some cases, DxWnd is crucial in recovering these old glories.
+
+
Why develop DxWnd?
+
+
Now the second question: why should someone bother to develop a thing like this? This is a different story. I started looking for a window-izer for a specific purpose: not having a dual monitor PC at home, I was looking for a way to debug fullscreen videogames. With some Internet research, I found references to an Asian (Japanese?) DxWnd project that seemed discontinued, but left an old copy of the C++ source (unfortunately, not the most recent release) to be downloaded. After that, there were several attempts to translate and improve the program, but none shared the source again. When I opened the project trying to understand the basic principles, I found that it was incredibly simple and yet sophisticated, acting almost like a virus or anti-virus program.
+
+
I just thought it was such a pity that this incredible piece of artwork of C++ programming could be left discontinued, so I decided to “adopt” the project and continue it, even if in the meanwhile I bought a second monitor for my home PC. For the same reason, I published the source code on SourceForge, a proper location for any open source code, and I encourage anyone to join and extend the project. And let me thank again the mysterious coder whose only surviving trail was the term "SFB7." Whoever you are, SFB7 (if this was your nick), thank you.
+
+
I have made many improvements to DxWnd since its first release, using sophisticated techniques that I learned from several great teachers on SourceForge, CodeProject, and other sites. Thank you all, open source supporters!
+
+
How does DxWnd work?
+
+
There are several different ways to write a fullscreen application, so there are just as many different ways to handle it, hence some annoying configuration to do before your program is all set up. Please bear in mind that DxWnd is still an experimental program, and its configuration is still a little clumsy. This aspect will be improved and simplified over time.
+
+
These are the basic principles of DxWnd's behavior:
+
+
+
DxWnd DOES NOT alter your software's behavior in any way (either system or applications) while inactive. While DxWnd is not running, everything behaves as if DxWnd has never been run on your machine, or even existed at all.
+
DxWnd DOES alter the behavior of your application when running: it hooks custom code that changes the application's behavior, hopefully in a positive way, but you never know. It's possible that because of hacks to DirectDraw or other system code there might be annoying effects such as frozen screen, unresponsive keyboard, and so on. Be patient and maybe you'll find a good game setting to use without side effects.
+
Unless you need code injection support (this will be explained later), DxWnd affects ALL games in the shown list, regardless of whether a particular entry is highlighted, and even if you started the game normally, outside the DxWnd interface. You can run your game as usual (clicking on desktop icons, shortcuts, etc.), and as long as DxWnd is running, it hooks ANY game that you've added to its game list, regardless of how you ran that game.
+
DxWnd only hooks into ONE SINGLE game at a time, even if it could be possible to start and intercept more than one in parallel. In some cases, the games work together, but you might see unpredictable behavior if you try to control more than one game at a time. Although parallel capability may be added one day, DxWnd currently hooks only one game at a time. Any games that you run while another game is already being hooked will run normally, without hooking.
+
+
+
DxWnd stores the configuration of altered registry keys in dxwnd.reg and everything else in dxwnd.ini. These configuration files are located in the same folder as the executable (dxwnd.exe) and the hooker (dxwnd.dll). No info is written in the registry or anywhere else in the system, and there is no installation procedure. Just copy the files wherever you like, create shortcut entries wherever you like, and easily back up the configuration by copying dxwnd.ini somewhere else. Also, keep in mind that ALL changes are written on disk only when DxWnd exits safely, so your configuration changes will be lost if it crashes.
+
+
From release 2.02.22 onward, you can export and import single settings to separate configuration files, allowing you to share working game configurations by sharing these files only.
DxWnd can set some special keys (e.g. Alt, Fn) to trigger special actions, storing the key association in the DxWnd.ini file. This flag enables hot key definitions. If unchecked, all hot keys are disabled for this program.
+
+
+
+
Intercept Alt-F4 key
+
+
HANDLEALTF4
+
+
Intercepts the Alt-F4 key in the message processing loop to immediately terminate the program, avoiding any programmed exit procedure (cinematics, save state warnings, ads...). Only has an effect if the game is doing the message processing loop.
Sets the DxWnd GUI language. The format is as follows:
+
+
lang=<specification>
+
+
The following languages are supported:
+
+
+
EN – English (default language)
+
CN – Chinese
+
IT – Italian
+
+
+
When you set a lang=<specification> specification, DxWnd looks for and loads the resources in the Resources_<specification>.dll file, so anyone can build and use a custom language pack.
+
+
lang=default disables resource loading, and the program will use the default and built-in English pack.
+
+
lang=automatic makes DxWnd search for the current UI language and try to map it to the available language packs. If no corresponding pack is available, it switches to the default (English) behavior.
+
+
This setting is always overridden by a /lang=<specification> command line argument.
If the selected application has a dxwnd.log log file, this option opens it. For this to work, you'll first need to associate the log file extension with your preferred text editor.
+
+
+
+
Delete
+
+
If the selected application has a log file, this option deletes it.
Allows you to choose a descriptive name for this entry. For example, if DxWnd is hooking two releases of a program, you can mention each entry's version number in the name. If you don't set a name, DxWnd defaults to the task's filename.
+
+
+
+
Path
+
+
The executable pathname of the task to be activated/hooked.
+
+
+
+
Launch
+
+
In some cases, the program to be hooked can't be run by launching itself directly, but needs arguments or other environment elements provided by some frontend parent program. To simplify the program's activation, enter the frontend's pathname here. When set, the Run command runs the chosen frontend launcher rather than the path in the Path field above.
Most programs get X,Y mouse coordinates from the mouse messages or from the specific API. One tricky way to get the same info, though, is to listen to the Windows message queue using PeekMessage/GetMessage, and retrieve the X,Y coordinates from ANY received message in the pt field. Checking this box makes DxWnd fix the X,Y coordinates in this uncommon situation as well (see the game Uprising).
+
+
+
+
Filter offending messages
+
+
SKIPOFFENDINGMSG ???
+
+
In theory, a fullscreen message should not expect several messages that are impossible to receive, such as border sizing, taskbar events and so forth. Some programs are not properly coded to react to such "impossible" messages and may show falfuncions. This flag causes potentially harmful and meaningless messages to be suppressed.
+
+
+
+
Defaulting offending messages
+
+
DEFAULTMESSAGES
+
+
While a well-designed windowed program should react to all window system messages, it is possible that a fullscreen program was designed without an appropriate reaction to such unexpected messages, like window stretching. This option makes DxWnd automatically process all these messages that an application might not correctly handle. It should be turned on if operations like window resizing or movement cause crashes or other problems.
+
+
+
+
Peek all messages in queue
+
+
PEEKALLMESSAGES
+
+
In Windows 7 and newer, any windowed application MUST empty its message queue. The operating system considers any application that does not do this within a defined timeout period (about 5 seconds) to be malfunctioning, and kills the process (although it keeps displaying the window's contents). Programs developed before Windows 7 didn't take this constraint into account and may easily fail to get messages during processes such as unskippable cutscenes or long calculations. This option periodically empties the system queue, ensuring that the program won't be killed. However, there is a small chance that some events (like mouse clicks) could get lost occasionally and will need to be repeated.
By default, DxWnd detects OpenGL APIs within the standard OpenGL32.dll library. This field allows you to set a different filename for any custom OpenGL implementation that may refer to a different library name.
The following flags have an effect only when the "run in window" option is selected (with the WINDOWIZE flag).
+
+
+
+
Keep aspect ratio
+
+
KEEPASPECTRATIO
+
+
When the window is resized, the aspect ratio set by the window initial size is preserved (by default the 4:3 aspect ratio such as 800x600).
+
+
Selecting a fake fullscreen mode calculates the aspect ratio according to the window's initial aspect ratio. This way, you can have fake fullscreen modes with ratios other than 4:3 - for example, set a width of 16 and a height of 9 to fill a 16:9 widescreen monitor.
+
+
+
+
Window initial position & size
+
+
+
+
Four values for the initial X, Y coordinates of the upperleft window corner and the window width and height. All values are referred to the window client area rather than the outside border. The values are used depending on the Position selection: for "X, Y" coordinates they are all used, for "Desktop center" DxWnd automatically centers the position and uses only the height and width, and in the remaining fake-fullscreen modes the height and width are used only as a reference for the desired aspect ratio when "Keep aspect ratio" (the KEEPASPECTRATIO flag) is set (if it has not been set, the height and width are ignored).
+
+
+
+
Position
+
+
+
+
A selection of 4 possible cases:
+
+
X, Y coordinates: the window is placed at the chosen coordinates
+
Desktop center: the window is centered on the screen, and only the width and height fields are used.
+
Desktop work area: the window occupies the whole screen but the bottom taskbar.
+
Desktop: the window occupies the whole screen, as if it was fullscreen (a.k.a. Fake-fullscreen mode)
+
+
+
Note that the first two modes are windowed modes, while the last two modes can be considered fake fullscreen modes. This is because the behavior of the KEEPASPECTRATIO flag changes along with this classification.
Tries to pause the program by lowering each thread priority to the minimum.
+
+
+
+
Resume
+
+
Restore thread priorities.
+
+
+
+
Kill
+
+
Kills the last process activated by the DxWnd interface. Very useful for getting rid of games that have gone crazy because of DxWnd and refuse to terminate themselves.
When right-clicking on the program's list, instead, the following menu will be shown:
+
+
+
+
+
+
Run
+
+
Activates (runs) the selected task. Same as double-clicking on the list entry.
+
+
+
+
Modify
+
+
Allows you to view and modify the program's configuration.
+
+
+
+
Delete
+
+
Asks for confirmation and then deletes the selected entry.
+
+
+
+
Add
+
+
Prompts for all data needed to define a new task in the list.
+
+
+
+
Duplicate
+
+
Duplicates or clones an entry. You can modify the clone without affecting the original. This allows you to create multiple different entries with consistent settings.
Exports the highlighted program configuration to a file.
+
+
+
+
Kill
+
+
Kills the corresponding program. Differently from the File -> Process -> Kill command, this command would not kill the currently active program, but the selected one, no matter whether it was managed by dxWnd or not. This is the reason why sometimes the first Kill command may fail and this one is in general more reliable, at the cost of selecting the proper entry.
Screen resolution affects the resolutions detected by the application. There is a choice of the following values:
+
+
+
+
SVGA modes
+
+
SUPPORTSVGA
+
+
The classic 4:3 screen resolutions starting from 320x200 up to 1280x800.
+
+
+
+
HDMI modes
+
+
SUPPORTHDMI
+
+
The typical 16:9 resolutions from 640x360 up to 1980x1080.
+
+
+
+
Monitor native modes
+
+
NATIVERES
+
+
Whatever resolution is returned from the video card.
+
+
+
+
Limit resolution
+
+
LIMITSCREENRES
+
+
Disables any resolution higher than the selected value. By default, the choice is "unlimited", that means no resolution is disabled.
+
+
+
+
+
+
Note that 320x200 resolution is typically no longer supported, but it is not a problem to emulate it in a window, and this resolution is necessary to run some older games.
DxWnd injects some special keys that might be useful into the controlled application:
+
+
+
+
cliptoggle
+
+
When the “Force cursor clipping” option is ON, this key toggles the clipping region ON and OFF so that you can exit the game area and control other tasks or move/resize your game window.
+
+
+
+
refresh
+
+
Forces a surface repaint. Some old games didn't even consider the possibility of a task overriding the game area, so they don't repaint when they should. This is a technical detail, but if your game screen gets dirty, try this key to fix it.
+
+
+
+
logtoggle
+
+
Toggles logging ON/OFF. Since painting operations can be quite verbose, toggling the log can be a useful trick to get information about a specific program's activity without having to browse tons of log lines.
+
+
+
+
plocktoggle
+
+
Toggle position locking. When the Lock win Coordinates flag is set (see Windows handling), the window can't be moved or resized. Toggle this behavior OFF, move or resize the window, and then lock the window again.
+
+
+
+
fpstoggle
+
+
Toggle the FPS display ON and OFF.
+
+
+
+
timefast/timeslow
+
+
Increase or decrease the time shift multiplication factor when time stretching is on.
+
+
+
+
altf4
+
+
This key is the well known quit command for any task. If the application doesn't react quickly enough to your command, you can set the “Intercept Alt-F4 key” option to cause DxWnd to immediately quit the program.
+
+
+
+
timetoggle
+
+
When time stretching is enabled, this key toggles the time stretching feature entirely OFF and ON. It's useful to play part of the program at a normal speed.
DxWnd comes with a simple graphical interface. The initial view is shown below:
+
+
+
+
The main window shows the list of hooked programs. DxWnd can currently handle up to 256. Trying to add more than that will produce an error message. Keep in mind that DxWnd bundles contain an export subfolder where all supported games have their own default configuration ready to be imported, but, because of the program's absolute path value, these entries will actually work only after updating the path with the proper local value.
+
+
As shown in the picture, each configuration line includes an icon with the program's status, color-coded as follows:
+
+
+
+
+
+
blank icon: the program's given path cannot be found and the entry won't work until the path is corrected.
+
+
+
+
+
+
gray icon: the hook is not enabled: this program can be activated by the DxWnd menu, but won't be windowed.
+
+
+
+
+
+
green icon: the hook is enabled and the program will be windowed when run from the DxWnd interface or from its normal executable or shortcut.
+
+
+
+
+
+
red icon: the program requires code injection, so it will need to be activated from the DxWnd interface only.
+
+
+
+
+
+
You can activate commands via the top menu or by right-clicking on a row in the application list.
+
+
DxWnd is also able to operate iconized in the System Tray, where it shows its state (either IDLE, READY or RUNNING) and runs a few useful commands.
+
+
DxWnd detects video settings when it is started, and compares them to the current value after killing a task or terminating itself. If it finds differences, it asks whether you want to restore the previous screen setting. This is quite useful to handle all the games that terminate without restoring the previous setting, as may happen when they die abnormally.
This command shows a window with a slider that allows you to inspect and dynamically alter the time flow speed. The display is refreshed once per second, and you can adjust the time stretch factor by clicking and dragging the slider:
+
+
+
+
The time stretching factors shown below the slider are related to the coarse (default) time resolution. If the fine time adjustment flag is set (see Time Stretching), the leftmost slider position corresponds to approximately x2 and the rightmost to approximately :2.
If this option is checked, DxWnd tries to emulate an accelerated (xn) or decelerated (:n) time flow. The value set in the listbox is the initial value, that can be altered by means of the time control slider in the time panel (see Time Slider). When checked, DxWnd stretches time in the timing API (such as with GetSystemTime()), the query performance APIs, and the Sleep APIs, which are the most common ways to control a program's timing.
+
+
+
+
Show time stretch
+
+
SHOWTIMESTRETCH
+
+
When checked, the time stretch ratio is drawn as an overlay in a corner of the screen, sometimes moving to other corners when it is updated.
+
+
+
+
Fine time adjust
+
+
FINETIMING
+
+
When checked, the time stretch ratio shows ticks in finer increments, switching from a 50% change with each tick to a 10% change with each tick. This limits the range to 0.5x-2.0x but allows for finer timing control.
+
+
+
+
Intercept RDTSC opcode
+
+
INTERCEPTRDTSC
+
+
Program timing is usually determined by system calls that can be easily and safely hooked to stretch the flow of time. There is one possible exception, however: when the program embeds in its assembly the RDTSC assembly instruction opcodes that directly access the hardware clock. This timing value can still be intercepted and manipulated, but using a more delicate technique that searches for the assembly code and replaces it with specific calls. This is why I preferred to make this option available with a dedicated flag to be activated when necessary. The flag should be set whenever adjusting the time stretching option does not alter the time flow.
+
+
+
+
Stretch timers
+
+
STRETCHTIMERS
+
+
When checked, the window timers are stretched, namely the user32.dll timers set by SetTimer and the multimedia timers in winmm.dll set by timeSetEvent().
Some games are not properly synchronized to run on physically separated multiple core CPUs, or simply don't properly handle powerful CPUs. This option sets the program's core affinity so that the program is run by a single core (the first one).
+
+
+
+
Set last core affinity
+
+
USELASTCORE
+
+
Same as SINGLEPROCAFFINITY, but picks the last CPU core.
+
+
+
+
Limit available resources
+
+
LIMITRESOURCES
+
+
Causes the query for available resources (RAM, hard disk space, and so on) to return a limited value: some old games can't handle a very big integer number and see it as a negative value, refusing to start.
+
+
+
+
Disable performance counter
+
+
???
+
+
???
+
+
+
+
Bypass font unsupported api
+
+
FONTBYPASS
+
+
Some games may attempt to manage old font styles that were present by default on legacy platforms and are no longer supported. This flag simulates a success operation to let the program continue. Of course, the font will be wrong, but Windows will approximate the choice with the most similar available font.
+
+
+
+
Replace privileged opcodes
+
+
???
+
+
???
+
+
+
+
Suppress IME
+
+
SUPPRESSIME
+
+
The flag tries to suppress IME windows. This feature is not yet fully functional.
+
+
+
+
Handle exceptions
+
+
HANDLEEXCEPTIONS
+
+
Setting this flag causes DxWnd to set its own exception handler that tries (often successfully) to fix several common exceptions, such as the divide by zero exception in old games that were trying to calculate the CPU speed.
Initializes the game window with a title bar and resizeable borders.
+
+
+
+
Prevent Win Maximize
+
+
PREVENTMAXIMIZE
+
+
Some modern games don't actually go into fullscreen mode, but just make the window occupy the whole screen. This option intercepts Windows messages and user32 calls to avoid changing the window position and size to make it a fullscreen window.
+
+
+
+
Lock win coordinates
+
+
LOCKWINPOS
+
+
Intercepts messages and calls that the program makes to itself to change its own window coordinates. This prevents you from changing the game window's position and size.
+
+
+
+
Lock win style
+
+
LOCKWINSTYLE
+
+
Intercepts messages and calls that the program makes to itself to change its own windowstyle.
+
+
+
+
Recover screen mode
+
+
RECOVERSCREENMODE
+
+
Sets the screen mode to registry default settings. In general, DxWnd intercepts any attempt to change display settings and prevents unwanted operations, but some programs still send display settings instructions before DxWnd can possibly intercept them (e.g. before the window is created and the windows hook is invoked). In this case, changing the display settings right afterward is the only possible solution. Try this when other options don't work.
+
+
+
+
Refresh on win resize
+
+
REFRESHONRESIZE
+
+
Any decently written Windows application should take care of refreshing the screen primary surface when resized, and most fullscreen games do it. Some don't, because they were not supposed to ever be resized. This flag is forces a refresh (useful for the game Uprising).
+
+
+
+
Fix Parent Window
+
+
FIXPARENTWIN
+
+
Typically, a game is started with an invisible program window, and then it creates a separate child window for handling the graphics. Some games use the parent window instead of the child window. In this case, the parent window becomes visible, then needs to be properly resized. This feature is currently experimental, but it seems to successfully manage several tough games, such as Solaris, SleepWalker, Sid Meier's Sim Golf, and the Worms series.
+
+
+
+
Modal Style
+
+
MODALSTYLE
+
+
When "Fix Window Frame Style" is set, a borderless and titleless modal style is chosen instead of the default one.
+
+
+
+
Force win resize
+
+
FORCEWINRESIZE
+
+
Experimental (and not working very well so far): should force window resizing messages to be processed so that the window can be resized by dragging its borders.
+
+
+
+
Hide multi-monitor config
+
+
HIDEMULTIMONITOR
+
+
Makes the program ignore multiple monitors in your system configuration, giving information about the primary monitor only.
+
+
+
+
Wallpaper mode
+
+
WALLPAPERMODE
+
+
Experimental – forces the program's Z-order to the lowest level so that it runs below any other task, behaving like an active wallpaper.
+
+
+
+
Fix window frame in D3D
+
+
FIXD3DFRAME
+
+
Tries to prevent D3D from rendering on the whole window surface including the window border. It activates a small trick that cause the program to render to a child modal surface within the main window borders.
+
+
+
+
Don't move D3D rendering window
+
+
NOWINDOWMOVE
+
+
Do not try to update the window position and size on D3D rendering. In some cases, the window may be movable but the rendering area does not move with it. In this case, avoid moving the window at all. It is an experimental feature and doesn't always work.
+
+
+
+
Hide desktop background
+
+
HIDEDESKTOP
+
+
Starts the windowized program together with four black borderless windows that surround it entirely, eliminating distracting background windows and providing a more focused gaming experience. The whole idea was borrowed from "Mr. Hide": https://sourceforge.net/projects/mrhyde/