公司的项目一直都是基于MFC开发的,界面上面布满了各种各样的窗口,有时候就会出现一些奇怪的现象。我就是写了这么一篇文章来记录下自己遇到的奇怪现象。 1、在我的程序中,有一个CView的派生类窗口。上面有一些编辑框和下拉框。因为需求的原因,在我的编辑框失去焦点的时候要去保存编辑框中的文本。我处理了EN_KILLFOCUS消息,简要代码如下:
BOOL CMaskEdit::OnEnKillfocus()
{
ProcessKillFocus();
return FALSE;
}
一切看上去好像都没啥问题,但是我单元测试的时候发现了一个小问题,就是在我点击编辑框的时候,OnEnKillfocus函数被调用了,我就纳闷为啥会这样,我以为是下拉框引出的问题,所以我并没有进一步研究。 后来经过一段时间以后,测试人员再次提出这里面有bug。我就又研究了下。终于这次发现了根本原因。原来在点击编辑框窗口的时候,会激发CView窗口的OnActivateView函数,代码如下:
void CTestView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView)
{
//系统默认是获取焦点,我们这里不去获取焦点,否则答题卡编辑区域会出现异常
}
但使我下决心记录这篇文章的不是这个问题,而是接下来的一个问题。 我公司项目里面用了 CodeJock界面库。通过用该界