Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[C++] Afficher le contenu d'un fichier dans un listBox

1 réponse
Avatar
Khaoula Bouazizi
Bonjour,
Je souhaite d=E9velopper une interface graphique qui permet de parcourir
des fichiers et de les afficher, voici ma maquette initiale :
http://cjoint.com/data/knpF4Wsi5C_MFC.JPG
J'ai r=E9ussi =E0 parcourir les fichiers sauf que je ne sais pas comment
afficher le contenu du fichier dans le listBox "Values".
Voici mon code :
// InterfaceDlg.cpp : fichier d'impl=E9mentation
//

#include "stdafx.h"
#include "Interface.h"
#include "InterfaceDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// bo=EEte de dialogue CAboutDlg utilis=E9e pour la bo=EEte de dialogue '=
=C0
propos de' pour votre application

class CAboutDlg : public CDialog
{
public:
CAboutDlg();

// Donn=E9es de bo=EEte de dialogue
enum { IDD =3D IDD_ABOUTBOX };

protected:
//responsable de tout =E9change entre un contr=F4le et une variable
virtual void DoDataExchange(CDataExchange* pDX); // Prise en
charge de DDX/DDV

// Impl=E9mentation
protected:
DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
//Je vais lier l'=E9dit =E0 la variable m_csInputFile, chaque changement
de m_csInputFile
//va =EAtre affich=E9 dans la zone de texte
DDX_Text(pDX, IDC_INPUTFILE, m_csInputFile);
CDialog::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()


// bo=EEte de dialogue CInterfaceDlg




CInterfaceDlg::CInterfaceDlg(CWnd* pParent /*=3DNULL*/)
: CDialog(CInterfaceDlg::IDD, pParent)
{
m_hIcon =3D AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CInterfaceDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CInterfaceDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_PARCOURIR, &CInterfaceDlg::OnBnClickedParcourir)
END_MESSAGE_MAP()


// gestionnaires de messages pour CInterfaceDlg

BOOL CInterfaceDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Ajouter l'=E9l=E9ment de menu "=C0 propos de..." au menu Syst=E8me.

// IDM_ABOUTBOX doit se trouver dans la plage des commandes syst=E8me.
ASSERT((IDM_ABOUTBOX & 0xFFF0) =3D=3D IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu =3D GetSystemMenu(FALSE);
if (pSysMenu !=3D NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}

// D=E9finir l'ic=F4ne de cette bo=EEte de dialogue. L'infrastructure
effectue cela automatiquement
// lorsque la fen=EAtre principale de l'application n'est pas une
bo=EEte de dialogue
SetIcon(m_hIcon, TRUE); // D=E9finir une grande ic=F4ne
SetIcon(m_hIcon, FALSE); // D=E9finir une petite ic=F4ne

// TODO : ajoutez ici une initialisation suppl=E9mentaire

return TRUE; // retourne TRUE, sauf si vous avez d=E9fini le focus sur
un contr=F4le
}

void CInterfaceDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) =3D=3D IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}

// Si vous ajoutez un bouton R=E9duire =E0 votre bo=EEte de dialogue, vous
devez utiliser le code ci-dessous
// pour dessiner l'ic=F4ne. Pour les applications MFC utilisant le
mod=E8le Document/Vue,
// cela est fait automatiquement par l'infrastructure.

void CInterfaceDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // contexte de p=E9riph=E9rique pour la peinture

SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc
()), 0);

// Centrer l'ic=F4ne dans le rectangle client
int cxIcon =3D GetSystemMetrics(SM_CXICON);
int cyIcon =3D GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x =3D (rect.Width() - cxIcon + 1) / 2;
int y =3D (rect.Height() - cyIcon + 1) / 2;

// Dessiner l'ic=F4ne
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}

// Le syst=E8me appelle cette fonction pour obtenir le curseur =E0
afficher lorsque l'utilisateur fait glisser
// la fen=EAtre r=E9duite.
HCURSOR CInterfaceDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}




void CInterfaceDlg::OnBnClickedParcourir()
{
// TODO : ajoutez ici le code de votre gestionnaire de notification
de contr=F4le
CString OpenFilter;
OpenFilter =3D "Text File (*.txt)|*.txt||";

CFileDialog FileOpenDialog(
TRUE,
NULL,
NULL,
OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_PATHMUSTEXIST,
OpenFilter, // filter
AfxGetMainWnd()); // the parent window
if(FileOpenDialog.DoModal()=3D=3DIDOK)
{
// ouverture de fichier
CFile File;
VERIFY(File.Open(FileOpenDialog.GetPathName
(),CFile::modeRead));
AfxMessageBox(L"ouverture OK");
}
}

Quelqu'un pourrait m'=E9claircir les lanternes sivoupl=E9 ?
Merci par avance.
K.

1 réponse

Avatar
Alain
"Khaoula Bouazizi" a écrit dans le message de
news:
Bonjour,
Je souhaite développer une interface graphique qui permet de parcourir
des fichiers et de les afficher, voici ma maquette initiale :


http://cjoint.com/data/knpF4Wsi5C_MFC.JPG
J'ai réussi à parcourir les fichiers sauf que je ne sais pas comment
afficher le contenu du fichier dans le listBox "Values".



Tu lis le fichier ligne à ligne (fopen(), fgets(), ..) comme sur
http://irc.essex.ac.uk/www.iota-six.co.uk/c/i2_feof_fgets_fread.asp
et tu insères chaque ligne dans la listbox avec
CListBox::AddString si tu es en MFC : comme
http://msdn.microsoft.com/en-us/library/2cekde96(VS.80).aspx
(bien que ce soit bizarre d'utiliser une lisbox pour afficher un fichier, au
lieu d'un multi-line ou richedit..)