begin process at 2013 06 18 23:37:53
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

MFC

 > 

Problème avec cfiledialog (mfc -c++)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème avec cfiledialog (mfc -c++)

lundi 2 juillet 2012 à 17:11:37 | Problème avec cfiledialog (mfc -c++)

f14speedking

Bonjour,

Débutant en programmation c++ mfc sous vc++08, j ’essaie de sauvegarder des données (entier et cstring)en ouvrant une fenêtre "enregistrer sous". Pour cela j'utilise Cfiledialog(true...
(code ci dessous).
Le code marche bien, mais je peut sauvegardé que dans le dossier du programme, pas ailleurs.


Quand je clique sur mon bouton "save" la boite "enregistrer sous" s'ouvre correctement, mais si je veux mettre mon fichier sur le bureau ou dans un dossier , sa sauvegarde mais pas à l'endroit ou j'ai choisi. La sauvegarde est faite dans le dossier du programme.

*Problème dans le code??

Comment faire pour je puisse sauvegardé dans un autre dossier?
j'ai beau cherché sur internet mais j'ai rien trouvé.

Je joins mon bout de code ci dessous :

void CtestDlg::OnBnClickedSavetext()

{
CFile f; //création fichier
char filtre_FilE[]= "Text Files(*.rtf)"; //filtre ici seul txt sélectionné

//données
CString nom;
CString prenom;
int age;
age=m_age.GetValue();
m_nom.GetWindowTextA(nom);
m_prenom.GetWindowTextA(prenom);

//conversion pour age
CString str_age;
str_age.Format(_T("%d"), age);

//creation fenetre openSave
CFileDialog fileDlg(FALSE, "rtf", 0,0,filtre_FilE);

//si appuis sur savetext go ouverutre en modal de saveBox)
if( fileDlg.DoModal() == IDOK)
{

CString Data;
Data=nom+"\n"+prenom+"\r\n"+str_age;

f.Open(fileDlg.GetFileName(), CFile::modeCreate | CFile::modeWrite);
CArchive ar(&f, CArchive::store);
ar <<Data;
ar.Close();

}
------------------
De plus j'ai un autre problème concernant le saut de ligne pour l'envoi des données vers un fichier comme bloc note, je me retrouve avec des caractères bizarres.
\r\n ne fonctionne pas pourtant normalement fonctionnable sous Windows et compréhensible pour bloc note d'après se que j'ai put voir sur internet.

*Ceux que j'ai essayé :
ar <<nom<<'\r'<<'\n'<<prenom; //saut de ligne mais présence caractères
ar <<nom<<'\r\n'<<prenom; //marche pas
Avec les guillemet "\r\n" non plus, bref avec la méthode du code en haut, cela règle à peut près le problème.

*Comment faire pour les saut de ligne sur un bloc note?

Voila merci encore.
mardi 3 juillet 2012 à 10:37:48 | Re : Problème avec cfiledialog (mfc -c++)

louis14

Réponse acceptée !

Bonjour,
juste pour ton nom de fichier , il faut utiliser GetPathName et non GetFileName pour avoir le nom et le répertoire de ta sélection.


louis
mardi 3 juillet 2012 à 13:39:45 | Re : Problème avec cfiledialog (mfc -c++)

yann_lo_san

Salut,

_T("") est une macros permettant d'avoir le bon encodage des chaines de caractères (unicode, multibytes ect...) selon ton paramétrage de projet.
Il faut donc l'utiliser pour TOUTES les chaines littérales sauf si le type char[] est utilisé.

Code C/C++ :
_T("\r\n") // devrait marcher comme il faut


Pour ce qui est de MFC, utiliser GetPathName()

Code C/C++ :
CString strFile(_T("x:\\chemin\\filedef.ext"));
char szFilters[] = "Text rtf (*.rtf)|*.rtf|";
char szExt[] = "rtf";
char szTitre[] = "Mon titre";
char szFileNameDef[256];
strcpy(szFileNameDef, (const char*)strFile);

CFileDialog dlg(
    FALSE,
    szExt,
    szFileNameDef,
OFN_LONGNAMES|OFN_NONETWORKBUTTON|OFN_HIDEREADONLY,
    szFilters,
    GetParent());

// Titre du dialog
OPENFILENAME& ofn = dlg.GetOFN();
ofn.lpstrTitle = szTitre;

if( dlg.DoModal()==IDOK )
{
    CFile fic;
    if( fic.Open((LPCTSTR)dlg.GetPathName(), CFile::modeCreate|CFile::modeWrite) )
    {
        //... Serialize(archive);
    }
}



bye...


Cette discussion est classée dans : problème, code, age, prenom, cstring


Répondre à ce message

Sujets en rapport avec ce message

Transfert de charactères (Unicode, CString) [ par jefk ] Bonjour tout le monde.Je viens de mettre au C++ il y a quelques jours (visual studio et mfc), et j'ai une petite question. Mon problème est de transf (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 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 chaines de caractères [ par tintin72 ] BonjourJ'aimerai avoir un petit éclaircissement sur les chaines de caractères.Voici un programme tout bête... char prenom[100]; cout gets(pr Problème avec les CString [ par Cameleon69 ] BonjourJ'ai un CString qui commence par _, il se peut qu'il y en ai d'autre dans le CString mais je ne veux remplacer que le premier.Lorsque que j'uti Classe CString & Visual Studio [ par talamasca ] Tout d'abord, bien le bonjour.Mon problème est lié au CString MFC et/ou visual studio et/ou à la qualité du code que je vient de reprendre.Les symptom If problème [ par Hades53 ] J'ai un problème avec If :char*variable1;variable1 = "bonjour";if (variable1 == "bonjour") cout < Problème incompréhensible [ par CyberP ] Dans un callback d'une fenêtre, j'ai inséré ce code :case WM_PAINT:{ PAINTSTRUCT peindre; HDC rect; rect = BeginPaint(hWnd, &peindre); Engine.dr code asm en c++ [ par HCJarod ] Salut,j'ai un petit problème sous Borland C++. Lorsque j'insère de code assembleur dans ma source par asm{..} et que je veux faire du pas à pas, il y


Nos sponsors


Sondage...

CalendriCode

Juin 2013
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,912 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales