Cursor visibility

Automatic

Clears any forced cursor visibility settings.

Hide

HIDEHWCURSOR

Forces hiding the hardware cursor.

Show

SHOWHWCURSOR

Forces showing the hardware cursor.



Mouse Clipper

Default

Default behaviour, DxWnd does not interfere with the program clipping operation apart from the needed coordinate scaling.

ON

CLIPCURSOR

DxWnd forces the bounding of the cursor within the main window through a GDI clipper. The clipper is then destroyed and rebuilt in case of window lose/gain focus events so that it doesn't interfere with operations on the window border or on other windows, for instance when Alt-Tabbing.

OFF

SUPPRESSCLIPPING

DxWnd inhibits the bounding of the cursor within the main window bypassing the creation of a GDI clipper.

LOCKED

CLIPLOCKED

Same as ON, but never releasing the clipper.

Include menu in clipper area

CLIPMENU

If this flag is set and the window has a menu, the mouse clipper area is extended to allow reaching the menu. Implementation is partial: it doesn't take multi-line menus or menus that are not positioned on top of the window client area into account, but it seems good for most cases.



Invert mouse

These flags allow to invert the mouse position.

Invert X axis

INVERTMOUSEXAXIS

Inverts the mouse X coordinate. For instance, when moving the mouse from left to right, the program will detect a movement from right to left.

Invert Y axis

INVERTMOUSEYAXIS

Inverts the mouse Y coordinate. For instance, when moving the mouse from top to bottom, the program will detect a movement from bottom to top.


Fix mouse bias

Because of rounding errors when calculating the mouse position, the result can have an offset of 1 pixel. This normally doesn't have much of an influence, but when the mouse is used in relative mode (as it happens in many shooting games) an error of even a single pixel can introduce a bias that has severe effects, like moving the cursor or rotating the point of view. These flags can introduce a bias of one single pixel that can compensate the problem. Beware: The rounding errors depend on the window size, so these flags could be necessary depending on the taget window size.

Fix X bias

FIXMOUSEBIASX

Fixes the X bias adding 1 pixel to the mouse X coordinate.

Fix Y bias

FIXMOUSEBIASY

Fixes the Y bias adding 1 pixel to the mouse Y coordinate.


Cursor handling

Correct mouse position

MODIFYMOUSE

Compensates for X,Y mouse coordinates when the window is moved or resized. It should be typically set for most games.

Position message processing

MESSAGEPROC

Some programs get the current mouse position via the dedicated GetCursorPos API, but others analyze the POINT coordinates that are included in every window message the program receives. This flag enables a Windows hook that receives messages and compensates for windowed mode's displacement of mouse coordinates by adjusting them to the equivalent fullscreen coordinates.

Fix mouse lParam

FIXMOUSELPARAM

This flag forces coordinate scaling in the lParam word of mouse-related Windows messages that are received through PeekMessage calls. It currently fixes the polish release of "Leisure Suit Larry 7: Love for Sail" only.

Correct MOUSEHOOK callback

FIXMOUSEHOOK

Some programs can process the mouse coordinate by using a SetWindowsHook callback for the mouse position changes. This flag scales the mouse coordinates sent to the callback function. Fixes mouse problems in "Jagged Alliance 2".

Keep cursor within window

KEEPCURSORWITHIN

Avoids 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").

Fix WM_NCHITTEST

FIXNCHITTEST

Fixes the WM_NCHITTEST message's X,Y coordinates. When the window's border behaves strangely, set this flag to correct the position of the mouse cursor.

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.

No mouse events generation

NOMOUSEEVENTS

Useful for the game "The Italian Job". Corrects the undesirable effect of sending clicks here and there, easily intercepted by other programs and producing an incredible chaos on the desktop!

Fix mouse RawInput

FIXMOUSERAWINPUT

Scales the X,Y coordinates retrieved from mouse devices in RawInput mode.

Mouse shield

MOUSESHIELD

Disables the handling of the mouse move messages that are sent to the window which is not currently active.

Adaptive mouse speed

ADAPTMOUSESPEED

Adapts the mouse speed to the window size to make it proportional to the stretching ratio and improve the mouse control.

Lock cursor icons

LOCKCURSORICONS

Disables the changes to the cursor's shape (See SetCursor system call).

Lock system cursor icons

LOCKSYSCURSORICONS

Disables the changes to the system cursor icons (See SetSystemCursor system call).

Recover system cursor icons

RECOVERSYSCURSORICONS

Recovers the system cursor icons to the shapes that they had when the target program was launched.