Accueil > Forum > > > > [MFC Visual 6] timer, debug assertion et autres questions
[MFC Visual 6] timer, debug assertion et autres questions
samedi 23 décembre 2006 à 02:26:22 |
[MFC Visual 6] timer, debug assertion et autres questions

vladii
|
J'ai quelques questions sur les MFC avec Visual 6, si quelqu'un peut m'aider, ça serait sympa: (projet en sdi)
- je voudrais qu'au départ de mon application, une boite de dialogue de
présentation s'affiche pendant quelques secondes avant que le logiciel
ne se lance. J'ai fait la boîte de dialogue et elle se lance bien au
démarrage de l'application, mais il faut cliquer sur ok pour que la
boite de dialogue disparaisse. Est-il possible de la faire disparaître
automatiquement au bout d'un certain temps comme sur bcp de logiciels? Faut-il utiliser des timer?
-Sur le même concept, je voudrais faire un boite de dialogue permettant
d'afficher un message (de type "Veuillez patienter..." ) pendant
l'éxécution d'une fonction qui prend beaucoup de mémoire.
-A la fermeture de l'application, j'ai systématiquement un plantage
avec l'erreur suivante: "Debug Assertion Failed". Le debugger me dit
que ça plante à l'appel du destructeur des objets dynamiques d'une de
mes classes (destruction d'un tableau). Pourtant le destructeur
contient une simple ligne:
delete [] PtTableau;
D'où peut venir l'erreur???
- Comment faire démarrer l'application en mode maximisé?
- Est-il possible de changer le nom de l'application en haut à gauche du logiciel? (qui est par défaut celui du projet)
Si vous avez la réponse à l'un de ces problèmes ou des suggestions, je suis preneur!!! Merci d'avance a++.
|
|
samedi 23 décembre 2006 à 11:13:23 |
Re : [MFC Visual 6] timer, debug assertion et autres questions

louis14
|
-pour la boite de dialogue au départ, il y a un composant intégré dasn VC++ (splashscreen) que tu peux ajouter à ton projet et qui résoud ton problème. -pour le veuillez patienter, tu peux soit passer par les tâches, soit de temps en temps utilisez une boucle pour pomper les messages. de toute façon il faut d'abord appeler le DoModal pour ta boite de dialogue ( adjoint y une progressbar pendant que tu y es). -j'ai souvent constaté cette erreur à la destruction de la classe, il faut bien déclaré le pointeur null à la création et si on détruit le tableeau le remettre à Null, la destruction ne doit se faire que si tableau n'est pas null et celà devrait rentré dans l'ordre, il doit y avoir plusieurs appel de destructiojn de tableau, ou bien ton tableau n'est pas créé. - pour le maximisé, il faut aller dasn initinstance de la classe Application de ton projet, il y a le pMainWnd, après sa création fait un ShowWindow( SW_MAXIMISE) -pour changer le nom de ton application, tu peux aller dasn les String ressources, il y a Afx_app_title et changer le paramètre. si ton application est basée sur une boite de dialogue, il suffit de la visualiser dasn les ressources et de changer son nom, sinon dans Initdialog de ta boite, tu peux faire SetwindowText ( titre).
louis14
|
|
samedi 23 décembre 2006 à 16:39:01 |
Re : [MFC Visual 6] timer, debug assertion et autres questions

yann_lo_san
|
Salut, si SDI, dans doc, surcharger SetTitle TONDOC::SetTitle(LPCTSTR title) { CDocument::SetTitle(lpszTitle); }
// pour un splash de ton cru (dlg template)
dans initInstance tu la lances : CSplashDlg dlg; dlg.m_nMaxTime = 7; // un temps dlg.m_sLabel = _T("Chargement...")); // un label chargement dlg.DoModal();
// le splashDlg.h class CSplashDlg : public CDialog { CString m_sLabel; // Pour label CEdit m_CtrlLabel; // Le controle label d'info UINT_PTR m_nTimer; // Le timer de progression DWORD m_nMaxTime; // 10 par defaut (2,5 s) 20 = 5 sec
// ect... };
// le cpp // important : void CSplashDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_LABEL_SPLASH, m_sLabel); DDX_Control(pDX, IDC_LABEL_SPLASH, m_CtrlLabel); }
BOOL CSplashDlg::OnInitDialog() { // Lance le timer m_nTimer = SetTimer(m_nTimer, 200, NULL); return TRUE; }
// exemple pour un timer void CSplashDlg::OnTimer(UINT nIDEvent) { static DWORD dwTime = 0;
if( dwTime > m_nMaxTime ) { KillTimer(m_nTimer); dwTime = 0; EndDialog(IDOK); } else { CString temp; temp.Format("%s %d %%", m_sLabel, (dwTime*100)/m_nMaxTime); m_CtrlLabel.SetWindowText((LPCTSTR)temp); dwTime++; }
CDialog::OnTimer(nIDEvent); }
Ensuite quant tu détruis, toujours faire if( ptr != NULL ) delete...
A plus...
|
|
samedi 23 décembre 2006 à 20:18:42 |
Re : [MFC Visual 6] timer, debug assertion et autres questions

vladii
|
Merci de vos réponses c'est cool, je vais tester tout ça et je vous tiens au courant,
merci beaucoup,
Olivier
|
|
mardi 26 décembre 2006 à 15:39:19 |
Re : [MFC Visual 6] timer, debug assertion et autres questions

vladii
|
Pour le splash, c'est bon, et vraiment pratique, je connaissais pas, merci.
Par contre, j'ai toujours des problèmes pour mon destructeur. En fait
j'utilise une classe tableau (que je n'ai pas écrite moi-même) pour
manipuler ces tableaux, et je pense que l'erreur doit venir de là,
mais, je vois vraiment pas comment la résoudre. Si quelqu'un veut s'y
intéresser, ça doit pas être très compliqué, voici le code minimaliste qui plante, ramené en
projet console win32:
main.cpp: #include <iostream>
using namespace std;
#include "CSon.h"
#include "tableau.h"
void main()
{
cout<<"Salut."<<endl;
CSon son1;
}
CSon.h: #include "tableau.h"
class CSon
{
private :
long
int
m_liTaille;
//taille du
TabSon
Tableau<short
int>
m_psiTabSon; //Tableau des données son
public :
CSon(); //Constructeur
~CSon(); //Destructeur
};
CSon.cpp: #include <iostream>
using namespace std;
#include "CSon.h"
#include "tableau.h"
CSon::CSon()
{
m_liTaille=0;
}
CSon::~CSon()
{
if (m_psiTabSon.LireAdrTab()!=NULL)
m_psiTabSon.~Tableau();
}
tableau.h: #ifndef TABLEAU
#define TABLEAU
#include <iostream>
#include <stdlib.h>
template <class T> class Tableau
{
T * PtTableau;
int Taille;
public :
explicit Tableau(int taille=0);
Tableau(const T * tab,int n);
Tableau(const Tableau<T> & t);
~Tableau();
int LireTaille() const {return Taille;}
T * LireAdrTab() {return PtTableau;}
const T *LireAdrTab() const {return PtTableau;}
T LireElement(int i) const;
void ChangerElement(int i,T val);
T & operator[](int i);
const T & operator[](int i) const;
void ChangerTaille(int taille);
Tableau<T>& operator=(const Tableau<T> &t);
};
template <class T> inline Tableau<T>::Tableau(int taille)
{
Taille=taille;
PtTableau=new T[Taille];
}
template <class T> Tableau<T>::Tableau(const T *tab,int n)
{
int i;
Taille=n;
PtTableau=new T[Taille];
for (i=0;i<n;i++) PtTableau[i]=tab[i];
}
template <class T> Tableau<T>::Tableau(const Tableau<T> &t)
{
int i;
Taille=t.Taille;
PtTableau=new T[Taille];
for (i=0;i<Taille;i++) PtTableau[i]=t.PtTableau[i];
}
template <class T> inline Tableau<T>::~Tableau()
{
delete [] PtTableau;
}
template <class T> T Tableau<T>::LireElement(int i) const
{
if (i<0 || i>=Taille)
{
std::cerr<<"Dépassement d'indice : i = "<<i;
abort();
}
return PtTableau[i];
}
template <class T> void Tableau<T>::ChangerElement(int i,T val)
{
if (i>=0 && i<Taille) PtTableau[i]=val;
else
{
std::cerr<<"Dépassement d'indice : i = "<<i;
abort();
}
}
template <class T> inline T &Tableau<T>::operator[](int i)
{
if (i<0 || i>=Taille)
{
std::cerr<<"Dépassement d'indice : i = "<<i;
abort();
}
return PtTableau[i];
}
template <class T> inline const T &Tableau<T>::operator[](int i) const
{
if (i<0 || i>=Taille)
{
std::cerr<<"Dépassement d'indice : i = "<<i;
abort();
}
return PtTableau[i];
}
template <class T> void Tableau<T>::ChangerTaille(int taille)
{
T *p;
int i,min;
if (taille>=0)
{
p=new T[taille];
if (Taille<taille) min=Taille;
else min=taille;
for (i=0;i<min;i++) p[i]=PtTableau[i];
delete [] PtTableau;
PtTableau=p;
Taille=taille;
}
}
template <class T> Tableau<T> & Tableau<T>::operator=(const Tableau<T> &t)
{
int i;
if (Taille!=t.Taille)
{
delete [] PtTableau;
PtTableau=new T[t.Taille];
Taille=t.Taille;
}
for (i=0;i<Taille;i++) PtTableau[i]=t.PtTableau[i];
return *this;
}
#endif
Merci de votre aide,
a+
Olivier
|
|
mardi 26 décembre 2006 à 19:08:59 |
Re : [MFC Visual 6] timer, debug assertion et autres questions

vladii
|
C'est bon en fait, problème résolu, j'avais pas à appeler le destructeur de tableau dans le destructeur de CSon.
C'est ok :)
|
|
mardi 26 décembre 2006 à 20:00:37 |
Re : [MFC Visual 6] timer, debug assertion et autres questions

yann_lo_san
|
CSon.cpp:
#include <iostream> using namespace std; #include "CSon.h" #include "tableau.h" // pas la peine de réinclure tableau ici
|
|
mardi 26 décembre 2006 à 23:36:07 |
Re : [MFC Visual 6] timer, debug assertion et autres questions
|
Cette discussion est classée dans : timer, application, visual, mfc, dialogue
Répondre à ce message
Sujets en rapport avec ce message
Probleme tout bete avec visual c++ 6. et mfc [ par killeroms ]
Bonjour a tous,j'ai cree un projet avec visual c++ 6 et en utilisant la mfc !j'ai ajouter un activex pour le besoin de mon application ( au cas ou ça
Visual C++ 7 : Passage paramètre à une application MFC [ par lcamps ]
Bonjour,J'aimerai exécuter une application MFC en passant des paramètres du genre :AppToto.exe Param1.lst Param2.lstComment faire pour récupérer ces p
visual c++ : MFC : placement d'une boite de dialogue [ par hao21 ]
Bonjour;j'ai une boite de dialogue que je souhaiterai placer en bas de fenetre. Lorsque je change la variable Y dans les propriétés de ma boite, quand
Probleme en MFC [ par vangeurmasker ]
J'ai un probleme dans mon application MFC. Je travaille avec VC++ 6. J'ai créé une application MFC, dialog based.J'ai crée une deuxiemme boite de dial
MFC visual c++ : comment recupérer les coordonnées da la souris [ par hao21 ]
Bonjour.j'aurai aimé savoir comment faire pour récupérer les coordonnées de la souris sur la fenetre quand on clique, pour que lorsque l'on clique sur
Comment réliser une installation pour vos applications MFC [ par thr_dreamer_57 ]
salut tout le monde et merci de votre attention Mon problème c'est que j'ai réaliser une petite application MFC (dont je vous ferai part prochai
debug Visual - chaine & toString [ par magic_Nono ]
cous l'avez sans doutes remarqué, mais avec Visual, quand on débug, (avec ou sans MFC)et qu'on survole une variable, ou qu'on la met dans la watch, i
processus boite de dialogue MFC [ par lisandru ]
Bonjour, alors voila mon problème: - je lance une boite de dialogue modale à partir d'une autre fenetre, et j'execute alors une scripte de copie qui
MFC ou ActiveX ou ...?!! [ par oulali ]
Bonjour, J'ai développé une application en Visual C++ qui utilise les MFC et des OCX. Elle tourne super bien sur toutes les versions de Windows en fr
TIMER avec MFC [ par pcrafale ]
Bonjour à tous,Je n'arrive pas à programmer un timer sur un programme utilisant les MFC.Tous les codes expliquants les timer n'accepte pas les MFC.Sur
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
|