I'd like to point out that the call to DescribePixelFormat is unnecessary. (Unless you want to inspect the selected PIXELFORMATDESCIPTOR).

From the documentation for SetPixelFormat:

"ppfd - [...] The structure has no other effect upon the behavior of the SetPixelFormat function."

In other words: SetPixelFormat doesn't care about the ppfd parameter at all. AFAIK you can even pass a nullptr and it works just fine. (The example in the SetPixelFormat MSDN doc just passes the original PFD that was given to ChoosePixelFormat.)