Background:
In Windows 7 it is possible to maximize and "semi-maximize" application windows by dragging them to the top/top-left/top-right corner of the screen (the latter two will make your application windows fill the screen vertically, but only fill half the screen horizontally, allowing for another application to be "semi-maximized" in the other half).
I use this feature a lot - if not constantly. I have a 30" screen with a resolution of 2560x1600 pixels, which is a lot of screen real-estate. Most of the time, I don't need all that for a single application; exceptions being working with 2D/3D design, photo/video/audio editing - which are all things I do - and programming. All of these generally require a good overview of a project to be used efficiently, or otherwise benefit from a wide display area (timelines etc). But lately, I have found it more convenient to let Visual Studio only occupy half the screen width in most cases. Collapsing a few toolboxes/explorers allows for a lot of horizontal room for the code itself anyway, and it enables me to have another application running on the side, always visible (documentation, notes, websites, debugging etc) - which significantly enhances my productivity.
Obviously, you could always accomplish this manually, by simply resizing windows to what you want and position them accordingly, but I am a big fan of "snap-ins" - where windows are robustly docked and can be moved in and out of their docking position. The Visual Studio IDE is a good example of this. I love how everything sits tight and compact, while allowing for reorganizing and resizing.
I have always wanted to be able to do this with any application, on the desktop. That is, have some kind of framework set up where you can drag separate application windows onto panes, where they snap in and stay in place in whatever configuration you want. You could have, say, a notepad window occupying the upper half, quarter width of the screen, with a browser underneath, Visual Studio on the right and some other utilities filling up the rest. The current Windows feature of one vertical split would just be one of many such configurations (that could be saved and brought up by means of storing setups).
Question:
So now I am wondering if anyone knows how this could be done? I'm thinking about a lightweight background app, that could be brought up from the taskbar, and then manipulate the applications' windows to be sized according to the panes they are dragged on to?
I am sure it's possible, but for me, it needs to be doable in .Net (I use VB myself), without a lot of low-level trickery.
Edit:
Basically, the requirements for any approach would be:
- Ability to detect when an application window is being (dragged and) dropped on one of the predefined screen areas / panes
- Ability to adjust that application window's size and position