Je suis à la recherche d'un exemple d'utilisation d'une List Control dans
une boite de dialogue.
Je voudrais pouvoir remplir la liste de la boite de dialogue avec les donnée
sérialisées dans une architecture MFC Document/Vue...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
antoine
"Olivier" wrote in message news:429a1a34$0$306$
Bonjour
Je suis à la recherche d'un exemple d'utilisation d'une List Control dans une boite de dialogue.
T'as regardé les divers exemples de MSDN ? par exemple : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcsample/ht ml/_sample_mfc_LISTHDR.asp
"Olivier" <ope@club-internet.fr> wrote in message
news:429a1a34$0$306$7a628cd7@news.club-internet.fr...
Bonjour
Je suis à la recherche d'un exemple d'utilisation d'une List Control dans
une boite de dialogue.
T'as regardé les divers exemples de MSDN ?
par exemple :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcsample/ht
ml/_sample_mfc_LISTHDR.asp
Je suis à la recherche d'un exemple d'utilisation d'une List Control dans une boite de dialogue.
T'as regardé les divers exemples de MSDN ? par exemple : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcsample/ht ml/_sample_mfc_LISTHDR.asp
Olivier
Oui mais aucun ne correspond à ce que je recherches... Il sont tous dans la fenêtre courante de l'application et pas dans une boite de dialogue... En fait mon probleme c'est pour remplir la liste de la boite de dialogue avec les données stockées dans un CObArray du document...
Oui mais aucun ne correspond à ce que je recherches...
Il sont tous dans la fenêtre courante de l'application et pas dans une boite
de dialogue...
En fait mon probleme c'est pour remplir la liste de la boite de dialogue
avec les données stockées dans un CObArray du document...
Oui mais aucun ne correspond à ce que je recherches... Il sont tous dans la fenêtre courante de l'application et pas dans une boite de dialogue... En fait mon probleme c'est pour remplir la liste de la boite de dialogue avec les données stockées dans un CObArray du document...
antoine
"Olivier" wrote in message news:429a2d0d$0$304$
Oui mais aucun ne correspond à ce que je recherches... Il sont tous dans la fenêtre courante de l'application et pas dans une
boite
de dialogue...
L'exemple donné est bien dans une boite de dialogue !
"Olivier" <ope@club-internet.fr> wrote in message
news:429a2d0d$0$304$7a628cd7@news.club-internet.fr...
Oui mais aucun ne correspond à ce que je recherches...
Il sont tous dans la fenêtre courante de l'application et pas dans une
boite
de dialogue...
L'exemple donné est bien dans une boite de dialogue !
Oui mais aucun ne correspond à ce que je recherches... Il sont tous dans la fenêtre courante de l'application et pas dans une
boite
de dialogue...
L'exemple donné est bien dans une boite de dialogue !
Olivier
> L'exemple donné est bien dans une boite de dialogue !
Oui mais en fait moi je suis dans une architecture Document/Vue (MFC). Ma classe document (CDocument) ouvre une boite de dialogue avec une liste. La boite de dialogue est traitée par une autre classe (CDialog). Les données (CObArray) à mettre dans la liste de la boite de dialogue sont contenues dans la classe CDocument. Voila mon probleme...
> L'exemple donné est bien dans une boite de dialogue !
Oui mais en fait moi je suis dans une architecture Document/Vue (MFC).
Ma classe document (CDocument) ouvre une boite de dialogue avec une liste.
La boite de dialogue est traitée par une autre classe (CDialog).
Les données (CObArray) à mettre dans la liste de la boite de dialogue sont
contenues dans la classe CDocument.
Voila mon probleme...
> L'exemple donné est bien dans une boite de dialogue !
Oui mais en fait moi je suis dans une architecture Document/Vue (MFC). Ma classe document (CDocument) ouvre une boite de dialogue avec une liste. La boite de dialogue est traitée par une autre classe (CDialog). Les données (CObArray) à mettre dans la liste de la boite de dialogue sont contenues dans la classe CDocument. Voila mon probleme...
adebaene
Olivier a écrit :
> L'exemple donné est bien dans une boite de dialogue !
Oui mais en fait moi je suis dans une architecture Document/Vue (MFC). Ma classe document (CDocument) ouvre une boite de dialogue avec une liste. La boite de dialogue est traitée par une autre classe (CDialog). Les données (CObArray) à mettre dans la liste de la boite de dialogue sont contenues dans la classe CDocument. Voila mon probleme...
La classe View a une méthode GetDocument. A partir de là, il suffit que ton document propose une méthode publique permettant d'accéder à ton tableau. Où est le problème?
Arnaud MVP - VC
Olivier a écrit :
> L'exemple donné est bien dans une boite de dialogue !
Oui mais en fait moi je suis dans une architecture Document/Vue (MFC).
Ma classe document (CDocument) ouvre une boite de dialogue avec une liste.
La boite de dialogue est traitée par une autre classe (CDialog).
Les données (CObArray) à mettre dans la liste de la boite de dialogue sont
contenues dans la classe CDocument.
Voila mon probleme...
La classe View a une méthode GetDocument. A partir de là, il suffit
que ton document propose une méthode publique permettant d'accéder à
ton tableau. Où est le problème?
> L'exemple donné est bien dans une boite de dialogue !
Oui mais en fait moi je suis dans une architecture Document/Vue (MFC). Ma classe document (CDocument) ouvre une boite de dialogue avec une liste. La boite de dialogue est traitée par une autre classe (CDialog). Les données (CObArray) à mettre dans la liste de la boite de dialogue sont contenues dans la classe CDocument. Voila mon probleme...
La classe View a une méthode GetDocument. A partir de là, il suffit que ton document propose une méthode publique permettant d'accéder à ton tableau. Où est le problème?
Arnaud MVP - VC
Olivier
>La classe View a une méthode GetDocument. A partir de là, il suffit que ton document propose une méthode publique permettant d'accéder à ton tableau. Où est le problème?
Je n'utilise pas la classe View... Ma classe Doc stock les infos (sérialisées) dans un CObArray. Dans le menu g mis une option "Rechercher", quand cette option est activée la classe Doc exécute les lignes suivantes :
void CSiteMapDoc::OnFindSite() { CFindSite dlg; CListCtrl* pList = (CListCtrl*) GetDlgItem(dlg, IDC_LISTFIND); // Invoque la boite de dialogue dlg.DoModal(); int nbRec = GetSize(); // Retire le nombre d'enregistrements for (int i=0; i<nbRec;i++) { pList->InsertItem(i, ""); pList->SetItemText(i, 0, "ESSAI"); } }
Ma boite de dialogue apparait bien, mais il n'y a rien dans la liste... Quand je clique sur OK ou ANNULER de la boite de dialogue g un plantage...
Cordialement,
Olivier
>La classe View a une méthode GetDocument. A partir de là, il suffit
que ton document propose une méthode publique permettant d'accéder à
ton tableau. Où est le problème?
Je n'utilise pas la classe View...
Ma classe Doc stock les infos (sérialisées) dans un CObArray.
Dans le menu g mis une option "Rechercher", quand cette option est activée
la classe Doc exécute les lignes suivantes :
void CSiteMapDoc::OnFindSite()
{
CFindSite dlg;
CListCtrl* pList = (CListCtrl*) GetDlgItem(dlg, IDC_LISTFIND);
// Invoque la boite de dialogue
dlg.DoModal();
int nbRec = GetSize(); // Retire le nombre d'enregistrements
for (int i=0; i<nbRec;i++)
{
pList->InsertItem(i, "");
pList->SetItemText(i, 0, "ESSAI");
}
}
Ma boite de dialogue apparait bien, mais il n'y a rien dans la liste...
Quand je clique sur OK ou ANNULER de la boite de dialogue g un plantage...
>La classe View a une méthode GetDocument. A partir de là, il suffit que ton document propose une méthode publique permettant d'accéder à ton tableau. Où est le problème?
Je n'utilise pas la classe View... Ma classe Doc stock les infos (sérialisées) dans un CObArray. Dans le menu g mis une option "Rechercher", quand cette option est activée la classe Doc exécute les lignes suivantes :
void CSiteMapDoc::OnFindSite() { CFindSite dlg; CListCtrl* pList = (CListCtrl*) GetDlgItem(dlg, IDC_LISTFIND); // Invoque la boite de dialogue dlg.DoModal(); int nbRec = GetSize(); // Retire le nombre d'enregistrements for (int i=0; i<nbRec;i++) { pList->InsertItem(i, ""); pList->SetItemText(i, 0, "ESSAI"); } }
Ma boite de dialogue apparait bien, mais il n'y a rien dans la liste... Quand je clique sur OK ou ANNULER de la boite de dialogue g un plantage...
Cordialement,
Olivier
Arnaud Debaene
Olivier wrote:
La classe View a une méthode GetDocument. A partir de là, il suffit que ton document propose une méthode publique permettant d'accéder à ton tableau. Où est le problème?
Je n'utilise pas la classe View...
??? Tu as dit que tu utilisait l'architecture Doc/View, faudrait savoir...
Ma classe Doc stock les infos (sérialisées) dans un CObArray. Dans le menu g mis une option "Rechercher", quand cette option est activée la classe Doc exécute les lignes suivantes :
?? Qu'est ce qu'un GetDlgItem fait (et fonctionne!) dans un document??? Ca m'a pas l'air très catholique comme architecture tout çà... Des fois, IDC_LISTFIND ne serait pas définie dans la boite de dialogue CFindSite, plutôt que dans le document?
// Invoque la boite de dialogue
Avant d'invoquer la boite de dialogue, il faut lui donner les infos sur ce qu'elle doit afficher! Et puis je ne vois pas d CObjArray dans tout çà...
dlg.DoModal();
Le code après cette ligne est exécuté *après* que tu ais fermé la boite de dialogue : DoModal est un appel bloquant qui ne rend la main que quand la boite de dialogue est refermée.
int nbRec = GetSize(); // Retire le nombre d'enregistrements for (int i=0; i<nbRec;i++) { pList->InsertItem(i, ""); pList->SetItemText(i, 0, "ESSAI"); } }
Ma boite de dialogue apparait bien, mais il n'y a rien dans la liste... Quand je clique sur OK ou ANNULER de la boite de dialogue g un plantage...
Dans les grandes lignes, ce qu'il faut faire (atention, code non compilable, c'est juste pour donner l'idée) : class CFindSite : public CDialog { private: CObjArray const* m_data_to_display; public: void SetDataToDisplay(const CObjArray& data) { m_data_to_display=&data; }
void OnCreate() { //affiche le contenu de m_data_to_display dans IDC_LISTFIND } };
et dans ton document : void CSiteMapDoc::OnFindSite() { CFindSite dlg; dlg.SetDataToDisplay(m_array); dlg.DoModal(); }
Arnaud
Olivier wrote:
La classe View a une méthode GetDocument. A partir de là, il suffit
que ton document propose une méthode publique permettant d'accéder à
ton tableau. Où est le problème?
Je n'utilise pas la classe View...
??? Tu as dit que tu utilisait l'architecture Doc/View, faudrait savoir...
Ma classe Doc stock les infos (sérialisées) dans un CObArray.
Dans le menu g mis une option "Rechercher", quand cette option est
activée la classe Doc exécute les lignes suivantes :
?? Qu'est ce qu'un GetDlgItem fait (et fonctionne!) dans un document??? Ca
m'a pas l'air très catholique comme architecture tout çà... Des fois,
IDC_LISTFIND ne serait pas définie dans la boite de dialogue CFindSite,
plutôt que dans le document?
// Invoque la boite de dialogue
Avant d'invoquer la boite de dialogue, il faut lui donner les infos sur ce
qu'elle doit afficher! Et puis je ne vois pas d CObjArray dans tout çà...
dlg.DoModal();
Le code après cette ligne est exécuté *après* que tu ais fermé la boite de
dialogue : DoModal est un appel bloquant qui ne rend la main que quand la
boite de dialogue est refermée.
int nbRec = GetSize(); // Retire le nombre d'enregistrements
for (int i=0; i<nbRec;i++)
{
pList->InsertItem(i, "");
pList->SetItemText(i, 0, "ESSAI");
}
}
Ma boite de dialogue apparait bien, mais il n'y a rien dans la
liste... Quand je clique sur OK ou ANNULER de la boite de dialogue g
un plantage...
Dans les grandes lignes, ce qu'il faut faire (atention, code non compilable,
c'est juste pour donner l'idée) :
class CFindSite : public CDialog
{
private:
CObjArray const* m_data_to_display;
public:
void SetDataToDisplay(const CObjArray& data)
{
m_data_to_display=&data;
}
void OnCreate()
{
//affiche le contenu de m_data_to_display dans IDC_LISTFIND
}
};
et dans ton document :
void CSiteMapDoc::OnFindSite()
{
CFindSite dlg;
dlg.SetDataToDisplay(m_array);
dlg.DoModal();
}
La classe View a une méthode GetDocument. A partir de là, il suffit que ton document propose une méthode publique permettant d'accéder à ton tableau. Où est le problème?
Je n'utilise pas la classe View...
??? Tu as dit que tu utilisait l'architecture Doc/View, faudrait savoir...
Ma classe Doc stock les infos (sérialisées) dans un CObArray. Dans le menu g mis une option "Rechercher", quand cette option est activée la classe Doc exécute les lignes suivantes :
?? Qu'est ce qu'un GetDlgItem fait (et fonctionne!) dans un document??? Ca m'a pas l'air très catholique comme architecture tout çà... Des fois, IDC_LISTFIND ne serait pas définie dans la boite de dialogue CFindSite, plutôt que dans le document?
// Invoque la boite de dialogue
Avant d'invoquer la boite de dialogue, il faut lui donner les infos sur ce qu'elle doit afficher! Et puis je ne vois pas d CObjArray dans tout çà...
dlg.DoModal();
Le code après cette ligne est exécuté *après* que tu ais fermé la boite de dialogue : DoModal est un appel bloquant qui ne rend la main que quand la boite de dialogue est refermée.
int nbRec = GetSize(); // Retire le nombre d'enregistrements for (int i=0; i<nbRec;i++) { pList->InsertItem(i, ""); pList->SetItemText(i, 0, "ESSAI"); } }
Ma boite de dialogue apparait bien, mais il n'y a rien dans la liste... Quand je clique sur OK ou ANNULER de la boite de dialogue g un plantage...
Dans les grandes lignes, ce qu'il faut faire (atention, code non compilable, c'est juste pour donner l'idée) : class CFindSite : public CDialog { private: CObjArray const* m_data_to_display; public: void SetDataToDisplay(const CObjArray& data) { m_data_to_display=&data; }
void OnCreate() { //affiche le contenu de m_data_to_display dans IDC_LISTFIND } };
et dans ton document : void CSiteMapDoc::OnFindSite() { CFindSite dlg; dlg.SetDataToDisplay(m_array); dlg.DoModal(); }
Arnaud
Olivier
Salut
J'ai testé ton code... Tout fonctionne bien sauf que je n'ais pas accès aux fonctionnalités de CObArray : m_data_to_display.GetSize() et m_data_to_display.GetAt() ne fonctionnent pas... Je débute...
Olivier
Salut
J'ai testé ton code...
Tout fonctionne bien sauf que je n'ais pas accès aux fonctionnalités de
CObArray :
m_data_to_display.GetSize() et m_data_to_display.GetAt() ne fonctionnent
pas...
Je débute...
J'ai testé ton code... Tout fonctionne bien sauf que je n'ais pas accès aux fonctionnalités de CObArray : m_data_to_display.GetSize() et m_data_to_display.GetAt() ne fonctionnent pas... Je débute...
Olivier
adebaene
Olivier a écrit :
Salut
J'ai testé ton code... Tout fonctionne bien sauf que je n'ais pas accès aux fonctionnalités de CObArray : m_data_to_display.GetSize() et m_data_to_display.GetAt() ne fonctionnent pas...
m_data_to_display est un pointeur, donc m_data_to_display->GetSize() et m_data_to_display->GetAt()
Je débute...
Si tu as du mal avec les pointeurs, je te conseille dans un 1er temps de laisser tomber les MFC et tout ce qui est IHM graphique, et de te concentrer sur l'apprentissage du *langage* C++ dans des applications console plus simples. Là, tu essaies d'apprendre des tas de choses différentes en même temps (MFC, Win32, langage C++, etc...) et ce n'est jamais une bonne méthode.
Arnaud MVP - VC
Olivier a écrit :
Salut
J'ai testé ton code...
Tout fonctionne bien sauf que je n'ais pas accès aux fonctionnalités de
CObArray :
m_data_to_display.GetSize() et m_data_to_display.GetAt() ne fonctionnent
pas...
m_data_to_display est un pointeur, donc m_data_to_display->GetSize() et
m_data_to_display->GetAt()
Je débute...
Si tu as du mal avec les pointeurs, je te conseille dans un 1er temps
de laisser tomber les MFC et tout ce qui est IHM graphique, et de te
concentrer sur l'apprentissage du *langage* C++ dans des applications
console plus simples. Là, tu essaies d'apprendre des tas de choses
différentes en même temps (MFC, Win32, langage C++, etc...) et ce
n'est jamais une bonne méthode.
J'ai testé ton code... Tout fonctionne bien sauf que je n'ais pas accès aux fonctionnalités de CObArray : m_data_to_display.GetSize() et m_data_to_display.GetAt() ne fonctionnent pas...
m_data_to_display est un pointeur, donc m_data_to_display->GetSize() et m_data_to_display->GetAt()
Je débute...
Si tu as du mal avec les pointeurs, je te conseille dans un 1er temps de laisser tomber les MFC et tout ce qui est IHM graphique, et de te concentrer sur l'apprentissage du *langage* C++ dans des applications console plus simples. Là, tu essaies d'apprendre des tas de choses différentes en même temps (MFC, Win32, langage C++, etc...) et ce n'est jamais une bonne méthode.