Positon eines Steuerelementes bestimmen

Winner

Erfahrenes Mitglied
Hallo liebe Leutz,


ich möchte gerne die Position eines Steuerelemetes bestimmen. Dieses ist auf meiner Form da und würde die Position zur Laufzeit gerne bestimmen, da ich dieses dann dymaisch gegen ein anders ersetzen möchte.

Kann mir wer von euch sagen, wie ich die Position über die ID abfragen kann. Habe so was die CRect versucht aber ich finde keine Funktion die das gewünschte ergebnis erzeugen kann.

Vielen Dank schonmal für die Hilfe!

Gruß

PS: VS C++6.0
 

Endurion

Erfahrenes Mitglied
In der Dialog-Klasse des Dialogs, auf dem das Control liegt, kannst du mit GetDlgItem und der ID das CWnd (oder HWND) holen.
Damit kannst du dann SetWindowPos/GetWindowPos aufrufen.
 

Winner

Erfahrenes Mitglied
Vielen Dank für die Antwort,

habe es jetzte so gelöst.

Code:
RECT  rc1;
        WINDOWPLACEMENT winplace;
        
        HWND hwnd_ProgBat = GetDlgItem(hwnd,DID_PROGRESS_BATTERY);
        
        GetWindowPlacement(hwnd_ProgBat, &winplace);   
        
        rc1 = winplace.rcNormalPosition;
        
l_ProgBattery.Create(WS_BORDER | WS_VISIBLE, rc1,
                             CWnd::FindWindow(NULL,"Messwert-Registrierung"),
                             NULL);
 

Winner

Erfahrenes Mitglied
Jetzt habe ich das gestern so schön hinbekommen, das es funktionert und muss heute feststellen, als ich es für CE über setzen wollte nicht funktioniert. Hat einer einen kleinen Tip, ansonsten muss ich mir eine andere Lösung einfallen lassen.
Compiler: Enbedded 4.0 c++

Besten dank
 

Endurion

Erfahrenes Mitglied
Was heisst denn "nicht funktioniert"? Compiliert der Code für CE nicht? Oder tut einer der Befehle nicht was er soll?
 

Winner

Erfahrenes Mitglied
Hatte doch gesagt., das er das nicht compilieren kann. Hat ein Problem mit der WINDOWPLACEMENT Strukur. Nagut die hätte ich auch selber schreiben können. Sind ja nur POINTs und so ein paar andere sachen drinnen

Aber dann benutze ich ja noch die FUNKTION GetWindowPlacement(hwnd_ProgBat, &winplace); wo ich genau diese Struktur brauche! Da ist auch nichts mit casten meiner eigenen Struktur, er kennt das einfach nicht!

Muss jetzt leider einen anderen Ansatz wählen.

Gruß u besten Dank
 

deepthroat

Erfahrenes Mitglied
Hi.
Hatte doch gesagt., das er das nicht compilieren kann. Hat ein Problem mit der WINDOWPLACEMENT Strukur. Nagut die hätte ich auch selber schreiben können. Sind ja nur POINTs und so ein paar andere sachen drinnen

Aber dann benutze ich ja noch die FUNKTION GetWindowPlacement(hwnd_ProgBat, &winplace); wo ich genau diese Struktur brauche! Da ist auch nichts mit casten meiner eigenen Struktur, er kennt das einfach nicht!
Poste mal die genaue Fehlermeldung. Wenn er die GetWindowPlacement Funktion kennt, muss ja auch die Struktur bekannt sein.

Gruß
 

Winner

Erfahrenes Mitglied
ich denke mal das das Problem erst im 2 Schritt die Funktion sein wird. Denn ich muss ja dort das WINPLACEMENT übergeben! Zumindest erwartet die Funkttion das ! Aber zu erst muss ja erstmal das WINPLACEMENT erzeugt werden.

So hier die Meldung
Code:
error C2065: 'WINDOWPLACEMENT' : undeclared identifier
D:\: error C2146: syntax error : missing ';' before identifier 'winplace'
D:: error C2065: 'winplace' : undeclared identifier
D:: error C2065: 'GetWindowPlacement' : undeclared identifier
D:: error C2228: left of '.rcNormalPosition' must have class/struct/union type
Die Meldung sind nichts spektakuläres! Und laut msdn sind die WINDOWPLACMENT und GetWindowPlacment auch nur für NT vorhanden und nicht für CE----

Betsen dank und schönes WE
 

Neue Beiträge