问题:TAB键切换控件时,CheckBox控件没有被选中的状态(即,没有选中的虚框)。
原因:因为代码代码完全重写了PreTranslateMessage的TAB切换焦点的逻辑,即,使用SetFocus()手动设置焦点的切换顺序。使得PreTranslateMessage函数的系统默认处理未被执行,出现如题的错误。
解决方法:在TAB键处理逻辑中,如果下一个焦点会是CheckBox控件时,不做特别处理,使用
return CDialog::PreTranslateMessage(pMsg);
执行默认的返回值。