Столкнулся со странностями, описанными в KB
http://support.microsoft.com/kb/92905
"The infinite loop is clearly visible when spying on the child dialog box window. The child dialog box window continually receives WM_GETDLGCODE messages. The dialog box manager confuses the child dialog box window with a child control."
У меня симптомы такие же, но из-за другого.
Дано:
CDialog
|
|- CTabCtrl
| |- CDialog (property page 1)
| |- CDialog (property page 2)
|- CButton (OK)
|- CButton (Cancel)
Если фокус стоит на любом контроле в любом из property page, и попытаться переключиться на другое приложение (alt+tab),
то мы имеем дедлок, который выражается в следующем:
дочерним окнам главного диалога (таб контролу и двум кнопкам) циклически шлется сообщение WM_GETDLGCODE (wparam=0, lparam=0), проц на 50% загружен и всё — только end process.
Пока копался перевел код с CodeJock на чистый MFC. Если в первом случае циклилось где-то в хуках скинов, то во втором уже где-то в недрах винды, т.е. баг не в сторонней библиотеке.
Кто-нибудь с таким сталкивался, есть ли нормальное решение? шаманить пока не хочется