Bug in CMonthCalCtrl ???



  • hi leute,

    ich schreib da grad n tool und brauche dazu etwas um kopfortabel ein datum einzustellen. Dafür bietet sich natürlich der CMonthCalCtrl an...
    Leider gibt mir das Control nicht immer das zurück, was angewählt wurde ... Das hängt auch davon ab, ob ich debug oder release version kompiliere. Mal sind es 12 tage zu wenig, mal 58 tage zuviel ... is auch von tag zu tag unterschiedlich. Da is eindeutig was faul. Habe schon viel rumgetestet ... bekomme einfach keine zuverlässigen Werte.

    Ausserdem sollte auch

    COleDateTime codtDateTime;
    m_cmccCalCtrl.GetCurSel(codtDateTime);
    

    funktionieren ... liefert bei mir aber immer nur n "invalid" datum zurück.

    doofes problem ... kennt das jemand ? gibt es eine lösung ? gibt es alternativen ?

    Vielleicht könnte es jemand von euch mal testen ???
    Einfach neue Dialogfeldanwendung machen, einen MonatsKalender draufziehen, im klassenassi ne CMonthCalCtrl Control Variable dafür anlegen. Dann n butten auf den dialog und in die Buttonfunktion

    COleDateTime dateTime;
    m_cmccCalCtrl.GetCurSel(dateTime);
    MessageBox(dateTime.Format("%d.%m.%Y, %H:%M:%S"));
    
    CTime time;
    m_cmccCalCtrl.GetCurSel(time);
    MessageBox(time.Format("%d.%m.%Y, %H:%M:%S"));
    

    reinschreiben. Fertig.
    Jetzt noch im Debug und Release version testen ... DANKE

    Ach ja ... ich Benutze VS6 SP5

    grüsse



  • oh man,

    sorry ... hab mal wieder erst gepostet und dann gesucht ...

    also die GetCurSel is buggie ... deshalb die OnSelchange nutzen ...

    void CMyDlg::OnSelchangeMonatskalender(NMHDR* pNMHDR, LRESULT* pResult)  
    { 
      LPNMSELCHANGE pSelChange = reinterpret_cast<LPNMSELCHANGE>(pNMHDR); 
      m_pKalenderDatum = CTime( pSelChange->stSelStart).Format(_T("%d.%m.%y")); 
      UpdateData(FALSE); 
      *pResult = 0; 
    }
    

    lösung kam von RenéG
    http://www.c-plusplus.net/forum/viewtopic.php?t=5616

    grüsse



  • Danke für die Lösung 🙂


Log in to reply