【发布时间】:2017-03-20 14:19:42
【问题描述】:
我正在尝试使用 DrawText GDI 函数实现每隔几秒闪烁的文本,但我在正确设置和运行计时器时遇到了问题。
这是我的代码:
const int ID_Timer1 = 1;
SetTimer(hWnd, ID_Timer1, 1000, NULL);
...
LRESULT CALLBACK Splash::WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) {
case WM_PAINT:
if((timer%2)==0)
m_pSplashWnd->OnPaint ( hWnd, true );
else
m_pSplashWnd->OnPaint ( hWnd, false);
break;
case WM_NCDESTROY:
delete m_pSplashWnd;
m_pSplashWnd = NULL;
break;
case WM_TIMER:
switch (wParam)
{
case ID_Timer1:
{
timer++;
InvalidateRect(hWnd, NULL, FALSE);
UpdateWindow(hWnd);
break;
}
}
case WM_KEYDOWN:
case WM_SYSKEYDOWN:
case WM_LBUTTONDOWN:
case WM_RBUTTONDOWN:
case WM_MBUTTONDOWN:
case WM_NCLBUTTONDOWN:
case WM_NCRBUTTONDOWN:
case WM_NCMBUTTONDOWN:
m_pSplashWnd->HideSplashScreen();
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
我做错了什么?我已经尝试使用专用的TimerProc 而不是WM_TIMER,但结果相同......
【问题讨论】:
-
我当然声明了 const int ID_TIMER1 = 1;静态长定时器 = 0L;
-
但你不是每秒都得到
WM_PAINT,因为得到它你需要在WM_TIMER上调用例如InvalidateRect -
这是我的 wndProc,(RbMm thx 的建议)我修改但仍然没有开始工作,这是预期的
-
糟糕,无法添加为评论