Salve a tutti, sono nuovo nel forum e volevo risolvere un problema che mi ha bloccato nello svilutto di un programma.
sto sviluppando questa applicazione in microsoft visual c++ 2010 (applicazione console clr)
per evitare di far inserire ogni volta il path del file a mano (siccome sono path abbastanza lunghi) devo fare in modo che l'utente selezioni un file tramite una finestra (in giro su internet ho visto che molti consigliano di usare GetOpenFileName() ) e una volta scelto il file devo aprirlo e fare delle cose
#include "stdafx.h"
#include "resource.h"
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <cstdlib>
#include <string>
#include <Windows.h>
#include <CommDlg.h>
using std::cout;
using std::cin;
using std::string;
OPENFILENAME ofn ;
char szFile[500] ;
using namespace System;
void SceltaFile()
{ ZeroMemory( &ofn , sizeof( ofn));
ofn.lStructSize = sizeof ( ofn );
ofn.hwndOwner = NULL ;
ofn.lpstrFile = (LPWSTR)szFile ;
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof( szFile );
ofn.lpstrFilter = TEXT("All\0*.*\0Text\0*.TXT\0")
ofn.nFilterIndex =1;
ofn.lpstrFileTitle = NULL ;
ofn.nMaxFileTitle = 0 ;
ofn.lpstrInitialDir=NULL ;
ofn.Flags = OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST ;
GetOpenFileName( &ofn );
MessageBox ( NULL , ofn.lpstrFile ,(LPCTSTR)szFile, MB_OK);
}
Questo è 1 pezzo del codice inserito nel programma che ho trovato su internet, purtroppo non so usare questi comandi quindi non saprei come gestirlo.
Spero che qualcuno mi riesca a spiegare come funziona e se va bene perchè vorrei capire quello che metto nei programmi che faccio.
la variabile szFile memorizza il path del file che seleziono però dopo ogni carattere ci inserisce uno 0.
perchè? come faccio ad avere il path "pulito"? perchè se provo a spostarlo in un'altra variabile
(che poi utilizzo per aprire il file) mi copia solo il primo carattere.
Grazie in anticipo.