我是这么弄的
case WM_INITDIALOG:
SetTimer(hDlg,1,1000,NULL);
SendMessage(GetDlgItem(hDlg,SPIN1),UDM_SETBUDDY,(long)GetDlgItem(hDlg,EDIT3),0L);
SendMessage(GetDlgItem(hDlg,SPIN1),UDM_SETRANGE,0L,100L);
SetDlgItemInt(hDlg,EDIT3,5,FALSE);
case WM_VSCROLL:
if((int)LOWORD(wParam)==SB_LINEDOWN) 
MessageBox(hDlg,"xia","1",MB_OK);
break;
有if判断时,MessageBox不能执行
去掉if判断,MessageBox去执行了两次,郁闷,那不收到了两次消息,通过单步执行证实确实收到两次消息
大家帮我看看为什么会有这两个怪问题

解决方案 »

  1.   

    if((int)LOWORD(wParam)==SB_LINEDOWN) 
    在这里中断,看看两次LOWORD(wParam)是什么值,是否相同winuser.h中的定义:
    #define SB_LINEUP           0
    #define SB_LINELEFT         0
    #define SB_LINEDOWN         1
    #define SB_LINERIGHT        1
    #define SB_PAGEUP           2
    #define SB_PAGELEFT         2
    #define SB_PAGEDOWN         3
    #define SB_PAGERIGHT        3
    #define SB_THUMBPOSITION    4
    #define SB_THUMBTRACK       5
    #define SB_TOP              6
    #define SB_LEFT             6
    #define SB_BOTTOM           7
    #define SB_RIGHT            7
    #define SB_ENDSCROLL        8
      

  2.   

    我靠,居然两次收到的消息是SB_THUMBPOSITION 和SB_ENDSCROLL   ,没有 SB_LINEDOWN         ,那么按上下键为什么不会发来SB_LINEDOWN