Accueil > Forum > > > > [C++][MFC] Problème avec les onglets
[C++][MFC] Problème avec les onglets
mardi 1 juin 2004 à 11:18:49 |
[C++][MFC] Problème avec les onglets

impress
|
Bonjour, Après avoir parcouru différents forums et tutoriaux, j'ai réussi (enfin !) à créer des onglets de façon propre. Le problème, c'est que je n'arrive pas à accéder/modifier les infos des CPropertyPage associées à la CPropertySheet que je crée. Par exemple, je crée un onglet (CPropertySheet onglets), une page (CPropertyPage m_dlg1) dans laquelle j'ai un champ d'edit (m_champedit), et quand je lance une commande du style onglets.m_dlg1.m_champedit.SetWindowText("toto") ca me met un msg d'erreur "Debug assertion failed". Pareil qd je veux modifier le titre de ma CPropertyPage (j'aimerais le faire de facon dynamique). Une idée sur la source de l'erreur ?? PS : un bout de code pour voir COnglets::COnglets(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage) :CPropertySheet(pszCaption, pParentWnd, iSelectPage) { AddPage(&m_dlg1); AddPage(&m_dlg2); }
|
void CConfigDlg::OnBoutonConfig() { COnglets onglets(_T("Titre")); onglets.m_dlg1.m_champedit.SetWindowText("test"); // ici ca merde onglets.DoModal(); }
|
|
|
mercredi 2 juin 2004 à 15:01:24 |
Re : [C++][MFC] Problème avec les onglets

ymca2003
|
Le problème, c'est que les contrôles ne sont créés que pendant l'appel à DoModal(). Avant ils n'existent pas encore et après ils n'existent plus. Il faut associer un CString à l'Edit et utiliser UpdateData(), mais bon là dessus je maitrise pas des masses. L'autre solution est de rajouter des variables à la classe COnglets, de les initialiser avant le DoModal(), puis de traiter le mesage WM_INITDIALOG avec OnInitDialog et de faire ton SetWindowText() car à ce moment les contrôles existent. PS : j'avias mis un exemple de dialogue à onglet en utilisant Un CTabControl et des CDialog enfant indépendant poour chaque onglet : http://www.cppfrance.com/code.aspx?ID=20735
|
|
mercredi 2 juin 2004 à 16:32:48 |
Re : [C++][MFC] Problème avec les onglets

impress
|
Salut, En fait j'avais deja regarde ton code en faisant des recherches sur les onglets, mais j'ai eu du mal a le recuperer, et j'ai prefere repartir de 0. Finalement j'ai resolu mon probleme en initialisant mes onglets dans le fichier de la classe derivee de CPropertyPage, et non dans le fichier principal. Pour modifier les titres, j'ai trouve un bout de code sur developpez.com ;) Donc dans le fichier principal je cree juste mes CPropertyPage comme ca : COnglets onglets(_T("Toto")); pMesOnglets=&onglets;
for (int i=0;i<nb_motifs;i++) { tabDlg[i]=new CDlg; // tabDlg est declare en globale tabDlg[i]->m_psp.dwFlags |= PSP_USETITLE ; // ici je modifie le titre de facon dynamique tabDlg[i]->m_psp.pszTitle = motif[i]->nom ; onglets.AddPage(tabDlg[i]); }
onglets.DoModal(); |
et j'initialise les propertypage comme ca (les onglets sont en fait identiques... je n'ai donc cree qu'une seule classe derivee de CPropertyPage appelee CDlg) BOOL CDlg::OnSetActive() { // réglage de l'échelle des sliders m_slider_a.SetRange(0,40); m_slider_a.SetTicFreq(4); m_slider_tim.SetRange(0,1000); m_slider_tim.SetTicFreq(50); m_slider_tit.SetRange(0,500); m_slider_tit.SetTicFreq(50); m_slider_tc.SetRange(0,100); m_slider_tc.SetTicFreq(10);
// on récupère le numéro de la page CPropertyPage active dans la CPropertySheet // pointée par 'pMesOnglets' (= &onglets) int nid=pMesOnglets->GetActiveIndex();
// mise à jour des valeurs des sliders (lues dans motifs.vtl) m_slider_a.SetPos(motif[nid]->amplitude); m_slider_tim.SetPos(motif[nid]->temps_inter_motifs); m_slider_tit.SetPos(motif[nid]->temps_trames); m_slider_tc.SetPos(motif[nid]->temps_cycle);
return CPropertyPage::OnSetActive();
|
|
|
mercredi 2 juin 2004 à 23:21:17 |
Re : [C++][MFC] Problème avec les onglets

ymca2003
|
y'a pas possibilité de faire ça dans OnInitDialog ou OnCreate car je pense que ça serait mieux là. OnSetActive risque d'être apelée plusieures fois si ton appli passe au second plan puis revient devant. Phénomène à tester toutefois car je n'en suis pas très sûr.
|
|
mercredi 2 juin 2004 à 23:35:51 |
Re : [C++][MFC] Problème avec les onglets

impress
|
Effectivement, le probleme c'est que je mets a jour mes onglets a chaque fois que l'utilisateur en change (je mets a jour les motif[i] presents dans le code... et OnInitDialog n'intervient qu'une fois au lancement de la fenetre, pas apres, si ? Bon ceci dit l'appli que j'ai codee me sert uniquement comme outil pour tester un prototype, donc qd je la lance, elle ne passe jamais au second plan (en gros je code un peu sale  , vu que je suis pas programmeur a la base héhé).
|
|
jeudi 3 juin 2004 à 00:20:35 |
Re : [C++][MFC] Problème avec les onglets

ymca2003
|
OnInitDialog et OnCreate ne sont appelée qu'une seule fois à la création respectivent d'un dialogue (ou d'un dialogue enfant ce qui est le cas des propertysheetpage je pense) et d'une fenêtre
|
|
Cette discussion est classée dans : problème, code, onglets, cpropertypage, dlg1
Répondre à ce message
Sujets en rapport avec ce message
Titre des CPropertyPage [ par garslouche ]
Bonjour,j'ai une fenêtre à onglets (CPropertySheet) dont l'un des onglets concerne la langue du logiciel.Je voudrais que si on change la langue en qu'
If problème [ par Hades53 ]
J'ai un problème avec If :char*variable1;variable1 = "bonjour";if (variable1 == "bonjour") cout <
Petit problème de code [ par mimyne ]
Bonjour g le code suivant:void Resultat_Clicked(Object* pSender, EventArgs* pArgs){ int operation = 5; char* chaine[10]; if (pSender == Btnres) { //o
Problème de code en c++ (fonction itoa) [ par mimyne ]
voila g le code suivant:void Resultat_Clicked(Object* pSender, EventArgs* pArgs){ int operation = 5; char* chaine[2]; if (pSender == Btnres) { { ito
Problème : Récupération des données d'un Buffer pour mettre dans une EditBox [ par Memerosti ]
BonjourMon problème est le suivant : J'ai ouvert un fichier, lu ses données, et jusque là ça va. Mais ensuite je voudrais récupérer ces données, pour
CPropertyPage MFC [ par Helau ]
Bonjour,J'ai un souci avec les PropertyPage.J'ai une application qui conteint environ 25 onglets. Ces onglets ont plusieurs propriétés communes. Je vo
(MS VCpp) Problème de variables [ par YS1 ]
J'ai créé une DLL C+PP que je souhaite utiliser dans un programe VB.La fonction principale de la DLL renvoie un certain nombre de variables, qui sont
problème d'enregistrement de variables à partir d'une base de données Access [ par maevasa ]
bonjour j'ai un problème avec ce bout de code quand je compile mon programme tout marche mais c'est au lancement de l'exe qu'il plante que dire de plu
Dialogue à onglets [ par bzouli ]
Bonjour,j'ai un problème: je veux faire une boite de dialogue avec 2 onglets, et ce n'est vraiment pas intuitif en VC++ !!J'ai créer mes deux classes
Problème de link : LNK2001 [ par oberown ]
J'utilise une API, dont j'utilise les variables.Je n'ai aucun problème pour les utiliser. Or quand je veux en utiliser une celle ci IID_IRTCUserSearch
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft 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
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
|