Casi cualquier tipo de trazado es específica de la plataforma. Dicho esto, los archivos .wav se usan con mayor frecuencia en Windows, por lo que es probable que también esté interesado (o exclusivamente) en el código para Windows. En este caso, depende principalmente de sus requisitos de velocidad. Si desea una pantalla bastante estática, puede dibujar con MoveTo y (principalmente) LineTo. Si eso no es lo suficientemente rápido, puede obtener una pequeña velocidad de usando algo como PolyLine.
Si lo quiere mucho más rápido, es probable que su mejor opción sea utilizar algo como gráficos OpenGL o DirectX. Cualquiera de estos hace la mayoría del trabajo real en la tarjeta gráfica. Dado que está hablando de dibujar un gráfico de ondas de sonido, incluso una tarjeta gráfica de bajo rendimiento con poco o ningún trabajo para optimizar el dibujo probablemente se mantendrá con bastante facilidad con casi cualquier cosa que sea probable que le arroje.
Editar: En lo que se refiere a la lectura del archivo .wav, the format es bastante simple. La mayoría de los archivos .wav son muestras PCM sin comprimir, por lo que su extracción es una simple cuestión de leer los encabezados para determinar el tamaño de muestra y la cantidad de canales, y luego escalar los datos para que quepan en su ventana.
Edit2: Tiene un par de opciones para manejar los canales izquierdo y derecho. Una es dibujarlos en dos trazados separados, típicamente uno sobre el otro. Otra es dibujarlos superpuestos, pero en diferentes colores. Lo que es más adecuado depende de lo que esté tratando de lograr: si se trata de lucir genial, una trama superpuesta y multicolor probablemente funcionará bien. Si desea permitir que el usuario realmente examine lo que hay en detalle, probablemente querrá dos trazados separados.
¿Por qué en C++ sin embargo? –