AleksandarH

PS - Yes/No Timer

May 17th, 2022 (edited)
857
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. INT_PTR CALLBACK Timer(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
  2. {
  3.     int counter = 0, choice = 0;
  4.     static int step = 1;
  5.     BOOL* LPt = NULL;
  6.     BOOL SIG = TRUE;
  7.     UNREFERENCED_PARAMETER(lParam);
  8.     switch (message)
  9.     {
  10.     case WM_INITDIALOG:
  11.         SendDlgItemMessage(hDlg, IDC_PROGRESS1, PBM_SETRANGE, 0, MAKELPARAM(0, 100));
  12.         SendDlgItemMessage(hDlg, IDC_PROGRESS1, PBM_SETSTEP, step, 0);
  13.         return (INT_PTR)TRUE;
  14.  
  15.     case WM_COMMAND:
  16.         if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
  17.         {
  18.             EndDialog(hDlg, LOWORD(wParam));
  19.             return (INT_PTR)TRUE;
  20.         }
  21.         else if (LOWORD(wParam) == IDC_BUTTON1)
  22.         {
  23.             SetTimer(hDlg, TIMER1, 20, NULL);
  24.         }
  25.         break;
  26.  
  27.     case WM_TIMER:
  28.         if (GetDlgItemInt(hDlg, IDC_EDIT1, LPt, SIG) == 100)
  29.         {
  30.             KillTimer(hDlg, TIMER1);
  31.             choice = MessageBox(hDlg, "ДА спре ли таймера?", "Избор", MB_YESNO);
  32.             switch (choice)
  33.             {
  34.             case IDYES:
  35.                 EndDialog(hDlg, LOWORD(wParam));
  36.                 break;
  37.             case IDNO:
  38.                 counter = 0;
  39.                 SetDlgItemInt(hDlg, IDC_EDIT1, counter, SIG);
  40.                 SendDlgItemMessage(hDlg, IDC_PROGRESS1, PBM_SETPOS, 0, 0);
  41.                 SetTimer(hDlg, TIMER1, 20, NULL);
  42.                 break;
  43.             }
  44.         }
  45.         else
  46.         {
  47.             counter = GetDlgItemInt(hDlg, IDC_EDIT1, LPt, SIG);
  48.             counter++;
  49.             SetDlgItemInt(hDlg, IDC_EDIT1, counter, SIG);
  50.             if (SendDlgItemMessage(hDlg, IDC_PROGRESS1, PBM_GETPOS, 0, 0) < 100)
  51.             {
  52.                 SendDlgItemMessage(hDlg, IDC_PROGRESS1, PBM_STEPIT, 0, 0);
  53.             }
  54.         }
  55.         break;
  56.     }
  57.     return (INT_PTR)FALSE;
  58. }
RAW Paste Data Copied