Tjena!Fönsterplacering
Det här är lite offtopic efterssom det är ett generellt windowsprogrammeringsproblem men jag hittade inget forum det passade bättre.
Jag försöker klura ut hur jag ska placera nya fönster på skärmen då att de hamnar på så bra ställen som möjligt. Det är ett antal faktorer som behöver tas hänsyn till.
1. Programmet körs på dubbla skärmar och ett nytt fönster ska ALDRIG hamna i skarven mellan skärmarna.
2. Ett nytt fönster får ALDRIG hamna med någon del utanför det synliga området på skärmen.
3. Fönstret BÖR hamna så nära musens position vid klicken som kallade upp fönstret men helst inte närmare än tex 50pixlar för att inte täcka över det man klickade på.
4. Fönstret BÖR inte täcka något av de andra egenskapsfönstrena som är uppkallade.
5. Fönstert BÖR hamna ovanpå dess parent.
Allt tekniskt med problemet (Hämta skärmupplösning och virtuella skärmar) är löst och det jag skulle vilja ha ideer på är angreppsmetoder på hur jag ska lösa problemet.
Allt jag kommer och tänka på blir så komplext att jag misstror om jag någonsin kommer att få det att fungera. Jag kan tänka mig att ge avkall på några av kraven om detta gör att man kan göra en enkel generell lösning med låg strulfaktor.
En början på en funktion i C# skulle kunna se ut så här.
public System.Drawing.Rectangle GimmeBestWindowPos(System.Drawing.Rectangle NewWindowPosition)
{
System.Drawing.Rectangle VirtualScreen = GetVirtualScreen(); //The full virtual screen
System.Drawing.Rectangle[] Screens = GetScreens(); // All screens as offsets in the full virtual screen
System.Drawing.Rectangle[] PropertyWindows = GetPropertyWindows(); //Other property windows wich we dont want to overlap.
System.Drawing.Point = GetMousePosition(); //The position of the mouse at click.
System.Drawing.Rectangle = GetParent(); //The position of the mouse at click.