WM_Message funktion mit anderen Funktionsparametern?



  • Hallo Leute,

    kann ich eigene Messagefunktionen coden welche andere Funktionparameter bestizen? die standert WM_USER Messagefunktionen welche ich auslösen kann, haben ja 2 Parameter WPARAM und LPARAM... kann ich auch ein std::vector ider der gleichen übergeben??

    grüße



  • Du könntest einen Zeiger auf ein std::vector übergeben.



  • LPARAM ist soweit ich weiss garantiert groß genug, um einen (Daten-)Zeiger zu übernehmen. Du kannst darüber also beliebige Strukturen, Arrays, Objekte etc. übergeben. Du musst "nur" darauf achten, dass Du das Argument in den korrekten Quelltyp zurückcastest. Also Obacht bei Hierarchien - von Derived* nach LPARAM und von LPARAM nach Base* könnte gehörig in die Hose gehen.



  • BorisDieKlinge schrieb:

    Hallo Leute,

    Hallo Boris. Wie lange schreibst du schon in diesem Forum? Wann sollte man gelernt haben das WinAPI-Spezifisches nicht in das Ansi C++ Forum gehört?

    BorisDieKlinge schrieb:

    kann ich eigene Messagefunktionen coden welche andere Funktionparameter bestizen? die standert WM_USER Messagefunktionen welche ich auslösen kann, haben ja 2 Parameter WPARAM und LPARAM... kann ich auch ein std::vector ider der gleichen übergeben??

    Schau dir bitte mal die Typen von WPARAM und LPARAM an, und denk dann mal nach. Im Prinzip wurde auch von Microsoft schon ein unsauberer Hack durchgeführt in dem man einen Parameter einen Zeigerwert zugeordnet hatte - Mit den daran hängenden Problemen.

    Nein, ich würde dir absolut davon abraten. Und nein, einen std::vector kann man als solchen nicht übergeben. Es gibt genügend möglichkeiten ohne das Windowsmessagehandling Daten typsicher zu übergeben. Welche Variante in deinem Fall möglich ist hängt aber davon ab wieweit sich Sender und Empfänger kennen...

    cu André


Anmelden zum Antworten