Drehfelder



  • Hallo Leute.

    Also ich habe ein Drehfeld in Verbindung mit einer EditBox. Wenn ich auf das Drehfeld klicke (quasi denn wert erhöhe, Startwert=0) wird mir in der EditBox ein 1 gezeigt, was ja auch richtig ist. Ich hab auf das drehfeld eine Membervariable gelegt, und mir mit der funktion GetPos() die Position sagen lassen nachdem ich den Wert erhöht hab. GetPos() gib mir den wert 0 zurück?!

    Somit funktioniert auch nicht das Ergebnis meines Progs. Den dies soll wenn man auf den SpinButton drückt ein Quadrat malen und wenn man nochmal drückt das Quadrat um 10px vergrößern.

    void CVariabelDlg::m_fMalfeld()
    {
        CString temp;
        temp.Format("%6d",m_spin.GetPos());
        MessageBox(temp,"SpinPos",MB_OK);
        if (m_spin.GetPos()>0)
        {
            CClientDC Bild(this);
            CBrush CBausmalen;
            CBausmalen.CreateSolidBrush(m_StartFarbe);
            Bild.SelectObject(CBausmalen);
            Bild.Rectangle(10,10,(m_spin.GetPos())*10+10,m_spin.GetPos()*10+10);
            CBausmalen.DeleteObject();
            UpdateWindow();
        }
    }
    


  • Wann rufst denn die Funktion auf?



  • *grummel*

    void CVariabelDlg::OnDeltaposSpin1(NMHDR* pNMHDR, LRESULT* pResult) 
    {
        NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
    
        m_fMalfeld();
        *pResult = 0;
    }
    

    Sorry das ich das nicht mit hin geschrieben hab. Dachte versteht sich von selbst.



  • Also hat heir niemand eine Ahnung wie ich das handhaben muß?

    Ich weiß jetzt warum es nicht funzt! aber ich weiß nicht wie ich das ganze behebe.

    Grund:
    Weil das Control intern die Position erst wechselt nachdem die Message UDN_DELTAPOS gesendet wurde, da man ja auch mit *pResult festlegen muss, ob dieser Wechsel überhaupt gestattet ist. In deinem Programmabschnitt wird lediglich die alte Position ausgelesen.

    Woher bekomme ich nun die Aktuelle Posi?



  • Also hat heir niemand eine Ahnung wie ich das handhaben muß?

    !!! Es ist doch so wunderschön in der MSDN erklärt !!!


Anmelden zum Antworten