Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

console.ddt skąd pobrać?

Ostatnio zmodyfikowano 2016-06-14 18:13
Autor Wiadomość
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.
P-149083
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
C/C++
// Podróbka legendarnego console.ddt ;)
#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 );
        }
       
    } // namespace console
} // namespace ddt

#endif // LIBDDT_CONSOLE_H
P-149087
jankowalski25
» 2016-06-13 16:11:16
P-149105
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ł.
P-149122
pekfos
» 2016-06-14 13:06:58
To zwraca numer wiersza. Na pewno masz na myśli kursor konsoli? Nie powinieneś użyć wherex()?
P-149125
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().
P-149126
pekfos
» 2016-06-14 16:29:44
Podaj przykładowy kod, który nie działa jak trzeba.
P-149129
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.
P-149133
« 1 »
  Strona 1 z 1