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!
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.
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!
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 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.