MoveWindow() über mehrere Monitore

Thomasio

Erfahrenes Mitglied
Nachdem ich neuerdings einen erweiterten Desktop über 2 Monitore habe, will ich meine Anwendungen daran anpassen.
Bisher schreibe ich beim Schliessen einer Anwendung die letzte Position in eine config.ini, lese das beim Öffnen wieder aus, checke ob die Position im sichtbaren Bereich ist, und wenn ja setze ich das Fenster wieder dort hin.

Code:
case WM_CLOSE:
{

RECT rect;
GetWindowRect(hwnd,&rect);

// rect zerlegen in 4 int´s, konvertieren zu string, weitere Werte für die config in den string packen, Datei öffnen ...

WriteFile(hFile,MyString.c_str(),MyString.size(),&dwWritten,0);

DestroyWindow(hWnd);

return 0;

}
break;

So habe ich 4 einfache Zahlen, die ich mit ReadFile() einlesen und in MoveWindow() verwenden kann.

Ich habe schon einiges gelesen, über GetMonitorInfo(), GetWindowPlacement() und Zeug, aber ich werde daraus nicht schlau.
Ich habe nur soviel begriffen, ein einfaches MoveWindow() reicht nicht mehr.

Hat jemand eine einfache Lösung, wie ich beim schliessen einer Anwendung die Fensterposition inklusive Monitor abfragen kann, und wie ich diese Werte beim Öffnen wieder verwenden kann, inkl checken, ob der Monitor überhaupt noch existiert?

Das Ganze in einfachem C mit API Befehlen, ohne "Visual", ".NET" usw.
 
Zurück