La solución mas natural, me parece, es el uso de CopyFileEx, que permite introducir una función CallBack, que será llamada constantemente de vuelta por la rutina de copia a través de la que el proceso que llama (tu aplicación) es notificada del avance de la copia.
Entonces, podrías actualizar la interfaz de usuario para reportar el progreso de la copia.
Por otro lado, si lo que querés es que la aplicación siga utilizándose mientras la copia se realiza, podes lanzarla en otro hilo.
Hasta luego.
