BOOL CSaver::CreateEx()
{
CRect rect(0, 0, ::GetSystemMetrics(SM_CXSCREEN),
::GetSystemMetrics(SM_CYSCREEN));
// カーサーを設定せずにクラスを登録します
if (m_lpszClassName == NULL)
{
m_lpszClassName = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW,
::LoadCursor(AfxGetResourceHandle(),
MAKEINTRESOURCE(IDC_NULLCURSOR)));
}
BOOL fRet=CWnd::CreateEx(WS_EX_TOPMOST, m_lpszClassName, _T(""), WS_VISIBLE|WS_POPUP,
rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top,
NULL, NULL, NULL );
SetTimer(1, 500, NULL); // 500ms(0.5秒)毎にイベントの発生するタイマーを設定
return fRet;
}
・・・
void CSaver::OnDestroy()
{
KillTimer(1);
PostQuitMessage(0);
CWnd::OnDestroy();
}
・・・
void CSaver::OnPaint()
{
CPaintDC dc(this); // 描画用のデバイス コンテキスト
// TODO: この位置にメッセージ ハンドラ用のコードを追加してください
// 以下画面を塗りつぶすルーチン
CRect rect;
GetClientRect(&rect);
dc.FillSolidRect(&rect,m_stBackColor);
// 描画用メッセージとして CWnd::OnPaint() を呼び出してはいけません
}
void CSaver::OnTimer(UINT nIDEvent)
{
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
if(nIDEvent){
// 背景色をいろんな色に設定する
m_stBackColor+=0x10;
if(m_stBackColor>0xffffff)
m_stBackColor=0;
// 背景を塗りつぶす
CRect rect;
GetClientRect(&rect);
InvalidateRect(FALSE);
}
CWnd::OnTimer(nIDEvent);
}
|