Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <windows.h>
- #include <string.h>
- #include <conio.h>
- #include <fstream>
- const int ProgramWindowXSize(100);
- const int ProgramWindowYSize(50);
- const int FileWindowXSize(50);
- const int FileWindowYSize(15);
- const int FileWindowXOffset(12);
- const int FileWindowYOffset(8);
- void ResizeConsoleWindow();
- void gotoxy(int x, int y);
- void clear();
- void ramka();
- int main ()
- {
- FILE * fp;
- int znak, n=0;
- char tekst[100];
- ResizeConsoleWindow();
- printf ("143275, Kusmierek, Patryk, 3\n");
- printf ("Podaj sciezke pliku\n");
- scanf ("%s", &tekst);
- fp = fopen(tekst, "r");
- if (fp==NULL)
- {
- perror ("Proba otwarcia pliku");
- getch();
- return 0;
- }
- else
- {
- gotoxy (0, 1);
- printf ("Nazwa pliku: %s\n", tekst);
- }
- printf ("ESC - wyjscie z programu\n");
- printf ("strzalka w dol - przesuniecie tekstu o jeden wiersz\n");
- printf ("spacja - przesuniecie tekstu o caly ekran\n");
- ramka ();
- while(true)
- {
- //-------------------------------------------v WYPELNIENIE v ----------------------------------------------
- int y=0;
- int x=0;
- while ((znak = fgetc(fp)) != EOF)
- {
- if(znak == '\n')
- {
- ++y;
- x=0;
- continue;
- }
- if(y<n)
- continue;
- if(x==FileWindowXSize-2)
- {
- gotoxy(x+FileWindowXOffset+1,y+FileWindowYOffset+1-n);
- putchar('>');
- x++;
- continue;
- }
- if(x>FileWindowXSize-2)
- continue;
- if(y>FileWindowYSize-2)
- break;
- gotoxy(x+FileWindowXOffset+1,y+FileWindowYOffset+1-n);
- putchar(znak);
- x++;
- }
- fclose(fp);
- //-------------------------------------------^ WYPELNIENIE ^ ----------------------------------------------
- while(true)
- {
- znak=getch();
- if(znak==0)
- znak=getch();
- if (znak==80)
- {
- clear();
- n++;
- fopen(tekst, "r");
- break;
- }
- if(znak==32)
- {
- clear();
- n=n+FileWindowYSize-1;
- fopen(tekst, "r");
- break;
- }
- if (znak==27)
- return 0;
- }
- }
- }
- void ResizeConsoleWindow()
- {
- HANDLE hstdout = GetStdHandle(STD_OUTPUT_HANDLE);
- COORD Size = {ProgramWindowXSize, ProgramWindowYSize}; /* stałe które mamy mieć w programie */
- CONSOLE_FONT_INFO FontInfo;
- GetCurrentConsoleFont(hstdout, false, &FontInfo);
- SetConsoleScreenBufferSize(hstdout, Size); /* zmienia wielkosc bufora ekranu */
- MoveWindow(GetConsoleWindow(), 0, 0, ProgramWindowXSize * FontInfo.dwFontSize.X,
- ProgramWindowYSize * FontInfo.dwFontSize.Y, TRUE);
- /* przemieszcza i zmienia rozmiar okna. Nie może być większy niż rozmiar bufora ekranu. Rozmiar podawany w pikselach, jeśli chcemy w znakach to musimy pomnożyć przez rozmiar czcionki :) */
- }
- void gotoxy(int x, int y)
- {
- COORD coord;
- coord.X = x;
- coord.Y = y;
- SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
- }
- // ***************************************************************** //
- void clear()
- {
- int a, b;
- for (a=0; a<FileWindowXSize-1; a++)
- {
- for (b=0; b<FileWindowYSize-1; b++)
- {
- gotoxy(FileWindowXOffset+a+1, FileWindowYOffset+b+1);
- putchar (32);
- }
- }
- }
- //------------------------------------------------------------------------------------------------------
- void ramka() //rysuje ramke na ekranie
- { for (int pozkraw=0; pozkraw<FileWindowXSize; pozkraw++)
- {
- gotoxy (FileWindowXOffset+pozkraw, FileWindowYOffset); //gorna krawedz
- printf("%c", 219);
- gotoxy (FileWindowXOffset+pozkraw, FileWindowYOffset+FileWindowYSize); //dolna krawedz
- printf("%c", 219);
- }
- for (int piokraw=0; piokraw<=FileWindowYSize; piokraw++)
- {
- gotoxy (FileWindowXOffset, FileWindowYOffset+piokraw); //lewa krawedz
- printf ("%c", 219);
- gotoxy (FileWindowXOffset+FileWindowXSize, FileWindowYOffset+piokraw); //prawa krawedz
- printf ("%c", 219);
- }
- }
- //-------------------------------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement