IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[MFC] Comment connaitre la date courante avec un CMonthCalCt


Sujet :

MFC

  1. #1
    Membre habitué
    Avatar de barthelv
    Inscrit en
    Mars 2003
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 267
    Points : 126
    Points
    126
    Par défaut [MFC] Comment connaitre la date courante avec un CMonthCalCt
    Bonjour,

    Voici mon souci, j'ai une dialogbox avec un CMonthCalCtrl et une listctrl. Si je clique sur un jour du CMonthCalCtrl, je suis appele dans la methode:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void CTODOManagerDlg::OnSelchangeMonthcalendar(NMHDR* pNMHDR, LRESULT* pResult) 
    {
      // TODO: Add your control notification handler code here
      CTime MyTime;
      CString csMyDate;
     
      m_Calendar.GetCurSel(MyTime);
      csMyDate.Format("%04d.%02d.%02d", MyTime.GetYear(), MyTime.GetMonth(), MyTime.GetDay());
     
      *pResult = 0;
    }
    Si je clique ainsi sur diferentes dates, la date que je recupere dans csMyDate est correcte. Mais si je clique sur ma liste, et que du coup je mets le focus sur elle, une fois que je viens cliquer sur le CMonthCalendarCtrl, les dates que je recupere sont fausses (en fait elle sont decalees).

    Comment puis-je faire pour que cela ne soit pas le cas ?

    Merci

  2. #2
    Membre habitué

    Inscrit en
    Mai 2005
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 132
    Points : 171
    Points
    171
    Par défaut
    Bonjour,

    il y a une error en GetCurSel. Je l'ai trouve aussi il y a plusieurs mois. Il faut utiliser suivant :

    /*
    CTime ct;
    m_MonthCal.GetCurSel(ct);
    m_strDate.Format(_T("%02d/%02d/%2d"),ct.GetMonth(),ct.GetDay(),ct.GetYear()); SYSTEMTIME sysTime;
    */

    ::SendMessage(m_MonthCal.GetSafeHwnd(), MCM_GETCURSEL, 0, (LPARAM)&sysTime);
    m_strDate.Format(_T("%02d/%02d/%02d"), sysTime.wMonth, sysTime.wDay, sysTime.wYear);

    Bonne chance. Fredy

  3. #3
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    pour infos voici la definition de GetCurSel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    _AFXDTCTL_INLINE BOOL CMonthCalCtrl::GetCurSel(LPSYSTEMTIME pDateTime) const
    	{ ASSERT(m_hWnd != NULL); return (BOOL) ::SendMessage(m_hWnd, MCM_GETCURSEL, 0, (LPARAM) pDateTime); }

  4. #4
    Membre habitué
    Avatar de barthelv
    Inscrit en
    Mars 2003
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 267
    Points : 126
    Points
    126
    Par défaut
    Merci beaucoup pour cette indication. En effet, je me doutais bien qu'il y avait un bug dans cette fonction.


  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Euh... Où est le bug exactement?
    Je n'arrive pas à voir la différence profonde entre GetCurSel() et le code posté... :
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/02/2011, 22h33
  2. Réponses: 1
    Dernier message: 23/11/2009, 09h47
  3. [C#] Comment connaitre le répertoire courant d'exécution ?
    Par romstarr dans le forum Services Web
    Réponses: 4
    Dernier message: 30/08/2009, 17h37
  4. Réponses: 2
    Dernier message: 09/08/2007, 19h01
  5. Réponses: 2
    Dernier message: 14/12/2006, 09h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo