tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von MCoder
  • 1 Beitrag von MCoder
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
553
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Cappaja Cappaja ist offline Mitglied Silber
    Registriert seit
    May 2009
    Ort
    Konstanz
    Beiträge
    85
    hallo,

    ich suche lediglich die koordinaten der linken oberen ecke des elternfensters. mittels getwindowpos() bekomme ich (0,0), also nur den absolutpunkt innerhalb der anwendung. ich suche eine funktion die mir die linke obere ecke absolut zum bildschirm angibt um so mittels setwindowpos() meinen neuen dialog zu erstellen. falls es noch eine andere möglichkeit gibt, so lasst es mich bitte wissen

    mfg cappaja
     

  2. #2
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin,

    verstehe ich das richtig?
    Deine Anwendung läuft nicht im Vollbildmodus, so dass Du rundherum einen Teil des Desktop siehst?

    Du wirst Dein Fenster IMHO aber immer nur relativ zum Hauptfenster Deiner Anwendung positionieren können (also eben relativ zu (0,0)). Andernfalls wären das ja negative Werte ...

    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  3. #3
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Verwende GetWindowRect().

    Gruß
    MCoder
    vfl_freak bedankt sich. 
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  4. #4
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin McCoder,

    hmm, der Befehl ist nicht schlecht!
    Ich hatte damit vor geraumer Zeit auch schon mal was versucht, aber nicht so hinbekommen, wie geplant
    Muss ich noch mal schauen, was ich falsch gemacht habe ...

    gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  5. #5
    Cappaja Cappaja ist offline Mitglied Silber
    Registriert seit
    May 2009
    Ort
    Konstanz
    Beiträge
    85
    hallo,

    ich meinte ja das ich GetWindowRect() benutzt habe, GetWindowPos() existiert ja überhaupt nicht ich habe da aber das problem das ich lediglich die obere linke position mit (0,0) zurück bekomme.
    gibt es vielleicht eine funktion die einen dialog automatisch in der mitte des bildschirms positioniert? mit SetWindowPos() habe ich ja immer das problem das je nach bildschirmauflösung mein programm woanders auftaucht.

    @vfl_freak: ja es ist ne dialogbasierende anwendung welche nicht den bildschirm ausfüllt. daneben soll ein kleinerer dialog platziert werden um das hauptfenster steuern zu können

    mfg cappaja
     

  6. #6
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    GetWindowRect() gibt auf jeden Fall die Koordinaten bezogen auf die linke obere Ecke des Bildschirms aus. Ich vermute daher einen Fehler bei der Anwendung dieser Funktion.
    Beim Positionieren muss man natürlich die aktuelle Bildschirmgröße mit berücksichtigen (Ermittlung via GetSystemMetrics). Dann braucht man aber eigentlich auch nicht die Position des Fensters sondern nur seine Größe.
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    // hwnd: Handle des zu zentrierenden Fensters
     
    RECT rc;
    GetWindowRect(hWnd, &rc);
     
    SetWindowPos( hWnd,
                  NULL,
                  (GetSystemMetrics(SM_CXSCREEN) - (rc.right - rc.left)) / 2,
                  (GetSystemMetrics(SM_CYSCREEN) - (rc.bottom - rc.top)) / 2,
                  0,
                  0,
                  SWP_NOSIZE | SWP_NOZORDER );

    Gruß
    MCoder
    Cappaja bedankt sich. 
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  7. #7
    Cappaja Cappaja ist offline Mitglied Silber
    Registriert seit
    May 2009
    Ort
    Konstanz
    Beiträge
    85
    hi mcoder,

    hat wunderbar geklappt, mein problem war das ich GetWindowRect() in OnInitDialog aufgerufen habe, zu diesem zeitpunkt werden noch nicht-initialisierten werte des fensters zurückgeliefert, in diesem fall (0,0). so hab ich die daten erst beim doppelklick in eine membervariable geschrieben und in der zu öffnenden dialogklasse wie folgt aufgerufen:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    RECT rc;
    GetWindowRect(&rc);
     
    SetWindowPos( NULL,
                    (((CWiwoDlg*)GetParent())->m_MainWndRect.left - (rc.right - rc.left)),
                (((CWiwoDlg*)GetParent())->m_MainWndRect.top),
                0,
                0,
                SWP_NOSIZE | SWP_NOZORDER );

    so wird jetzt die hauptanwendung mittig angezeigt und der kleine dialog links oben neben der hauptanwendung. nochmals vielen dank

    mfg cappaja
     

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 10.08.09, 18:48
  2. kann man die Komponenten in einem Panel rechts oben fest platzieren
    Von P_H_I_L im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 3
    Letzter Beitrag: 22.04.08, 09:02
  3. SWT: Werte von Dialog ins Hauptfenster übergeben
    Von haudek im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 4
    Letzter Beitrag: 05.12.07, 18:20
  4. Antworten: 4
    Letzter Beitrag: 27.11.07, 21:06
  5. Statusleiste für modalen Dialog als Hauptfenster
    Von sdi im Forum VisualStudio & MFC
    Antworten: 1
    Letzter Beitrag: 02.11.04, 13:40