//OnPaint()函数将全屏窗口置成黑色 void CMyScreenWnd::OnPaint() { CPaintDC dc(this); CBrush brush(RGB(0,0,0)); CRect rect; GetClientRect(rect); dc.FillRect(&rect,&brush); } void CMyScreenWnd::OnTimer(UINT nIDEvent) { CClientDC dc(this); int n=2; //你有几张图片就把n换成几,因为我 //做的屏保中只有两张图片因而n=2 static int m_nIndex=0; m_nIndex%=n-1; DrawBitmap(dc,m_nIndex++); CWnd::OnTimer(nIDEvent); } void CMyScreenWnd::OnKeyDown(UINT nChar,UINT nRepCnt,UINT nFlags) { PostMessage(WM_CLOSE); } void CMyScreenWnd::OnLButtonDown(UINT nFlags,CPoint point) { PostMessage(WM_CLOSE); } void CMyScreenWnd::OnRButtonDown(UINT nFlags,CPoint point) { PostMessage(WM_CLOSE); } void CMyScreenWnd::OnSysKeyDown(UINT nChar,UINT nRepCnt,UINT nFlags) { PostMessage(WM_CLOSE); } void CMyScreenWnd::OnMouseMove(UINT nFlags,CPoint point) { if (m_Point==CPoint(-1,-1)) m_Point=point; else if (m_Point!=point) PostMessage(WM_CLOSE); } void CMyScreenWnd::OnDestroy() { KillTimer(ID_TIMER); } void CMyScreenWnd::PostNcDestroy() { delete this; } //为了防止同时运行两个相同的程序,下面两个函数是必需的 //如果你不理解这段代码,不要管他们,只要把他们拷贝到你 //的工程中就行了 void CMyScreenWnd::OnActivate(UINT nState,CWnd* pWndOther,BOOL bMinimized) { CWnd::OnActivate(nState,pWndOther,bMinimized); if (nState==WA_INACTIVE) PostMessage(WM_CLOSE); } void CMyScreenWnd::OnActivateApp(BOOL bActive,HTASK hTask) { CWnd::OnActivateApp(bActive,hTask); if (!bActive) //is being deactivated PostMessage(WM_CLOSE); } |