I have solved the problem! See the original post, "A strange problem with modeless dialog boxes", for details.
This is a repost, incorporating the latest simplifications of the problem statement, and a minimal reproducible example of the code...
I'm having a problem with modeless dialog boxes...
application
c++
code optimization
debugging
dialog boxes
event handling
file scanning
graphics
gui
linked list
modeless
multi-threading
performance
progress bar
sleep function
system calls
timers
user interface
window procedure
windows development
I have solved the problem! When the AI Bot told me that I was stalling the message loop, I looked deeper. In the original code I was calling PeekMessage() with PM_REMOVE, filtering for WM_KEYDOWN, and then checking for VK_ESCAPE. This consumed the WM_KEYDOWN message but not any other messages...
Fixes an issue in which OpenGL rendered content is still displayed after you enable the Aero feature and minimize a modeless dialog box. This issue occurs on a computer that is running Windows 7 or Windows Server 2008 R2.
More...