用户离开对话框后,再从其他程序切换回到对话框时的消息怎么捕获,从而自定义用户想做的功能?
使用系统消息函数OnSetFocus(),不能完全达到效果,它只会在对话框缩小再放大后才会响应,如果直接从对话框切到其他程序,这时对话框只是没显示在桌面顶层,被其他应用挡住了,并没有缩小到任务栏,所以再从其他应用切回对话框的时候,并不会触发该消息。
因此,需要捕捉对话框置顶的消息,可以设置一个时钟,每隔一段时间检查对话框是否在最顶层(即用户停留在对话框页面),
if(::GetForegroundWindow() == AfxGetMainWnd()->m_hWnd)
{
...
}
else
{
...
}