挺简单的一个MFC基于对话框程序,主对话框上放了个tab控件,为了显示三个标签页,三个标签页也都是继承自CDialog的。
屏保、或按win+L等一会儿,回来之后,不刷新界面。
难道让我在OnShow事件里invalidate?或refresh?。到底是一个一个标签页里加,还是在主对话框里加。明白的高人指点指点
屏保、或按win+L等一会儿,回来之后,不刷新界面。
难道让我在OnShow事件里invalidate?或refresh?。到底是一个一个标签页里加,还是在主对话框里加。明白的高人指点指点
Draw counter ticks
我用TRACE在output窗口显示一些调试信息,屏保回来的时候竟然不调用OnPaint函数,我不知道发生这个的原因,可能是因为我调用了MFC Grid Control这个控件,因为我搜
Draw counter ticks这条在output显示的信息,结果只有MFC Grid Control这个控件的。
处理这个消息就可以了!
很早以前用过这个消息,时间长了,记不得了!
//唤醒事件处理
if (wParam == PBT_APMRESUMEAUTOMATIC)
{
}
屏保你可以在启动屏保时启动一个键盘和鼠标钩子。在键盘和鼠标回调中处理
把它在你的窗口上拖一拖,看是不是能重现同样的刷新的问题。如果是,那说明你的窗口本身的处理存在问题,估计是子面板的父窗体没设对。
{
CDialog::OnActivate(nState, pWndOther, bMinimized); // TODO: Add your message handler code here
//只当被激活时调用,失去焦点时不调用
if (WA_ACTIVE == nState)
{
//第一次显示的时候,不调用
if (IsFirstShow == 0XFF)
{
return;
}
// pDialog[m_CurSelTab]->ShowWindow(SW_HIDE);
// pDialog[m_CurSelTab]->ShowWindow(SW_SHOW);
pDialog[m_CurSelTab]->Invalidate(TRUE);
// pDialog[m_CurSelTab]->SendMessage(WM_SHOWWINDOW);
//TRACE("ShowWindow\n");
}
}
子对话框还得设置Control和Control Parent属性为True,以保证Tab键走位正确:)