Advertisement
dllbridge

mode & ProgressBar in WinLego

Jun 19th, 2022
998
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.23 KB | None | 0 0
  1.  
  2.  
  3. #include    "C:\\dllBridge\\WinLego\\Lego\\Lego.h"
  4. using namespace Lego;
  5.  
  6. #include      <commctrl.h>  
  7.  
  8. #include     "mode/enum.h"
  9.  
  10.  
  11. Button               btn[7];               //  На всякий случай, сразу 7 элементов (кнопок).  
  12. EditBox              edt[7];               //  EditBox тоже может пригодиться в будущем.
  13. ListBox              lbx[7];               //  ListBox  тоже на будущее...
  14.  
  15. char                sz[123];
  16.                    
  17.  
  18.  
  19. int                                
  20.                  cnt_m5 = 0;
  21.  
  22. HWND               hProgBar;
  23.  
  24.  
  25. void       switching_to_mode__0();
  26. void       switching_to_mode__5();
  27. void       switching_to_minus_1();
  28. void                    mode__0();
  29. void                    mode__5();
  30. void                    minus_1();
  31.  
  32. /////////////////////////////////////////////   Эта функция инициализации. Она вызывается с помощью таймера №1
  33. void INIT()                                //   1 (единственный) раз, когда Timer_CLK == 1.
  34. {
  35.      
  36.      btn[1].Create("Press start", 500, 200, 100, 20);   //ProgressBar"
  37.      btn[1].SetFont(3);
  38.      
  39.      InitCommonControls();
  40. }
  41.  
  42.  
  43.  
  44.  
  45. ///////////////////////////////////////////////     Эта функция вызывается (с помощью таймера №2) 5 раз
  46. void START()                                 //     в секунду, когда Timer_CLK >= 2.                                                      
  47. {
  48.  
  49.  
  50.      switch(mode)
  51.      {
  52.  
  53.          case  -1:  minus_1(); break;        // -1 Режим меню 
  54.          case   0:  mode__0(); break;  
  55.          case   5:  mode__5(); break;                      
  56.            
  57.      }
  58. }
  59.  
  60.  
  61.  
  62. //     Подсказка для будущего использования режимов (переменной "mode")
  63. // =================================
  64. //void       switching_to_mode110();          
  65. //void       switching_to_mode_99();     //  инициализация перед запуском режима 99 (все "switching_to_mode")
  66. //void       switching_to_mode__4();
  67. //void       switching_to_mode__3();
  68. //void       switching_to_mode__2();
  69. //void       switching_to_mode__1();
  70. //void       switching_to_minus_1();
  71. //void                    minus_1();     //  Mode for menu  
  72. //void                    mode__1();
  73. //void                    mode__2();
  74. //void                    mode__3();     //  Здесь код исполняемый, при (mode == 3)
  75. //void                    mode__4();  
  76. //void                    mode110();
  77. //void  out_of_previos(int newMode);     //  Деинициализация завершённого режима. (Одна для всех режимов)
  78. //
  79.  
  80.  
  81. /////////////////////////////////////////////////////////////////////////
  82. void    switching_to_mode__0()                                         //
  83. {
  84.    
  85.         out_of_previos(-1);     mode = 0;
  86.        
  87.         btn[1].Show();  
  88.    
  89. }
  90.  
  91. static int ID = 0;
  92. /////////////////////////////////////////////////////////////////////////
  93. void    switching_to_mode__5()                                         //
  94. {
  95.    
  96.        
  97.    
  98.         out_of_previos(-1);     mode = 5;
  99.        
  100.         Print_2(30, 170, "A separate thread is running:");
  101.    
  102.         if(ID)
  103.         {
  104.            ShowWindow(hProgBar, SW_SHOW);
  105.            ID_.SwHide[ID] = 1;  
  106.         }
  107.         else {
  108.         hProgBar =   CreateWindowEx(0, PROGRESS_CLASS, 0,
  109.                     WS_CHILD | WS_VISIBLE | WS_BORDER,
  110.                  25, 200, 240, 20, hWnd, 0, hInstance, 0);  
  111.                  
  112.         ID = ID_.search();      
  113.         ID_.handleWin[ID] = hProgBar;  
  114.         ID_.SwHide[ID] = 1;
  115.         }
  116.                                                                        
  117.         SendMessage(hProgBar, PBM_SETRANGE, 0, (LPARAM)MAKELONG(0, 50));      
  118.         SendMessage(hProgBar, PBM_SETSTEP,     (WPARAM)1, 0);              
  119. }
  120.  
  121.  
  122.  
  123.  
  124. /////////////////////////////////////////////////////////////////////////
  125. void    mode__0()                                                      //
  126. {
  127.    
  128.         if(btn[1].Press())  switching_to_mode__5();
  129.    
  130. }
  131.  
  132. /////////////////////////////////////////////////////////////////////////
  133. void    mode__5()                                                      //  
  134. {
  135.    
  136.    
  137.         SendMessage(hProgBar, PBM_STEPIT, 0, 0);                       
  138.        
  139.         if(cnt_m5 ++ < 50)
  140.         {  
  141.            wsprintf(sz, "%d %%", 2 * cnt_m5);
  142.            Print_2(275, 202, sz);
  143.         }      
  144.         else   
  145.         {  
  146.            SendMessage(hProgBar, PBM_SETPOS, 0, 0);                   //  Position reset
  147.            switching_to_mode__0();                     
  148.         }  
  149. }
  150.  
  151.  
  152.  
  153. /////////////////////////////////////////////////////////////////////////// DestroyWindow(hProgBar);
  154. void  out_of_previos(int newMode)                                      //
  155. {
  156.    
  157.    
  158.       switch(mode)                                                     // oldMode
  159.       {
  160.  
  161.          case   0: btn[1].Hide();                              
  162.                    break;
  163.            
  164.          case   5: cnt_m5 =  0;
  165.  
  166.                    ID_.SwHide[ID] = 0;
  167.                    ShowWindow(hProgBar, SW_HIDE);
  168.                    
  169.                    Print_2( 30, 170,"                              ");  
  170.                    Print_2(275, 202,"                              ");                 
  171.                    break;
  172.       }
  173. }
  174.  
  175.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement