Esa estructura, como tal, te va a dar error... el tipo char* no es una clase de C++, por lo que no dispone de operadores sobrecargados que permitan hacer operaciones sobre este tipo de elementos. 
Tienes dos opciones: 
1. Usas funciones de C para manipular strings:    
Código C++:
Ver original- char ruta[1000]; 
- ShellExecute(GetDesktopWindow(),"open",ruta, NULL, NULL, SW_SHOWNORMAL); 
2. Usas un string de C++. En este caso no olvides que la función ShellExecute no espera recibir un std::string, sino un char*    
Código C++:
Ver original- // opcion 1: 
- std::ostringstream os; 
- os << "C:\\ " << e << ".pdf"; 
- std::string ruta = os.str( ); 
- ShellExecute(GetDesktopWindow(),"open",ruta.c_str(), NULL, NULL, SW_SHOWNORMAL); 
-   
- // opcion 2: 
- std::string ruta = "C:\\"; // No podemos concatenar char* directamente 
- // No estamos concatenando char* 
- // sino (string + char*) + char* => string + char* => string 
- ruta = ruta + e + ".pdf"; 
- ShellExecute(GetDesktopWindow(),"open",ruta.c_str(), NULL, NULL, SW_SHOWNORMAL); 
Un saludo