mlodymichal1990 Temat założony przez niniejszego użytkownika |
console.ddt skąd pobrać? » 2016-06-13 02:01:34 Podobne pytania padały już na tym forum, ale ok. 8 lat temu. Znalazłem kilka linków, ale albo nie działają albo nie mam dostępu albo kierują na stronę firmy DDT administratora i tam też nie widzę, żeby dało się ściągnąć. Proszę o pomoc. |
|
pekfos |
» 2016-06-13 12:15:10 Więc najprawdopodobniej już nie istnieje. RIP console.ddt. Może admin to jeszcze gdzieś ma, albo jakiś randomowy user starszej daty. W każdym razie niewielka strata, to w większości były funkcje opakowujące parę wywołań z WinAPI. //edit: Jeśli koniecznie już musisz robić stary kurs, to masz tu na szybko zamiennik #pragma once #ifndef LIBDDT_CONSOLE_H #define LIBDDT_CONSOLE_H
#include <windows.h>
namespace ddt { namespace console { inline void clrscr() { COORD coordStart = { 0, 0 }; DWORD dwCharsWr; CONSOLE_SCREEN_BUFFER_INFO csbi; HANDLE console = GetStdHandle( STD_OUTPUT_HANDLE ); GetConsoleScreenBufferInfo( console, & csbi ); DWORD dwConSize = csbi.dwSize.X * csbi.dwSize.Y; FillConsoleOutputCharacter( console,( TCHAR ) ' ', dwConSize, coordStart, & dwCharsWr ); FillConsoleOutputAttribute( console, csbi.wAttributes, dwConSize, coordStart, & dwCharsWr ); SetConsoleCursorPosition( console, coordStart ); } inline void gotoxy( int _x, int _y ) { COORD pos = { _x, _y }; SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), pos ); } inline int wherex() { CONSOLE_SCREEN_BUFFER_INFO csbi; GetConsoleScreenBufferInfo( GetStdHandle( STD_OUTPUT_HANDLE ), & csbi ); return csbi.dwCursorPosition.X; } inline int wherey() { CONSOLE_SCREEN_BUFFER_INFO csbi; GetConsoleScreenBufferInfo( GetStdHandle( STD_OUTPUT_HANDLE ), & csbi ); return csbi.dwCursorPosition.Y; } inline void textattr( int _color ) { SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), _color ); } inline void textcolor( int _color ) { CONSOLE_SCREEN_BUFFER_INFO csbi; HANDLE console = GetStdHandle( STD_OUTPUT_HANDLE ); GetConsoleScreenBufferInfo( console, & csbi ); SetConsoleTextAttribute( console,( csbi.wAttributes & 0xF0 ) |( _color & 0x0F ) ); } inline void textbackground( int _color ) { CONSOLE_SCREEN_BUFFER_INFO csbi; HANDLE console = GetStdHandle( STD_OUTPUT_HANDLE ); GetConsoleScreenBufferInfo( console, & csbi ); SetConsoleTextAttribute( console,( csbi.wAttributes & 0x0F ) |( _color & 0x0F ) << 4 ); } } }
#endif
|
|
jankowalski25 |
» 2016-06-13 16:11:16 |
|
mlodymichal1990 Temat założony przez niniejszego użytkownika |
» 2016-06-14 01:21:38 Dziękuję bardzo za odpowiedzi! Oba rozwiązania działają bardzo podobnie, różnią się niuansami, np. zmianą tytułu konsoli, ogarnąłem i rozkminiłem co i jak. Jedyne, czego nie rozumiem, to dlaczego funkcja wherey() zawsze mi zwraca wartość 1, gdziekolwiek bym kursora nie ustawił. |
|
pekfos |
» 2016-06-14 13:06:58 To zwraca numer wiersza. Na pewno masz na myśli kursor konsoli? Nie powinieneś użyć wherex()? |
|
mlodymichal1990 Temat założony przez niniejszego użytkownika |
» 2016-06-14 13:34:24 wherex() zwraca mi to, co trzeba. Jeżeli konsola ma wymiar 80x25, to: 1) wherex() powinno zwracać wartość od 0 do 79 (czy 1 do 80, nieistotne w tym momencie) i tak zwraca, w zależności od tego, gdzie kursor ustawię, tu wszystko OK, 2) wherey() analogicznie powinna zwracać wartość 1 do 25 , a tymczasem zawsze mam 1, bez względu na użycie gotoxy , endl czy "\n". Pewnie coś źle rozumuję, ale nie kminię działania wherey(). |
|
pekfos |
» 2016-06-14 16:29:44 Podaj przykładowy kod, który nie działa jak trzeba. |
|
mlodymichal1990 Temat założony przez niniejszego użytkownika |
» 2016-06-14 18:13:57 Już działa, sam znalazłem błąd. Zapomniałem () i robiłem instrukcję "wherey" zamiast "wherey()" i dlatego wyrzucało 1. Poprawiłem i działa prawidłowo. |
|
« 1 » |