Unterscheidung zweier CSpinButtonCtrls

Baron Sengir

Mitglied
Hallo Ihr Lieben,

ich benötige mal wieder Eure kompetente Hilfe:

Ich habe eine Dialogfeldanwendung, benutze VC++ 2005 mit MFC. In meinem Dialog benötige ich zwei CSpinButtonCtrls, die ich über den Ressourceneditor eingebunden habe. Ich habe darauf Membervariablen gelegt: m_SpinUsed und m_SpinMark (natürlich vom Typ CSpinButtonCtrl).

Nun muss ich auf das Klicken mit der Maus auf einem der beiden Pfeile reagieren. Ich habe bisher, wenn ich nur einen CSpinButtonCtrl benötigte, es immer über die Nachricht WM_VSCROLL folgendermaßen gemacht:

Code:
void CSpin::OnVScroll(UINT nSBCode, UINT nPos, CScrollPab* pScrollBar)
{
  // hier nun den Rest, da ja nPos den aktuellen Wert des CSpinButtonCtrl liefert
...
}

Selbstverständlich haben beide CSpinButtonCtrl unterschiedliche IDs. Tja, bei einem CSpinButtonCtrl klappt's so super, nur bei zweien nicht, da ich sie nicht unterscheiden kann, was ich aber logischerweise muss. nSBCode liefert bei beiden Ctrls die gleichen Werte :-(

Wie kann ich unterscheiden, welches CSpinButtonCtrl das Ereignis ausgelöst hat?

Oder sollte ich ganz anders verfahren?

Liebe Grüße
Markus
 
Hallo Markus,

so wie ich das verstehe, hast du eine eigene Klasse von CSpinButtonCtrl abgeleitet und wertest dort die Nachricht WM_VCSCROLL aus? In der Situation muss das Objekt seine eigene ID kennen. Die kannst du mit GetDlgCtrlID() (innerhalb der OnVScroll()-Methode) ermitteln.

Allerdings erscheint mir die Benutzung von VM_VSCROLL etwas ungewöhnlich. Du könntest doch auch innerhalb des Dialogs die Nachricht UDN_DELTAPOS verarbeiten. Damit hast du für jeden Spinbutton einen eigenen Event.

Gruß
MCoder
 
Moin,

Danke. Irgendwie war ich gestern Abend wohl zu müde und heute morgen noch nicht wach genug. UDN_DELTAPOS habe ich überlesen :-( *schäm*

Danke, mit UDN_DELTAPOS funktioniert's so wie gewollt.

Liebe Grüße
Markus
 
Zurück