begin process at 2012 05 28 12:55:17
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

[API WIN32] Problème d'écriture dans un fichier


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

[API WIN32] Problème d'écriture dans un fichier

jeudi 6 janvier 2005 à 19:44:39 | [API WIN32] Problème d'écriture dans un fichier

elchevive

Salut à tous, j'ai un petit problème avec une fonction qui est censée écrire dans un fichier le contenu de l'edit d'une fenêtre MDI.

Il créer le fichier, le texte se retrouve effectivement dans le buffer, mais au niveau du WriteFile, ça bloque....
Merci d'avance pour le coup de pouce

Voilà le code source :

void SauverFenetreFille(HWND hWndClient)
  {
  OPENFILENAME ofn;
  char szNomFichier[TAILLENOMFICH];
  DWORD dwBytesWritten;
  HANDLE hFile;
  int iLength;
  PTSTR pstrBuffer;   
  WORD wByteOrderMark = 0xFEFF;
  HWND hWndEdit, hWndChild;

  *szNomFichier = '\0';  
  memset(&ofn,0,sizeof(ofn));
  static TCHAR szFilter[] = TEXT("Text Files (*.TXT)\0*.txt\0")  \
                            TEXT("ASCII Files (*.ASC)\0*.asc\0") \
                            TEXT("All Files (*.*)\0*.*\0\0");
    
  ofn.lStructSize       = sizeof(ofn);
  ofn.hwndOwner         = hWndClient;
  ofn.lpstrFilter       = szFilter;
  ofn.nMaxFile          = TAILLENOMFICH;
  ofn.lpstrDefExt       = TEXT("txt");
  ofn.lpstrFile         = szNomFichier;
  ofn.Flags             = OFN_OVERWRITEPROMPT;
 
  BOOL truc;
         
  if(GetSaveFileName(&ofn))
    if(hFile = CreateFile(szNomFichier,
                          GENERIC_WRITE,
                          0, //FILE_SHARE_READ
                          0, //NULL
                          CREATE_NEW, //CREATE_ALWAYS //CREATE_NEW
                          FILE_ATTRIBUTE_NORMAL, //0
                          NULL) != INVALID_HANDLE_VALUE)
      {
       
      SetFilePointer(hFile,pstrBuffer,0,FILE_BEGIN);
  
      // on donne le focus à la fenêtre fille
      hWndChild = (HWND)LOWORD(SendMessage(hWndClient,WM_MDIGETACTIVE,0,0L));

      // on récupère le handle de l'edit de la fenêtre fille
      hWndEdit = (HWND)GetWindowLong(hWndChild,0);     

      iLength = GetWindowTextLength(hWndEdit);
      pstrBuffer = (PTSTR)malloc((iLength + 1) * sizeof(TCHAR));

      GetWindowText(hWndEdit,pstrBuffer,iLength + 1);

      if(!WriteFile(hFile,
                &pstrBuffer,
                iLength * sizeof(TCHAR),
                &dwBytesWritten,
                NULL))
        MessageBox(hWndClient,"NO WRITE DONE !!","DEBUG",MB_OK);

      MessageBox(hWndClient,pstrBuffer,"DEBUG",MB_OK);

      CloseHandle(hFile);
      free(pstrBuffer);
      }     
  }// fin function SauverFenetreFille


jeudi 6 janvier 2005 à 20:21:16 | Re : [API WIN32] Problème d'écriture dans un fichier

simtiers

Il se peut que tu doives écrire
if(!WriteFile(hFile,
                pstrBuffer,
                iLength * sizeof(TCHAR),
                &dwBytesWritten,
                NULL))
Puisque pstrBuffer est un pointeur.
Sinon, je vois pas trop ce qui pourrait bloquer.
jeudi 6 janvier 2005 à 20:25:45 | Re : [API WIN32] Problème d'écriture dans un fichier

BruNews

Administrateur CodeS-SourceS
SetFilePointer(hFile,pstrBuffer,0,FILE_BEGIN); c'est quoi le but de cette ligne ???

Si tu veux ecraser le fichier a chaque fois, ouvre avec CREATE_ALWAYS, supprime la ligne du dessus et:
WriteFile(hFile, pstrBuffer, iLength * sizeof(TCHAR), &dwBytesWritten, 0);

En esperant que pstrBuffer est correctement alloue et rempli.

ciao...
BruNews, MVP VC++


Cette discussion est classée dans : ofn, hfile, ilength, pstrbuffer, hwndclient


Répondre à ce message

Sujets en rapport avec ce message

Pb Edition de Texte !!! [ par ElectricalMan ] Bonjour, j'ai un petit soucis en voulant sauvegarder le contenu d'une EditBox dans un fichier; j'ai que la moitier du contenu qui est sauvegardé ! O WriteFile => caractères non reconnu dans le fichier [ par Flo1987 ] Bonjour,J'ai un problème avec la fonction WriteFile : je cherche à écrire un tableau de double dans un fichier mais je retrouve des caractères non rec (win32)Fichier et buffer en lecture seule [ par mogwai93 ] Bonjour Je voudrais lire un fichier, placer le contenu de ce fichier dans un buffer et modifier ce buffer (mais pas le fichier). J'arrive bien à ou aidez moi svp [ par romain4700 ] salut tou le monde romain 19ans debutans c++ avec devc++ et microsoft visual c++ jai un problem je ne sais pas comment fair pour inseret un image dan BeginUpdateResource fail [ par zod331 ] bonsoir; L'appel de la fonction BeginUpdateResource marche tres bien en temp normal mais quand je fai appel a GetOpenFileName, BeginUpdateResource ne Problème avec GetOpenFileName [ par ArthurAuguste ] Bonjour, J'ai un problème avec GetOpenFileName si et seulement si le fichier que j'ouvre fait plus de 93Ko !!!! Si j'ai fait une erreur de programma vc++ OFN_ALLOWMULTISELECT CFileDialog [ par pichu ] je comprends pas ce que je doit faire avec m_ofn.lpstrFile dans l'extrait de la msdn quand je veux recuperer plusieurs chemins de fichiers :To allow t Avis des PROS! [ par UnExPeCtEdSpy ] Bonjour,je suis plus familier du vb que du c++ alors j'vous d'mande de l'aide :J'utilise une Dll en c+ avec un prog en Vb qui manipule des fichiers.Qu Comparaison de Variables [ par CassusGreg ] Salut a tous,Je débute vraiment en C++ (je suis sous VC++6)Je ne comprend pas grand chose en déclaration de variables et en test de comparaison. Mon b


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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 : 1,045 sec (3)

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