J’avais un problème avec l’utilisation de SHFileOperation
: SHFileOperation / SHFILEOPSTRUCT . Je l’ai fait fonctionner mais j’essaie maintenant de le mettre dans une fonction car il sera utilisé plusieurs fois dans mon code. Les fonctions sont:
void SHFileOperationFunc(ssortingng item1, ssortingng item2, int operation) { SHFILEOPSTRUCT sf; memset(&sf,0,sizeof(sf)); sf.hwnd = 0; sf.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | FOF_NOERRORUI; switch(operation) { case 1: case 2: sf.wFunc = FO_COPY; ssortingng files = item1 + "\\*.*"; files.append(1, '\0'); sf.pFrom = files.c_str(); item2.append(1, '\0'); sf.pTo = item2.c_str(); } int opOkay = SHFileOperation(&sf); if(opOkay != 0) { //FAIL }
}
Quand j’avais le code en dehors de la fonction, ça marchait bien. Mais maintenant que c’est comme ci-dessus, je reçois une erreur renvoyée à opOkay. La valeur d’erreur est 124, ce qui signifie que ERROR_INVALID_LEVEL – Le niveau de l’appel système n’est pas correct. Je ne sais pas ce que cela signifie. Google n’a pas été d’une grande aide non plus. Quelqu’un m’a éclairé?
SHFileOperation
je aussi utiliser SHFileOperation
ou devrais-je utiliser IFileOperation
?
À votre santé.
Le problème est que les files
seront hors de scope lorsque le bloc de commutation se terminera et que sf.pFrom
deviendra un pointeur en sf.pFrom
. Déplacer la déclaration de files
en dehors du switch
.
Notez que vous n’avez pas de break
dans les blocs de switch
.