¿Cómo escribir una extensión de shell en C ++?

Esta parecía una pregunta común, pero después de buscar un poco, realmente no pude encontrar mis respuestas. Hay un artículo sobre esto aquí:

http: //www.codeproject.com/KB/shell/shellextguide1.asp

Pero es para una versión muy antigua de Visual Studio. Estoy usando VS 2008, por lo que las instrucciones y las interfaces no parecen coincidir con lo que estoy viendo.

Quiero crear una extensión de shell simple usando C ++ que cree un menú contextual para archivos con extensión .GZ. Al hacer clic derecho en estos archivos, debería poder hacer clic en mi elemento del menú contextual y tener una devolución de llamada en el código para realizar algún tipo de operación en ese archivo.

Otros elementos del menú contextual harían cosas como generar cuadros de diálogo sin modificaciones para aceptar la entrada del usuario antes de ejecutar alguna acción.

De lo que he visto, ATL se usa para esto, pero nunca he usado ATL, por lo que todos los tipos de objetos e interfaces son muy confusos para mí. No sería tan malo si tuviera un tutorial o documentación adecuada para leer.

¿Puede alguien ayudarme? ¿No hay algún tipo de tutorial por ahí que no tenga 10 años?

Respuestas a la pregunta(2)

Su respuesta a la pregunta