Fensterposition bestimmen



  • Hi nochmal,

    So sry aber das ist jetzt mein letzter Post für 'heute' 😉 ...Muss in die Haia 😃 ...:

    Also so funktionierts einwandfrei bei mir:

    RECT rcWndPos;
    	if(GetWindowRect(hWnd, &rcWndPos))
    	{
    		TCHAR szBuffer[100];
    		wsprintf(szBuffer, TEXT("X: %li, Y: %li"), rcWndPos.left, rcWndPos.top);
    		MessageBox(hWnd, szBuffer, TEXT("Fensterposition"), MB_OK);
    	}
    

    Davon ausgehend, das hWnd das Zielfenster ist. Klaro 😉



  • Nochwas: Nimm lieber WS_POPUPWINDOW ... bzw prüf mal den Return-Wert von GetWindowRect ...falls nötig auch mit GetLastError ...mist der 2. Post für 'heute' ^^ ...also gute Nacht. 👍



  • Du kannst es ja mal mit GetWindowInfo probieren. Aber ich könnte mir vorstellen das das intern die selben Mechamismen verwendet wie GetWindowRect. Aber vielleicht hilfts dir ja trozdem.

    //edit: Ich bin einfach zu langsam heute bzw. eigentlich ist heute ja schon gestern. Ich muss mal lernen schneller zu Antworten 😉



  • @Swordfish: Hats jetzt was gebracht ?



  • CodeFinder schrieb:

    Nochwas: Nimm lieber WS_POPUPWINDOW ...

    Nein, tu ich nicht 😃 Ich brauch schon WS_POPUP.

    CodeFinder schrieb:

    bzw prüf mal den Return-Wert von GetWindowRect ...falls nötig auch mit GetLastError

    Das ist bei mir Standardforgehensweise bei der Fehlersuche...

    CodeFinder schrieb:

    ...mist der 2. Post für 'heute' ^^ ...also gute Nacht. 👍

    Tja, so kann's gehen.

    Hab' übrigens den Fehler inzwischen gefunden. Das Fenster wurde von einer abgeleiteten Klasse erstellt. Das Window-Handle war zu diesem Zeitpunkt in der Basisklasse noch nicht richtig initialisiert und war demnach immer ungültig. Ich habe heute den halben tag damit verbracht, diesen Fehler zu beheben 😡

    Greetz, Swordfish



  • Swordfish schrieb:

    Das ist bei mir Standardforgehensweise bei der Fehlersuche...

    Daran wollt ich ja auch nit zweifeln...du sollest mir nur (indirekter Apell 😉 ) den Return-Wert von GetLastError sagen.

    Swordfish schrieb:

    Das Window-Handle war zu diesem Zeitpunkt in der Basisklasse noch nicht richtig initialisiert und war demnach immer ungültig. Ich habe heute den halben tag damit verbracht, diesen Fehler zu beheben 😡

    Hmm dann hätte dir aber doch GetLastError entsprechendes melden müssen und vllt. sogar der Return-Wert ein FALSE o.ä. gewesen sein... na egal...

    Muhaha solche F*ck Fehler kenn ich auch...zeimlich nervig 🤡



  • CodeFinder schrieb:

    Swordfish schrieb:

    Das Window-Handle war zu diesem Zeitpunkt in der Basisklasse noch nicht richtig initialisiert und war demnach immer ungültig. Ich habe heute den halben tag damit verbracht, diesen Fehler zu beheben 😡

    Hmm dann hätte dir aber doch GetLastError entsprechendes melden müssen und vllt. sogar der Return-Wert ein FALSE o.ä. gewesen sein... na egal...

    Tja, lieferte aber komischerweise immer != 0.

    CodeFinder schrieb:

    Muhaha solche F*ck Fehler kenn ich auch...zeimlich nervig 🤡

    jup.

    Greetz, Swordfish



  • Swordfish schrieb:

    CodeFinder schrieb:

    Swordfish schrieb:

    Das Window-Handle war zu diesem Zeitpunkt in der Basisklasse noch nicht richtig initialisiert und war demnach immer ungültig. Ich habe heute den halben tag damit verbracht, diesen Fehler zu beheben 😡

    Hmm dann hätte dir aber doch GetLastError entsprechendes melden müssen und vllt. sogar der Return-Wert ein FALSE o.ä. gewesen sein... na egal...

    Tja, lieferte aber komischerweise immer != 0.

    "komischerweise" hat

    GetLastError
    

    nicht den Rückgabewert BOOL sondern DWORD (oder etwas ähnliches):

    MSDN schrieb:

    DWORD [...] dwGet = 37;
    [...]
    dwGet = GetLastError();

    (Quelle: http://msdn2.microsoft.com/de-de/library/yy0hww86.aspx)

    Mit freundlichen Grüßen
    Rhombicosidodecahedron



  • FormatMessage ...



  • Troll!

    Rhombicosidodecahedron schrieb:

    [...]
    "komischerweise" hat

    GetLastError
    

    nicht den Rückgabewert BOOL sondern DWORD (oder etwas ähnliches):
    [...]

    Dir fehlt der Bezug meiner Frage und Swordfish's Antwort...Er hat sie verstanden! 👍 ...und dir werd ichs natürlich auch erklären 😃 :
    Die Funktion GetWindowRect liefert BOOL zurück (definiert als int)
    Die Funktion GetLastError liefert DWORD zurück (definiert als unsigned long)
    Ich hoffe jetzt leuchtet dir sowohl diese Aufforderung:

    CodeFinder schrieb:

    [...]prüf mal den Return-Wert von GetWindowRect ...falls nötig auch mit GetLastError

    als auch diese Antwort:

    Swordfish schrieb:

    Tja, lieferte aber komischerweise immer != 0.

    ein. 💡

    Was du damit bezwecken willst:

    Rhombicosidodecahedron schrieb:

    DWORD [...] dwGet = 37;
    [...]
    dwGet = GetLastError();

    ist mir auch rästelhaft...du weißt der Variable vorm Aufruf von GetLastError
    einen Wert zu, um diesen dann von GetLastError wieder überschreiben zu
    lassen...Herzlichen Glückwunsch!

    PS_1: ➡ Du solltest genauer lesen. ⚠

    PS_2: ➡ 'oder sowas ähnliches' [Ironie] ist natürlich auch sehr aussagekräftig. [/Ironie]



  • Ähm, Leute: Problem gelöst, lag woanders ➡ macht nicht so viel Wind 😉

    @Rhombicosidodecahedron:

    Ich weis sehr wohl, wie ich bei einer Funktion prüfe, ob sie einen Wert zurückgibt, welcher einen Fehler andeutet...

    @(D)evil:

    Danke, kenn ich und weis ich anzuwenden. Aber wenn ein WinAPI-Aufruf keinen einen Fehler andeutenden Wert zurückliefert, ruf' ich GetLastError( ) garnicht erst auf.

    CodeFinder schrieb:

    [...] du weißt der Variable vorm Aufruf von GetLastError
    einen Wert zu

    Wieso denn nicht? Ist doch nicht verboten 😃

    Greetz, Swordfish



  • Swordfish schrieb:

    [...]
    Wieso denn nicht? Ist doch nicht verboten 😃
    [...]

    Hm Nö 😃 das stimmt 😃 , aber wenn dann bitte so richtig effektiv, inner Schleife 😃


Anmelden zum Antworten