Accueil > Forum > > > > wxListCtrl->Problème de mise à jour pendant l'exécution->Fermeture du programme
wxListCtrl->Problème de mise à jour pendant l'exécution->Fermeture du programme
samedi 3 mai 2008 à 11:26:49 |
wxListCtrl->Problème de mise à jour pendant l'exécution->Fermeture du programme

isohelix
|
Bonjour à tous. Je sais ce que vous allez me dire: "la question à déjà été posée". Et j'ai regardé ce qui se rapprochait de près ou de loin à mon problème mais sans succès: je retape ce que font les autres mais ça ne fonctionne toujours pas. Donc j'expose mon problème. J'ai fait un wxListCtrl qui doit me permettre d'afficher les éléments contenus dans un fichier. Lorsque je le créé au lancement du programme pas de souci. Par contre si je lui demande de tout supprimé en faisanr "myListCtrl->ClearAll();" j'ai droit à un joli "Process aborted. Segmentation fault.". Si quelqu'un pouvait m'aider merci. Voici le code cpp: #include <wx/wx.h> #include "opento.h" #include "wx/aboutdlg.h" #include "parser.h"
BEGIN_EVENT_TABLE( opentoFrame, wxFrame ) EVT_MENU( Menu_File_Quitter, opentoFrame::OnQuit ) EVT_MENU( Menu_Aide_Apropos, opentoFrame::OnAbout ) EVT_MENU( Menu_Aide_Fullscreen, opentoFrame::OnFullscreen ) EVT_MENU( Menu_Import_GDM, opentoFrame::OnImportGDM) END_EVENT_TABLE()
IMPLEMENT_APP(opentoapp)
wxString wsAppName = wxT("eden++");//albatros wxString wsAppVers = wxT("in dev."); wxString iFileName;
wxArrayString iFileContent;
bool opentoapp::OnInit() { opentoFrame *frame = new opentoFrame( wsAppName, wxPoint(50,50), wxSize(450,340) );
frame->Show(TRUE); SetTopWindow(frame); return TRUE; }
opentoFrame::opentoFrame( const wxString& title, const wxPoint& pos, const wxSize& size ) : wxFrame((wxFrame *)NULL, -1, title, pos, size) { //Création des éléments du menu wxMenu *menuFile = new wxMenu;
menuFile->Append( Menu_File_Nouveau, wxT( "&Nouveau \tCtrl+N" ) ); menuFile->Append( Menu_File_Ouvrir, wxT( "&Ouvrir... \tCtrl+O" ) ); menuFile->AppendSeparator(); menuFile->Append( Menu_File_Enregistrer, wxT( "&Enregitrer... \tCtrl+E" ) ); menuFile->Append( Menu_File_EnregistrerSous, wxT( "E&nregitrer sous..." ) ); menuFile->AppendSeparator(); menuFile->Append( Menu_File_Fermer, wxT( "&Fermer \tCtrl+F" ) ); menuFile->AppendSeparator(); menuFile->Append( Menu_File_Quitter, wxT( "&Quitter \tCtrl+Q" ) );
wxMenu *menuImport = new wxMenu;
menuImport->Append( Menu_Import_Leica, wxT( "Carnet Leica/Wild" ) ); menuImport->Append( Menu_Import_Nikon, wxT( "Carnet Nikon" ) ); menuImport->Append( Menu_Import_Sokkia, wxT( "Carnet Sokkia" ) ); menuImport->Append( Menu_Import_Topcon, wxT( "Carnet Topcon" ) ); menuImport->Append( Menu_Import_GDM, wxT( "Carnet Trimble GDM" ) );
wxMenu *menuAide = new wxMenu;
menuAide->Append( Menu_Aide_Fullscreen, wxT( "Plein écran \tF11" ) ); menuAide->AppendSeparator(); menuAide->Append( Menu_Aide_Apropos, wxT( "A &propos..." ) );
wxMenu *menuCalcul = new wxMenu;
menuCalcul->Append( Menu_Calcul_Polygonale, wxT( "Calcul d'une polygonale \tF1" ) ); menuCalcul->AppendSeparator(); menuCalcul->Append( Menu_Calcul_Intersection, wxT( "Intersection \tF2" ) ); menuCalcul->Append( Menu_Calcul_Relevement, wxT( "Relèvement \tF3" ) ); wxMenuBar *menuBar = new wxMenuBar; menuBar->Append( menuFile, wxT( "&Fichier" ) ); menuBar->Append( menuImport, wxT( "&Import carnet" ) ); menuBar->Append( menuCalcul, wxT( "&Calcul" ) ); menuBar->Append( menuAide, wxT( "&Aide" ) ); SetMenuBar( menuBar ); CreateStatusBar(); SetStatusText( wxT( "Bienvenue dans " ) + wsAppName + wxT("!"));
this->bFullscreen = false; this->iFirstSizing = 0;
wxBoxSizer *mySizer = new wxBoxSizer( wxVERTICAL );
wxListCtrl *myListCtrl = new wxListCtrl(this, ID_WXLISTCTRL1, wxPoint(0,0), wxSize(this->GetSize().x+360, this->GetSize().y), wxLC_REPORT|wxSUNKEN_BORDER, wxDefaultValidator, wxT("wxListCtrlNameStr") );
myListCtrl->InsertColumn( 0, _("Ligne"), wxLIST_FORMAT_RIGHT, -1); myListCtrl->InsertColumn( 1, _("Eléments"), wxLIST_FORMAT_LEFT, 100); myListCtrl->InsertColumn( 2, _("Matricule"), wxLIST_FORMAT_LEFT, -1); myListCtrl->InsertColumn( 3, _("Paramètres"), wxLIST_FORMAT_LEFT, 500); myListCtrl->InsertColumn( 4, _("Symbole"), wxLIST_FORMAT_LEFT, -1); myListCtrl->InsertItem(1,wxT("000001"),0); myListCtrl->SetItem(0,1,wxT("COMMENTAIRE"));
mySizer->Add(myListCtrl, wxALL|wxEXPAND); mySizer->SetSizeHints(this); SetSizer(mySizer);
//SetSizeHints(wxWindow* window
}
void opentoFrame::OnQuit( wxCommandEvent& WXUNUSED( event ) ) { Close(TRUE); }
void opentoFrame::OnAbout( wxCommandEvent& WXUNUSED( event ) ) { /*wxMessageBox( wxT( "This is a wxWidgets Hello world sample" ), wxT( "About Hello World" ), wxOK | wxICON_INFORMATION, this );*/
wxAboutDialogInfo info; info.SetName( wsAppName ); info.SetVersion( wsAppVers ); info.SetDescription(wsAppName + wxT(" est un logiciel de calcul topographique open source.\n\n")); info.AddDeveloper( wxT("Arno Rubicceni <arno.rubicceni@fakemail.it>") ); info.SetCopyright( wxT("Copyrights: Arno Rubicceni, Almost Perfect Developments and\nThe OpenValley Computing Company, April 2008.\nAll rights reserved.\n\nAll sources can be found at") ); info.SetWebSite(wxT("http://askorn.free.fr/opento")); wxAboutBox( info ); }
void opentoFrame::OnFullscreen( wxCommandEvent& WXUNUSED( event ) ) { this->bFullscreen = !this->bFullscreen; this->ShowFullScreen(this->bFullscreen, 0); }
void opentoFrame::OnImportGDM( wxCommandEvent& WXUNUSED( event ) ) { iFileName = wxFileSelector( wxT("Choisissez un carnet de terrain Trimble Geodimeter"), wxT(""), wxT(""), wxT(""), wxT("Fichier Trimble GDM Job (*.raw)|*.raw"), wxOPEN|wxFILE_MUST_EXIST, NULL, -1, -1);
if( iFileName != wxT("") ) { //iFileContent = ParseGDMFile( iFileName ); ParseGDMFile( iFileName ); }
}
void opentoFrame::ParseGDMFile( wxString wsIn ) {
DelimitedFileParser fileParser( wsIn.mb_str(wxConvUTF8), "=" );
/*On analyse le fichier*/ fileParser.Parse();
/*Nombre de lignes*/ uint uiLignes = fileParser.NumRows();
/*On obtient le nombre de colonnes*/ DelimitedRow row = fileParser.getRow(0); uint uiColonnes = row.NumColumns();
if( uiColonnes == 2 ) { myListCtrl->ClearAll(); }
}
et voici le header: #ifndef _OPENTO_H_ #define _OPENTO_H_
/** * @short Application Main Window * @author the opento committee <one@zenwalk> * @version 0.1 */
class opentoapp : public wxApp { public: virtual bool OnInit(); };
class opentoFrame : public wxFrame { public: opentoFrame( const wxString& title, const wxPoint& pos, const wxSize& size ); void OnQuit( wxCommandEvent& event ); void OnAbout( wxCommandEvent& event ); void OnFullscreen( wxCommandEvent& event ); void OnImportGDM( wxCommandEvent& event ); void ParseGDMFile( wxString wsIn );
bool bFullscreen; uint iFirstSizing; wxBoxSizer *mySizer; wxListCtrl *myListCtrl;
private: DECLARE_EVENT_TABLE(); wxMenuBar *menuBar; wxMenu *menuAide; };
enum { Menu_Import_Topcon = 1017, Menu_Import_Nikon = 1016, Menu_Import_Sokkia = 1015, Menu_File_Nouveau = 1014, Menu_Calcul_Polygonale = 1013, Menu_Calcul_Intersection = 1012, Menu_Calcul_Relevement = 1011, ID_WXLISTCTRL1 = 1010, //ID_WXSTATICBOX1 = 1009, Menu_Aide_Fullscreen = 1008, Menu_Aide_Apropos = 1007, Menu_Import_Leica = 1006, Menu_Import_GDM = 1005, Menu_File_Quitter = 1004, Menu_File_Fermer = 1003, Menu_File_EnregistrerSous = 1002, Menu_File_Enregistrer = 1001, Menu_File_Ouvrir = 1000 };
#endif // _OPENTO_H_
Je programme sous linux avec KDevelop et wxGTK.
|
|
samedi 3 mai 2008 à 12:24:07 |
Re : wxListCtrl->Problème de mise à jour pendant l'exécution->Fermeture du programme

luhtor
|
Avec ce genre d'abérration, c'est normal que ca va pas marcher:
wxBoxSizer *mySizer = new wxBoxSizer( wxVERTICAL );
wxListCtrl *myListCtrl = new wxListCtrl(this, ID_WXLISTCTRL1, wxPoint(0,0),
Avec 90% de la réponse à ton pb, tu ne devrais plus avoir de pb pour comprendre pourquoi ca ne marche pas. Encore une fois, un débuggeur t'aurais permis de comprendre le pb "seul".
Conclusion, attention aux étourderies ... et un débuggeur, c'est fait pour etre utiliser. Et derniere conclusion, TOUJOURS initialiser les pointeurs à NULL. A défaut d'utiliser le debuggeur, tu aurais eu un message un peu plus parlant.
opentoFrame::opentoFrame( const wxString& title, const wxPoint& pos, const wxSize& size ) : wxFrame((wxFrame *)NULL, -1, title, pos, size), bFullscreen(false), iFirstSizing(0), mySizer(NULL), myListCtrl(NULL), menuBar(NULL), menuAide(NULL) {
|
|
Cette discussion est classée dans : menu, file, append, wxt, opentoframe
Répondre à ce message
Sujets en rapport avec ce message
MFC, VC++6, MENU [ par safira ]
safiraje dois créer ce menu par exemple:file edit open find exitj'écris:AppendMenu(menu2, MF_STRING, 1, "File");AppendMenu(menu2, MF_STRIN
MFC, VC++ 6, MENU [ par safira ]
safiraSalut!J'ai un probleme, je dois créer um menu, comme celui-ci:File Edit Open Find Exitmais en utilisant que les fonctions. Je
wxSizer --> modifier la taille et empécher le chevauchement [ par satellite34 ]
Bonsoir,Je travaille sur un dev qui contient plusieurs controles (3) dans une fenetre;Il y a 2 sizers, et je voudrait que ces sizers redimmentionnent
Récupération des octets d'un flux MPEG [ par dayvid75014 ]
Bonjour à tous,J'aimerais demander à l'utilisateur de rentrer dans la console le chemin d'un fichier vidéo et après je voudrais récupérer ce flux MPEG
charger le contenu d'un QtextEdit dans un fichier [ par naddoush ]
salut tout le monde, dans mon application j'ai un QtextEdit et un bouton save à coté.je voudrais bien qu'on ecrivant quelques lignes dans ce Qtextedit
Editeur Hexadecimal [ par dayvid75014 ]
Bonjour à tous,Vous voyez à quoi ressemble un éditeur héxadécimal? un logicilel qui vous affiche les octets contenu dans le fichier ; par exmple, j'ai
nom d'un fichier,urgentttt [ par naddoush ]
salut tous, dans mon interface graphique j'ai un qlinedit et un bouton ouvrir à coté je veux qu'on ouvrant un fichier, seulement le nom de celui ci s'
Sélection d'octet [ par dayvid75014 ]
Bonjour à tous, Je récupère les octets de mon fichier vidéo dans un buffer "Buffer[]" et je voudrais sélectionner les octets 0x47 et je n'y a
Erreur : Access violation [ par dayvid75014 ]
Bonjour à tous,Je fais ceci : FILE *ip_file;seek(ip_file, synchro_bytes[1], 0); //synchro_bytes stocke mon 1er octet de synchro, je me positionne des
RTP raw file [ par dodii ]
Bonjour tout le monde,Pour mon projet de fin d'etude je suis entrain de preparer un sniffer en voip (il capture les communication VOIP sur le LAN et l
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante 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
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
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
|