推荐一遍关于tab焦点的文章.
http://blogs.msdn.com/oldnewthing/archive/2004/07/30/201988.aspx
遇到一个很奇怪的bug
当窗口在失去焦点的时候,窗口里面的各个自控件不停的获取WM_GETDLGCODE消息
下断后看堆栈
在USER32的SetDefaultFocus中死循环.看起来是当窗口失去焦点的时候,重新设置默认焦点,也就是第一个tab order的时候,找不到对应的控件.
为啥会找不到呢,费了老鼻子劲
在上面THE OLD NEW THING中找到答案了
文章说实话,我看了一知半解.不过按照上面所讲的办法,问题是解决了.
应该是某个ACTIVEX控件没有设置WS_EX_CONTROLPARENT属性.
如果你点击了ACTIVEX,导致ACTIVEX获取了焦点.但是当窗口在失去焦点的时候.
从获取焦点的控件里面去找start point,即调用GetNextDlgTabItem会找不到start point.
因为控件没有设置WS_EX_CONTROLPARENT.系统默认把控件作为一个大的控件来处理.
不知道俺说的明白不,反正我也是没弄明白.当失去焦点的时候关于窗口焦点的一系列动作.