Advertisement
dllbridge

Untitled

May 13th, 2025
247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.25 KB | None | 0 0
  1.  
  2. #include  <windows.h>
  3. #include <commctrl.h>  
  4. //#include "commctrl.h"                                                               //  Этот файл я взял из MSVC 6.0
  5.  
  6. HWND hTreeView;
  7.  
  8. HWND         hWnd,
  9.          hProgBar;
  10.          
  11. HINSTANCE   hInst;    
  12.  
  13. HANDLE    hArr[3];    
  14.  
  15. int Timer_CLK = 0;
  16.  
  17. char      sz[123];
  18.  
  19.  
  20.  
  21. /////////////////////////////////////////////////////                                   Рисует строку в окне программы
  22. void xPrint(int x, int y, const char *pChar)       //
  23. {  
  24.        
  25.      HDC hdc = GetDC(hWnd);
  26.      SetTextColor(hdc, RGB(66, 170, 255));
  27.      SetBkColor  (hdc, 0);
  28.      TextOut(hdc, x, y, pChar, strlen(pChar));
  29.      ReleaseDC(hWnd,hdc);
  30. }
  31.  
  32. /////////////////////////////////////////////////////
  33. int TormoZ()                                       //
  34. {
  35.     int c = 0,
  36.         p = 2;
  37.    
  38.     for(int i = -2000000000; i < 2000000000; i++)
  39.     {
  40.         if(c++ > 80000000)
  41.         {  c=0;
  42.            SendMessage(hProgBar, PBM_STEPIT, 0, 0);
  43.            wsprintf(sz, "%d %% ", p += 2);  
  44.            xPrint(250, 205, sz);
  45.         }  
  46.        
  47.     }
  48.     xPrint(40, 170, "                     ");
  49.     xPrint(40, 240, "STOP !  ");
  50. }
  51.  
  52.  
  53. /////////////////////////////////////////////////////
  54. DWORD WINAPI WorkThread0(LPVOID param)             //
  55. {
  56.  
  57.     int c = 0,
  58.         p = 2;
  59.    
  60.     for(int i = -2000000000; i < 2000000000; i++)
  61.     {
  62.         if(c++ > 80000000)
  63.         {  c=0;
  64.            SendMessage(hProgBar, PBM_STEPIT, 0, 0);
  65.            wsprintf(sz, "%d %% ", p += 2);  
  66.            xPrint(250, 205, sz);
  67.         }  
  68.        
  69.     }
  70.     xPrint(40, 170, "                       ");
  71.     xPrint(40, 240, "STOP !  ");
  72.  
  73. ExitThread(0);
  74. }
  75.  
  76.  
  77. ///////////////////////////////////////////////////////////////////////////////////////////////
  78. HTREEITEM InsTreeItem(HTREEITEM hParent, LPSTR szText,
  79.                       HTREEITEM  hAfter, int   iImage, int iSelectedImage)
  80. {
  81.    
  82.      TV_INSERTSTRUCT tvins;
  83.      HTREEITEM hItem;
  84.  
  85.      memset(&tvins, 0, sizeof(tvins));
  86.      tvins.item.mask = TVIF_TEXT | TVIF_IMAGE |
  87.      TVIF_SELECTEDIMAGE | TVIF_PARAM;
  88.      tvins.item.pszText = szText;
  89.      tvins.item.cchTextMax = lstrlen(szText);
  90.      tvins.item.iImage = iImage;
  91.      tvins.item.iSelectedImage = iSelectedImage;
  92.      tvins.hInsertAfter = hAfter;
  93.      tvins.hParent = hParent;
  94.  
  95.  // hItem = TreeView_InsertItem(hwndTree, &tvins);     //  hTreeView
  96.     hItem = TreeView_InsertItem(hTreeView, &tvins);    //  hTreeView
  97.   return hItem;
  98. }
  99.  
  100.  
  101. ///////////////////////////////////////////////////////////////////////////////////////////////
  102. LRESULT CALLBACK WndProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam)              //
  103. {
  104.    
  105. //  static HWND hTreeView;
  106.    
  107.     switch(Message)
  108.     {  
  109.  
  110.         case  WM_CREATE:   SetTimer(hWnd, 1, 200, 0);        //  Создаём таймер №1, который срабатывает каждые 0.4 сек.
  111.        
  112.  
  113.             HWND hPanel = CreateWindowEx(0, "STATIC", 0,                                      // Создаем панель слева
  114.                                          WS_CHILD | WS_VISIBLE | SS_BLACKFRAME,
  115.                                         0, 0, 200, 500, hWnd, NULL, NULL, NULL);
  116.  
  117.  
  118.             hTreeView = CreateWindowEx(0, WC_TREEVIEW, NULL,                                       // Создаем дерево
  119.                                           WS_CHILD | WS_VISIBLE | TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS,
  120.                                           10, 10, 180, 480, hPanel, NULL, NULL, NULL);                 
  121.                            break;                                //  Принимаем однократное сообщение для инициализации
  122.              
  123.         case   WM_TIMER:   switch(Timer_CLK ++)
  124.                            {
  125.  
  126.                                          
  127.                                case  5:  
  128.                                          hProgBar = CreateWindowEx(0, PROGRESS_CLASS, NULL,
  129.                                                          WS_CHILD | WS_VISIBLE | WS_BORDER,
  130.                                                    325, 203, 200, 20, hWnd, 0, hInst, NULL);  
  131.                                                                        
  132.                                          SendMessage(hProgBar, PBM_SETRANGE, 0, (LPARAM)MAKELONG(0, 50));      
  133.                                          SendMessage(hProgBar, PBM_SETSTEP, (WPARAM)1, 0);    
  134.                                          
  135.                                          break;
  136.                                          
  137.                                case  7:  
  138.                                          //xPrint(40, 170, "Start TormoZ"); TormoZ();
  139.                 //hArr[0] = CreateThread(NULL, 0, WorkThread0, NULL, 0, 0); xPrint(40, 170, "Start thread");
  140.                                          break;                                          
  141.                                                                                  
  142.                            }                                                                           
  143.                            break;
  144.                            
  145.         case WM_COMMAND: break;                            
  146.    
  147.         case WM_DESTROY: PostQuitMessage(0);
  148.                          break;
  149.        
  150.         default: return DefWindowProc(hWnd, Message, wParam, lParam);
  151.            
  152.     }
  153.     return 0;
  154. }
  155.  
  156.  
  157. ///////////////////////////////////////////////////////////////////////////////////////////////
  158. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
  159. {
  160.     WNDCLASSEX wc;
  161.    
  162.     MSG Msg;
  163.  
  164.  
  165.  
  166.    // INITCOMMONCONTROLSEX icc;                                                        // Инициализация Common Controls
  167.    // icc.dwSize = sizeof(INITCOMMONCONTROLSEX);
  168.  
  169.  
  170.         memset(&wc, 0, sizeof(wc));
  171.     wc.cbSize        = sizeof(WNDCLASSEX);
  172.     wc.lpfnWndProc   = WndProc;
  173.     wc.hInstance     = hInst = hInstance;
  174.     wc.hCursor       = LoadCursor(0, IDC_ARROW);
  175.     wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+2);  //  (GRAY_BRUSH);                          
  176.     wc.lpszClassName = "WindowClass";
  177.     wc.hIcon         = LoadIcon(0, IDI_APPLICATION);
  178.     wc.hIconSm       = LoadIcon(0, IDI_APPLICATION);
  179.  
  180.     if(!RegisterClassEx(&wc)) {
  181.         MessageBox(NULL, "Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
  182.         return 0;
  183.     }
  184.  
  185.     hWnd = CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass", "Example for Progress Bar & Thread",
  186.                                                       WS_VISIBLE|WS_OVERLAPPEDWINDOW,
  187.            100,
  188.            100,
  189.            800,
  190.            600,
  191.            0, 0, hInstance, 0);
  192.  
  193.     if(hWnd == NULL) {
  194.         MessageBox(0, "Window Creation Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
  195.         return 0;
  196.     }
  197.  
  198.  
  199.     while(GetMessage(&Msg, 0, 0, 0) > 0) {
  200.           TranslateMessage(&Msg);
  201.           DispatchMessage(&Msg);
  202.     }
  203.     return Msg.wParam;
  204. }
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement