使用WM_TIMER绘制分段连续函数

时间:2020-01-02 13:15:41

标签: c++ winapi

我需要通过WM_PAINT逐步绘制一些图形。据我了解,我应该创建计时器来创建延迟。

这是我尝试的地图:

case WM_CREATE: 
    SetTimer(hWnd, 1, 10000, NULL);
    break;

所以在这里,我有一个整洁的10秒计时器。

然后我做

case WM_TIMER: 
   MessageBeep(-1);
   InvalidateRect(hWnd, NULL, TRUE);
   break;

如何在WM_PAINT中执行计时器?我认为我的计时器应该一直工作,但是我根本听不到哔声。

这是我的WM_PAINT:

case WM_PAINT:
    {
        PAINTSTRUCT ps;
        HDC hdc = BeginPaint(hWnd, &ps);
        a = sx / 2;
        b = sy / 2;
        R = 100;
        SelectObject(hdc, blackPen);
        MoveToEx(hdc, 0, b, NULL);
        LineTo(hdc, sx, b);
        MoveToEx(hdc, a, 0, NULL);
        LineTo(hdc, a, sy);
        MoveToEx(hdc, a, b, NULL);
        SelectObject(hdc, redPen);


        for (x = 0.0; x < 2 * 3, 14; x += 0.1) {
            y = x + exp(2*x);
            LineTo(hdc, x, y);
        }
        EndPaint(hWnd, &ps);
    }
    break;

0 个答案:

没有答案