love潇洒小峰 2015-09-23 06:24 采纳率: 75%
浏览 1841
已采纳

WIN32编程断点无法命中WM_TIMER消息

在WIN32编程中,设置了定时器,我在WM_Timer消息中打上断点,却无法命中断点,是怎么回事?
大家看看我的代码有没有问题?

 LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HDC hdc;
    PAINTSTRUCT ps;
    RECT    rect;   
    int TIMER1 = 1;
    SYSTEMTIME st;
    static TCHAR str[50];
    switch (message)
    {
    case WM_CREATE:SetTimer(hwnd, TIMER1, 100, NULL);
        return 0;       
    case WM_PAINT:
        hdc = GetDC(hwnd);      
        TextOut(hdc, 0, 0, str, 50);        
        ReleaseDC(hwnd, hdc);
        return 0;
    case WM_TIMER:
        GetLocalTime(&st);      
        GetTimeFormat(LOCALE_SYSTEM_DEFAULT, TIME_FORCE24HOURFORMAT, &st, "hh':'mm':'ss", str, 50);     
        return 0;
    case WM_DESTROY:
        KillTimer(hwnd, TIMER1);
        PostQuitMessage(0);
        return 0;


    }

    return DefWindowProc(hwnd, message, wParam, lParam);
}
  • 写回答

4条回答 默认 最新

  • oyljerry 2015-09-23 10:45
    关注
     /*--------------------------------------
       BEEPER1.C -- Timer Demo Program ver1
    --------------------------------------*/
    
    #include <windows.h>
    #include <stdlib.h>
    
    #define ID_TIMER    1
    
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                        PSTR szCmdLine, int iCmdShow)
    {
        static TCHAR szAppName[] = TEXT("Beeper1");
        HWND         hwnd;
        MSG          msg;
        WNDCLASS     wndclass;
    
        wndclass.style         = CS_HREDRAW | CS_VREDRAW;
        wndclass.lpfnWndProc   = WndProc;
        wndclass.cbClsExtra    = 0;
        wndclass.cbWndExtra    = 0;
        wndclass.hInstance     = hInstance;
        wndclass.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
        wndclass.hCursor       = LoadCursor(NULL, IDC_ARROW);
        wndclass.hbrBackground = (HBRUSH)GetStockObject (WHITE_BRUSH);
        wndclass.lpszMenuName  = NULL;
        wndclass.lpszClassName = szAppName;
    
        if (!RegisterClass (&wndclass))
        {
        MessageBox(NULL, TEXT("This program requires Windows NT!"), szAppName, MB_ICONERROR);
        return 0 ;
        }
    
        hwnd = CreateWindow(szAppName, TEXT ("Beeper1 Timer Demo"),
                            WS_OVERLAPPEDWINDOW,
                            CW_USEDEFAULT, CW_USEDEFAULT,
                            CW_USEDEFAULT, CW_USEDEFAULT,
                            NULL, NULL, hInstance, NULL);
    
        ShowWindow(hwnd, iCmdShow);
        UpdateWindow(hwnd);
    
        while (GetMessage(&msg, NULL, 0, 0))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        return msg.wParam;
    }
    
    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        HBRUSH          hBrush;
        HDC             hdc;
        PAINTSTRUCT     ps;
        RECT            rc;
    
        switch (message)
        {
        case WM_CREATE:
            SetTimer(hwnd, ID_TIMER, 1000, NULL);
            return 0 ;
    
        case WM_TIMER:
            MessageBeep(-1);
            InvalidateRect(hwnd, NULL, FALSE);
            return 0;
    
        case WM_PAINT:
            hdc = BeginPaint (hwnd, &ps) ;
    
            GetClientRect(hwnd, &rc);
            hBrush = CreateSolidBrush(RGB(rand()%255, rand()%255, rand()%255));
            FillRect(hdc, &rc, hBrush);
    
            EndPaint (hwnd, &ps) ;
            return 0 ;
    
        case WM_DESTROY:
            KillTimer(hwnd, ID_TIMER);
            PostQuitMessage (0) ;
            return 0 ;
        }
        return DefWindowProc (hwnd, message, wParam, lParam) ;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 51寻迹小车定点寻迹
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题
  • ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含