[c++] boite "ouvrir" mais apres ?

cs_devoX Messages postés 38 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 16 mai 2005 - 25 avril 2005 à 15:35
cs_thedestiny Messages postés 56 Date d'inscription samedi 3 juillet 2004 Statut Membre Dernière intervention 30 juin 2008 - 27 avril 2005 à 13:36
Bonjours,
J'ai creer une petite interface avec 1 bouton ouvrir et une zone de texte static.
apres avoir afficher une boite de dialog "ouvrir", j'aimerais que le contenu du fichier que je vient d'ouvrir s'affiche dans une zone "static text" est ce possible ? si oui comment fait on svp
je precise que je debute et j'apprend sous Vc++
merci a tous.

17 réponses

yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
25 avril 2005 à 18:52
Grâce à la fenêtre ouvrir, tu obtiens le nom complet du fichier ("C:\....\fichier.ext").
Il faut maintenant ouvrir le fichier avec fopen et ensuite extraire les données qui y sont contenues grâce à fread.
Une fois toutes les données récoltées, t'as plus qu'à afficher dans le static avec SetWindowText.

Voilà, bon courage.

YOYO, @+.
YOYO
0
cs_devoX Messages postés 38 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 16 mai 2005
26 avril 2005 à 13:53
je ne parviens pas a le faire avec SetWindowText...ou dois-je la metre cette fonction ?

en faite j'ai fais mon programme ( il fonctionne ) en mode console, mais ou dois-je metre le code que j'ai creer pour qu'il fonctionne avec l'interface ?

par example la j'entre le nom du fichier a ouvrir, va t'il le stoker dans une variable ? si c'est le cas alors mon code devra faire apel a cette variable, mais ou dois-je metre mon code ? dans la methode OnOuvrir() ....

houlala je pige rien du tout la plz help

merci de votre aide.
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
26 avril 2005 à 16:22
En mode console tu peux utiliser la fenêtre Ouvrir de windows ?

YOYO, @+.
YOYO
0
cs_thedestiny Messages postés 56 Date d'inscription samedi 3 juillet 2004 Statut Membre Dernière intervention 30 juin 2008
26 avril 2005 à 19:54
C'est bizarre, avant tu voulez utiliser un Static ( API je suppose ? ) et maintenant tu parles de console ?!

Je suis prêt à déposer une source pour t'aider si tu le souhaites mais il faudrait un peu éclaircir l'affaire.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_devoX Messages postés 38 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 16 mai 2005
26 avril 2005 à 20:25
non pas du tout, en faite je vous explique.

Au debut j'ai creer un programme en mode console qui consistait a ouvrir un fichier et a afficher son contenue en hexa, ayant reussit a faire cela en mode console je me suis dis qu'il serai bien de faire une interface avec Vc++....donc je l'ai dessiné, et j'ai commencer par "coder" le fonctionement du bouton ouvrir ( simple coier /coller de msdn.com ) et maintenant je suis bloquer.
J'ai aucune idée de comment refaire en mode graphique ce que j'ai fait en mode console...
J'espere que vous me comprenez
Merci pour vos reponses.
0
cs_thedestiny Messages postés 56 Date d'inscription samedi 3 juillet 2004 Statut Membre Dernière intervention 30 juin 2008
26 avril 2005 à 20:51
Bien maintenant j'ai compris :)

BOOL LoadFile(HWND hEdit, LPSTR pszFileName)
{
HANDLE hFile;
BOOL bSuccess = FALSE;


hFile = CreateFile(pszFileName, GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING, 0, 0); // On ouvre le fichier pour la lecture
if(hFile != INVALID_HANDLE_VALUE)
{
DWORD dwFileSize;
dwFileSize = GetFileSize(hFile, NULL); // On récupère sa taille
if(dwFileSize != 0xFFFFFFFF)
{
LPSTR pszFileText;
pszFileText = (LPSTR)GlobalAlloc(GPTR, dwFileSize + 1); // On prépare
if(pszFileText != NULL)
{
DWORD dwRead;
if(ReadFile(hFile, pszFileText, dwFileSize, &dwRead, NULL)) // On lit le fichier
{
pszFileText[dwFileSize] = 0; // Null terminator
if(SetWindowText(hEdit, pszFileText)) // On affiche le contenu
bSuccess = TRUE;
}
GlobalFree(pszFileText); // On libère
}
}
CloseHandle(hFile); // On ferme le fichier
}
return bSuccess;
}

J'espère que ca sera utile :)
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
26 avril 2005 à 20:53
Faut que tu revois complètement ton programme, le Win32 et le console ça se mixe pas comme ça.
La plupart des trucs que t'as fait en console tu peux les mettre de côté.
Reprenons.
Je parle uniquement en Win32 :
Est-ce que tu arrives à ouvrir la fenêtre "Ouvrir" de windows et si oui montre moi ton code qui fait cela avec toutes les déclarations qui vont avec ?

YOYO, @+.
YOYO
0
cs_devoX Messages postés 38 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 16 mai 2005
26 avril 2005 à 21:00
Oui j'ouvre la fenetre ouvrir en cliquant sur un bouton que j'ai fais.
voici le code :

void CProjetDlg::OnOuvrir()
{
CString OpenFilter;
OpenFilter = "Text File (*.txt)|*.txt||";


CFileDialog FileOpenDialog(
TRUE,
NULL,
NULL,
OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_PATHMUSTEXIST,
OpenFilter, // filter
AfxGetMainWnd()); // the parent window
if(FileOpenDialog.DoModal()==IDOK)
{
CFile File;
VERIFY(File.Open(FileOpenDialog.GetPathName(),CFile::modeRead));
}

}

c'est du copier/coller de www.msdn.com
0
cs_devoX Messages postés 38 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 16 mai 2005
26 avril 2005 à 21:24
merci thedestiny mais je fais quoi avec ce code, je le met ou ? car en creeant les fenetres je me retrouve avec plin de .cpp et de .h

d'autre part dans BOOL LoadFile(HWND hEdit, LPSTR pszFileName)

Quel sont les type passés en parametres...je n'ai jamais vu ca ( HWND et LPSTR)

merci.
0
cs_devoX Messages postés 38 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 16 mai 2005
26 avril 2005 à 21:32
Je tien a preciser que j'ai creer mon projet en fesant new==>project==>MFC appWizard(exe)
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
26 avril 2005 à 21:59
Ah oui c'est ce que je viens de voir que tu fais du MFC.
Donc dorénavant c'est sans moi, désolé.

YOYO, @+.
YOYO
0
cs_thedestiny Messages postés 56 Date d'inscription samedi 3 juillet 2004 Statut Membre Dernière intervention 30 juin 2008
26 avril 2005 à 22:46
Désolé, mon bout de code s'applique à l'API Windows et comme tu travailles en MFC je ne peux pas t'aider, désolé.

HWND c'est un Handle d'une fenêtre qui peut être récupéré par différents moyens
LPSTR c'est un const char* en simplifié
0
cs_devoX Messages postés 38 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 16 mai 2005
26 avril 2005 à 23:11
Okay merci quand meme pour votre aide...
une derniere question c'est quoi l' 'API Windows ?
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
27 avril 2005 à 07:12
Des API windows sont des fonctions windows inclus dans les dll de windows.
Exemple : l'api setwindowtext que je t'avais donnée au début.

YOYO, @+.
YOYO
0
cs_devoX Messages postés 38 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 16 mai 2005
27 avril 2005 à 12:38
Okay, et c'est plus simple a metre en oeuvre les API ? car les MFC je m'en sort vraiment pas
c'est le bordel dans les fichiers il veut tt le temp me creer des classes enfin c'est vraiment pas efficace pour un debutant comme moi
merci.
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
27 avril 2005 à 12:58
Pour moi (ça n'engage que moi) les API sont plus faciles à utiliser.
Mais c'est certainement une question d'habitude.

P.S.: je bosse sous Dev-C++ 4.9.9.2

YOYO, @+.
YOYO
0
cs_thedestiny Messages postés 56 Date d'inscription samedi 3 juillet 2004 Statut Membre Dernière intervention 30 juin 2008
27 avril 2005 à 13:36
MFC est en principe un moyen de facilité pour les développeurs ( mais après faut assumer le nombre de DLL et la taille du programme )
API peut s'averer plus simple mais ressemble quand même à MFC puisque MFC se base sur les fonctions de l'API. Cependant l'API ne fait pas appelle forcément à des "class" / piles.

Je te conseil pour débuter l'API car en plus, comme le dit Yoyo, l'API est compatible avec la quasi totalité des compilateurs contrairement à MFC.

Rend toi à cette adresse si tu veux obtenir plus d'information ( désolé je ne retrouve plus le lien vers la MSDN en Francais )
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/overview_of_the_windows_api.asp
0
Rejoignez-nous