[C++/WinAPI] Eigene Controls - Wie Daten hinterlegen?

mh1001

Lt. Commander
Registriert
Nov. 2003
Beiträge
2.039
Hallo,

nach einer angenehmeren OpenGL-Zeit geht es jetzt leider zwangsweise an die WinAPI. ;)

Es geht darum, eigene Steuerelemente - wie z.B. eigene Button oder Schieberegler - über eine entsprechende Fensterklasse und WindowProc-Funktion zu realisieren.
Dies ist ansich kein Problem, jedoch bereitet mir das Ablegen von Daten, die vom entsprechendem Fenster benötigt werden Probleme.
Beispielsweise kann ich die Position eines Schiebereglers oder den Status eines Buttons natürlich als static-Variable innerhalb der WindowProc-Funktion hinterlegen.
Natürlich macht das ganze aber keinen Sinn, wenn die entsprechende Funktion von mehreren Fenstern genutzt wird, was normalerweise natürlich auch der Regelfall ist.

Somit meine Frage: Wo/Wie lege ich die Daten besten separiert ab, so dass diese für jedes Fenster seperat von der WindowProc-Funktion verwaltet werden?


MfG mh1001
 
Im Control ablegen mit
Code:
SetWindowLong(hWnd, GWL_USERDATA, lpData )
und dann in der Windowproc wieder holen mit GetWindowLong()

Wobei das eigentlich nur bei C relevant ist. In C++ mit MFC würde ich die jeweilige Basisklasse überladen (z.B. CWnd) und dann mit Membervariablen arbeiten. C++ ohne MFC ist mir noch nicht untergekommen :-), da eigentlich zu aufwendig.

MfG

Arnd
 
Zuletzt bearbeitet:
Vielen Dank, genau das habe ich gesucht, bzw. bin ich dadurch nun in der Dokumentation auf die Set-/GetWindowLongPtr()-Funktion gestoßen. ;)

Von der MFC halte ich mich eigentlich grundsätzlich fern - da ist mir eine direkte Nutzung der Windows API lieber.

MfG mh1001
 
Die Ptr Funktionen werden glaube ich ab VS2003 benötigt. Mit VC6 ging noch die einfache Variante.

Die MFC ist zwar absolut kriminell programmiert, aber sie spart sehr viel Zeit und macht den selber geschriebenen Code übersichtlicher.
Das man damit nichts zu tun haben will, kann ich allerdings nachvollziehen :-).

MfG

Arnd
 

Ähnliche Themen

Zurück
Oben