I think the problem goes beyond the scope of the thread (and the C++ board). Looking at the thread watch in the debugger, the location of the current thread at the occurance of the error suddenly becomes 0000000 (give or take a zero), which to me, sounds bad. After playing around with it, I think it goes back to some OS specific windowing stuff. I've come up with a work-around, but I'm still annoyed that I don't know why I can't get it to work the other way.
Anyway, thanks for all the help. If I discover anything else, I'll post.