Accueil > > > PETIT CODE DE LEÇON D'ANGLAIS
PETIT CODE DE LEÇON D'ANGLAIS
Information sur la source
Description
Voici un petit programme édité sous Visual C++ 2003 mais fonctionne également sur VS 06 et VS 2005! Il s'agit de l'apprentissage des FAUX AMIS et des VERBES IRREGULIERS en anglais. Les données se trouvent en fait dans un fichier XML
Source
void CEnglish_GrammarDlg::OnBnClickedLoadxml()
{
CoInitialize(NULL);
srand(time(NULL));
CXMLDOMDocument m_xmlEnglishDoc;
CXMLDOMNode xmlWordBookNode;
CXMLDOMNodeList xmlWordBookNodeList;
CXMLDOMNode xmlWorkSheetNode1;//Faux Amis
CXMLDOMNode xmlWorkSheetNode2;//Irregular Verbs
CXMLDOMNodeList xmlRowNodeList;
CString test = "";
if (!m_xmlEnglishDoc.CreateDispatch(_T("MSXML.DOMDocument")))
return;
if(!m_xmlEnglishDoc.load(COleVariant(_T("ENGLISH (FAUX AMIS).xml"))))
{
AfxMessageBox(_T("ENGLISH (FAUX AMIS).xml NON EXISTENT\nOR ERROR INSIDE THE XML!!!!"));
return;
}
xmlWordBookNode.AttachDispatch(m_xmlEnglishDoc.get_documentElement());
xmlWordBookNodeList.AttachDispatch(xmlWordBookNode.get_childNodes());
xmlWorkSheetNode1.AttachDispatch(xmlWordBookNodeList.get_item(0));
xmlRowNodeList.AttachDispatch(xmlWorkSheetNode1.get_childNodes());
m_iFauxAmisCount = xmlRowNodeList.get_length();//101
for (int i = 0; i < xmlRowNodeList.get_length(); i++)
{
CXMLDOMNodeList xmlCellNodeList;
CXMLDOMNode xmlRowNode;
CXMLDOMNode xmlDataNode;
xmlRowNode.AttachDispatch(xmlRowNodeList.get_item(i));
if (xmlRowNode.get_baseName() == "Word")
{
xmlCellNodeList.AttachDispatch(xmlRowNode.get_childNodes());
xmlDataNode.AttachDispatch(xmlCellNodeList.get_item(0));
m_EnArray.push_back((LPCTSTR)xmlDataNode.get_text());
xmlDataNode.DetachDispatch();
xmlDataNode.AttachDispatch(xmlCellNodeList.get_item(1));
m_FrArray.push_back((LPCTSTR)xmlDataNode.get_text());
xmlDataNode.DetachDispatch();
}
xmlRowNode.DetachDispatch();
xmlCellNodeList.DetachDispatch();
}
xmlRowNodeList.DetachDispatch();
xmlWorkSheetNode2.AttachDispatch(xmlWordBookNodeList.get_item(1));
xmlRowNodeList.AttachDispatch(xmlWorkSheetNode2.get_childNodes());
m_iIrregularCount = xmlRowNodeList.get_length();//126
for (int i = 0; i < xmlRowNodeList.get_length(); i++)
{
CXMLDOMNodeList xmlCellNodeList;
CXMLDOMNode xmlRowNode;
CXMLDOMNode xmlDataNode;
xmlRowNode.AttachDispatch(xmlRowNodeList.get_item(i));
if (xmlRowNode.get_baseName() == "Verb")
{
xmlCellNodeList.AttachDispatch(xmlRowNode.get_childNodes());
xmlDataNode.AttachDispatch(xmlCellNodeList.get_item(0));
m_InfArray.push_back((LPCTSTR)xmlDataNode.get_text());
xmlDataNode.DetachDispatch();
xmlDataNode.AttachDispatch(xmlCellNodeList.get_item(1));
m_SimplePastArray.push_back((LPCTSTR)xmlDataNode.get_text());
xmlDataNode.DetachDispatch();
xmlDataNode.AttachDispatch(xmlCellNodeList.get_item(2));
m_PpArray.push_back((LPCTSTR)xmlDataNode.get_text());
xmlDataNode.DetachDispatch();
xmlDataNode.AttachDispatch(xmlCellNodeList.get_item(3));
m_TranslArray.push_back((LPCTSTR)xmlDataNode.get_text());
xmlDataNode.DetachDispatch();
}
xmlRowNode.DetachDispatch();
xmlCellNodeList.DetachDispatch();
}
xmlRowNodeList.ReleaseDispatch();
xmlWorkSheetNode1.ReleaseDispatch();
xmlWorkSheetNode2.ReleaseDispatch();
xmlWordBookNodeList.ReleaseDispatch();
xmlWordBookNode.ReleaseDispatch();
m_xmlEnglishDoc.ReleaseDispatch();
GetDlgItem(IDC_NEXTWORD)->EnableWindow(TRUE);
GetDlgItem(IDC_FAUXAMIS_TOCORRECT)->EnableWindow(TRUE);
GetDlgItem(IDC_NEXTVERB)->EnableWindow(TRUE);
GetDlgItem(IDC_IRREGULARVERB_TOCORRECT)->EnableWindow(TRUE);
GetDlgItem(IDC_LOADXML)->EnableWindow(FALSE);
m_iFauxAmisStartIndex = rand() % m_iFauxAmisCount;
m_iIrregularStartIndex = rand() % m_iIrregularCount;
CoUninitialize();
}
void CEnglish_GrammarDlg::OnBnClickedNextword()
{
GetDlgItem(IDC_LABEL_FRENCH)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDITFRENCH)->SetWindowText("");
m_edEnglish.SetWindowText(m_EnArray[m_iFauxAmisStartIndex].c_str());
m_labFrench.SetWindowText(m_FrArray[m_iFauxAmisStartIndex].c_str());
m_iFauxAmisStartIndex = (++m_iFauxAmisStartIndex) % m_iFauxAmisCount;
}
void CEnglish_GrammarDlg::OnBnClickedFauxamisTocorrect()
{
GetDlgItem(IDC_LABEL_FRENCH)->ShowWindow(SW_SHOW);
CString str = m_FrArray[(m_iFauxAmisStartIndex - 1) % m_iFauxAmisCount].c_str();
UpdateData(TRUE);
if (str.CompareNoCase(m_strFrench) == 0)
AfxMessageBox(_T("CORRECT"));
}
void CEnglish_GrammarDlg::OnBnClickedIrregularverbTocorrect()
{
GetDlgItem(IDC_LABEL_INFINITIVE)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_LABEL_SIMPLEPAST)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_LABEL_PP)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_LABEL_TRANSLATION)->ShowWindow(SW_SHOW);
CString str1 = m_InfArray[(m_iIrregularStartIndex - 1) % m_iIrregularCount].c_str();
CString str2 = m_SimplePastArray[(m_iIrregularStartIndex - 1) % m_iIrregularCount].c_str();
CString str3 = m_PpArray[(m_iIrregularStartIndex - 1) % m_iIrregularCount].c_str();
CString str4 = m_TranslArray[(m_iIrregularStartIndex - 1) % m_iIrregularCount].c_str();
UpdateData(TRUE);
CString strError = "ERRORS :\n";
if (str1.CompareNoCase(m_strInfinitive) != 0)
strError += "- Infinitive\n";
if (str2.CompareNoCase(m_strSimplePast) != 0)
strError += "- Simple past\n";
if (str3.CompareNoCase(m_strPP) != 0)
strError += "- Past participle\n";
if (str4.CompareNoCase(m_strTranslation) != 0)
strError += "- Translation\n";
if (strError == "ERRORS :\n")
AfxMessageBox(_T("100% CORRECT"));
else
AfxMessageBox(strError);
}
void CEnglish_GrammarDlg::OnBnClickedNextverb()
{
GetDlgItem(IDC_LABEL_INFINITIVE)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_LABEL_SIMPLEPAST)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_LABEL_PP)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_LABEL_TRANSLATION)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDITINFINITIVE)->SetWindowText("");
GetDlgItem(IDC_EDITSIMPLEPAST)->SetWindowText("");
GetDlgItem(IDC_EDITPP)->SetWindowText("");
GetDlgItem(IDC_EDITTRANSLATION)->SetWindowText("");
int nEdit = rand() % 4;
switch(nEdit)
{
case 0:
m_edInfinitive.SetWindowText(m_InfArray[m_iIrregularStartIndex].c_str());
break;
case 1:
m_edSimplePast.SetWindowText(m_SimplePastArray[m_iIrregularStartIndex].c_str());
break;
case 2:
m_edPP.SetWindowText(m_PpArray[m_iIrregularStartIndex].c_str());
break;
case 3:
m_edTranslation.SetWindowText(m_TranslArray[m_iIrregularStartIndex].c_str());
break;
}
m_labInfinitive.SetWindowText(m_InfArray[m_iIrregularStartIndex].c_str());
m_labSimplePast.SetWindowText(m_SimplePastArray[m_iIrregularStartIndex].c_str());
m_labPP.SetWindowText(m_PpArray[m_iIrregularStartIndex].c_str());
m_labTranslation.SetWindowText(m_TranslArray[m_iIrregularStartIndex].c_str());
m_iIrregularStartIndex = (++m_iIrregularStartIndex) % m_iIrregularCount;
}
Conclusion
N'hésitez pas à me poser des questions
Historique
- 01 novembre 2008 17:27:55 :
- XML enhancement !!
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Le XML et visual C++ [ par sevay ]
Bonjour à tous,Le problème qui m'arrive est que je dois lire un fichier en XML dans un prog C++ sous visual studio 6.J'ai bien lu les message qui en p
ajouter le bibliothèque XML et un appel à une commande dos dans un programme C sous Visual Studio [ par boualiasma ]
Bonjour, Je suis entrain de programmer en C avec Visual studio 2008 sous Windows XP. Je voudrais parser un fichier XML dans mon programme C. J'ai trou
problème de compilation de bibliothèque XMlL dans un programme C sous visual Studio. [ par boualiasma ]
Salut,- j' extrais tous les sept archives libxml2-2.7.3.win32, iconv-1.9.2.win32, zlib-1.2.3.win32, libxmlsec-1.2.11+.win32, libxslt-1.1.24.win32, xsl
Installation Visual studio C++ 2003 sous XP 64bits [ par Quemar ]
Bonjour à tous,je ne sais pas si je suis au bon endroit pour poser cette question mais la voila:J'utilise depuis 5ans Visual studio 2003 pour créer de
convertir un fichier texte en fichier XML. [ par boualiasma ]
Salut à tous !Je suis en train d'essayer de convertir un fichier texte en xml.Ce fichier texte est structuré, et j'ai donc un identifiant en début de
Configuration de visual c++ v6 pour mysql [ par ovni00237 ]
Salut mes frères du club.Je veut créer une application windows dans laquelle j'utilise les données (valeurs réelle) d'une relation MYSQL pour tracé de
[A SUPPRIMER]suestion a propos de visual c++ [ par yasseross ]
bonjour .. je sus un programmeur de visual basic et je veux passé au microsoft visual c++ et je sais pas est ce que cette langue est tres fort pou
gérer l'exécution de 2 logiciels en c++ ( visual C++) [ par sunvi ]
Bonjour, Je suis une étudiante en ingénierie réseaux et télécoms et je fais un stage où je dois programmer sur windows en C++, langage que je ne conna
Comment extraire des informations à partir d'un fichier XML ? [ par boualiasma ]
Bonjour, Je suis entrain de programmer en C avec Visual studio 2008 sous Windows XP. Je voudrais extraire des informations à partir d'un fichier XML
Traduire données hexadecimal à partir d'un fichier XML [ par pgcyohome ]
Bonsoir, Je ne connais pas grand chose aux fichiers XML, et j'aimerai vous soumettre ma problématique. J'ai en entrée un fichier avec des données he
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|