Advertisement
Guest User

Untitled

a guest
Mar 19th, 2016
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <fstream>
  2. #include <string>
  3. #include <windows.h>
  4. #include <iostream>
  5. #include <cstdlib>
  6.  
  7. #define ID_BUTTON 1
  8.  
  9. LPCSTR NazwaKlasy = "Klasa Okienka";
  10. MSG Komunikat;
  11. HWND hPrzycisk, hEdit, hListBox;
  12. LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
  13.  
  14. void tworzenie_pliku(char nazwa_pliku, std::string kod){
  15.     std::ofstream plik( nazwa_pliku+".txt" );
  16.     plik << kod ;
  17. }
  18.  
  19. int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
  20. {
  21.  
  22.     // WYPEŁNIANIE STRUKTURY
  23.     WNDCLASSEX wc;
  24.  
  25.     wc.cbSize = sizeof( WNDCLASSEX );
  26.     wc.style = 0;
  27.     wc.lpfnWndProc = WndProc;
  28.     wc.cbClsExtra = 0;
  29.     wc.cbWndExtra = 0;
  30.     wc.hInstance = hInstance;
  31.     wc.hIcon = LoadIcon( NULL, IDI_APPLICATION );
  32.     wc.hCursor = LoadCursor( NULL, IDC_ARROW );
  33.     wc.hbrBackground =( HBRUSH )( COLOR_WINDOW + 1 );
  34.     wc.lpszMenuName = NULL;
  35.     wc.lpszClassName = NazwaKlasy;
  36.     wc.hIconSm = LoadIcon( NULL, IDI_APPLICATION );
  37.  
  38.     // REJESTROWANIE KLASY OKNA
  39.     if( !RegisterClassEx( & wc ) )
  40.     {
  41.         MessageBox( NULL, "Odmawia rejestracji tego okna!", "Niestety...",
  42.         MB_ICONEXCLAMATION | MB_OK );
  43.         return 1;
  44.     }
  45.  
  46.     // TWORZENIE OKNA
  47.     HWND hwnd;
  48.     //okno
  49.     hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, NazwaKlasy, "Okno", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 200, 250, NULL, NULL, hInstance, NULL );
  50.  
  51.     hPrzycisk = CreateWindowEx( 0, "BUTTON", "Zapisz", WS_CHILD | WS_VISIBLE, 100, 150, 60, 30, hwnd, NULL, hInstance, NULL );
  52.     hEdit = CreateWindowEx( 0, "EDIT", "wpisz", WS_CHILD | WS_VISIBLE | WS_BORDER, 15, 150, 60, 30, hwnd, NULL, hInstance, NULL );
  53.     hListBox = CreateWindowEx( WS_EX_CLIENTEDGE, "LISTBOX", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL, 15, 15, 150, 100, hwnd, NULL, hInstance, NULL );
  54.  
  55.  
  56.  
  57.     if( hwnd == NULL )
  58.     {
  59.         MessageBox( NULL, "Okno odmówiło!", "Ale kicha...", MB_ICONEXCLAMATION );
  60.         return 1;
  61.     }
  62.  
  63.     ShowWindow( hwnd, nCmdShow ); // Pokaż okienko...
  64.     UpdateWindow( hwnd );
  65.  
  66.     // Pętla komunikatów
  67.     while( GetMessage( & Komunikat, NULL, 0, 0 ) )
  68.     {
  69.         TranslateMessage( & Komunikat );
  70.         DispatchMessage( & Komunikat );
  71.     }
  72.     return Komunikat.wParam;
  73. }
  74.  
  75. // OBSŁUGA ZDARZEŃ
  76. LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
  77. {
  78.     switch( msg )
  79.     {
  80.         case WM_COMMAND:{
  81.             switch(wParam)
  82.             {
  83.                 case ID_BUTTON:{
  84.                     /// pobieramy tekst z kontrolki i zapisujemy w lancuchu cText
  85.                     unsigned int iSize = GetWindowTextLength(hEdit);
  86.                     char *cText = new char[iSize+1];
  87.                     GetWindowText(hEdit, cText, iSize+1); /// +1 dla znaku /0
  88.                     /// otwieramy plik
  89.                     // http://cpp0x.pl/kursy/Kurs-WinAPI-C++/Podstawy/Pliki/180
  90.                     delete cText;
  91.                     for(int it=0; it<SendMessage(hListBox, LB_GETCOUNT, 0, 0); ++it)
  92.                     {
  93.                         iSize = SendMessage(hListBox, LB_GETTEXTLEN, 0, 0);
  94.                         cText = new char[iSize+1];
  95.                         SendMessage(hListBox, LB_GETTEXT, it, (LPARAM)cText);
  96.                         /// zapisujemy wartosc cText (tekstu it - indexu listy) do pliku
  97.                         delete cText;
  98.                     }
  99.                     /// zamykamy plik tekstowy
  100.                     break;
  101.                 }
  102.             }
  103.             break;
  104.     }
  105.         case WM_CLOSE:
  106.             DestroyWindow( hwnd );
  107.             break;
  108.  
  109.         case WM_DESTROY:
  110.             PostQuitMessage( 0 );
  111.             break;
  112.         default:
  113.         return DefWindowProc( hwnd, msg, wParam, lParam );
  114.     }
  115.  
  116.     return 0;
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement