Casillas de verificación de tres estados en WinForms TreeView

Tengo un TreeView que permite a los usuarios seleccionar ciertos elementos de datos jerárquicos marcando o desmarcando la casilla de cada elemento. Actualmente desactivo la casilla en los nodos que tienen hijos que usan lacheckbox ocultando la técnica de otra pregunta, al igual que

☑ Node 1
☐ Node 2
• Node 3
  ☑ Node 3.1
  ☑ Node 3.2
• Node 4
  ☐ Node 4.1
  ☑ Node 4.2

Pero una mejor solución sería usar casillas de verificación de tres estados para los nodos principales, de esta manera:

☑ Node 1
☐ Node 2
☑ Node 3
  ☑ Node 3.1
  ☑ Node 3.2
☒ Node 4
  ☐ Node 4.1
  ☑ Node 4.2

Dado que esta funcionalidad estaba disponible en Win32, mi pregunta es cómo hacer esto sin dibujar los cuadros yo mismo (por ejemplo, como un control dibujado por el usuario ousando una lista de imágenes). No estoy familiarizado con la API Win32 en absoluto; ¿Cómo se podría ampliar la técnica vinculada anteriormente para habilitar los checboxes de tres estados en un control administrado TreeView?

Respuestas a la pregunta(3)

Su respuesta a la pregunta