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

[WinAPI] Pasek przewijania w oknie DOS-owym

Ostatnio zmodyfikowano 2011-04-12 15:44
Autor Wiadomość
malan
» 2011-04-10 14:53:29
To co jest odpowiedzialne za pasek ??
Odpowiedz sobie na pytanie, do czego służy pasek przewijania. Następnie spójrz na kod i odpowiedz sobie na pewnie- dlaczego paska nie ma...
P-30542
Mrowqa
Temat założony przez niniejszego użytkownika
» 2011-04-10 15:03:51
Coś pewnie w funkcji init ...
Podejrzewam to od początku ( przed utworzeniem tego wątku ):
C/C++
DDTxDefaultConsoleHandle = GetStdHandle( STD_OUTPUT_HANDLE );
 Ale nie znam WinAPI, ani innych rzeczy więc nie wiem co trzeba zrobić ... Chce po prostu wiedzieć co zrobić by móc go pojawiać i znikać ( zmiana rozmiaru okienka też by się przydała :D )

Pozdrawiam,
Mrowqa
P-30545
malan
» 2011-04-10 23:37:19
Paski przewijania pojawiają się wtedy, kiedy "rzeczy" (tj. grafika, tekst itp.) w danym oknie wykraczają poza jego rozmiar. Np. na cpp0x (pionowy) pasek przewijania mam zawsze, gdyż dane (tekst, grafiki itd.) nie mieszczą się w monitorze ;p Możesz manualnie dodać ten pasek, ale i tak nie będzie on aktywny póki dane w oknie (w przypadku konsoli będą to po prostu znaki) nie przekroczą jakieś tam ilości. W przypadku ddt-console rozmiar bufora jest ustalony z góry, a pasków nie ma dlatego, że mieści się on w oknie.
Zmień sobie linijkę
COORD tWymiary = { 80, 25 };
 na
COORD tWymiary = { 80, 30 };
 i ciesz się pionowym paskiem przewijania :D Mam nadzieję, że zadziała ;p
P-30593
Mrowqa
Temat założony przez niniejszego użytkownika
» 2011-04-11 16:22:54
thx za pomoc ;) jak będę coś pisać to przetestuję to.
A co do paska --> normalnie powinien się pokazać gdy tekst zaczyna wychodzić - u mnie jest jakoś dziwne ---> jak coś wyjdzie w prawo to przechodzi do nowej linii, a co do paska to ten pionowy jest CAŁY CZAS i przewijając w dół jest nic ;)   ( to coś nienormalnego?? :D )

EDIT:
C/C++
SMALL_RECT tRozmiar = { 0, 0, 79, 24 };
 To jest odpowiedzialne za rozmiar okna DOS-owego??

Pozdrawiam,
Mrowqa
P-30607
malan
» 2011-04-11 21:58:37
A co do paska --> normalnie powinien się pokazać gdy tekst zaczyna wychodzić - u mnie jest jakoś dziwne ---> jak coś wyjdzie w prawo to przechodzi do nowej linii, a co do paska to ten pionowy jest CAŁY CZAS i przewijając w dół jest nic(...)
Mówisz tu o oknie konsoli Windows. Tak, zgadza się, jest tam pionowy pasek przewijania. Znajduje się on tam dlatego, że rozmiar bufora jest większy od rozmiaru okna (lub okno jest większe od bufora). Zwężając sobie to okno pojawi się poziomy pasek.
W przypadku ddt-console bufor mieści się w oknie, więc paski nie są potrzebne. Tak jak już mówiłem- zmieniając rozmiary bufora można ten pasek przywrócić.
C/C++
#include <iostream>
#include "ddtconsole.h"

int main()
{
    ddt::console::clrscr();
   
    //std::cin.sync();
    std::cin.get();
}
W funkcji
ddt::console::init
 zamieniasz
COORD tWymiary = { 80, 25 };
 na
COORD tWymiary = { 80, 30 };
 i pionowy pasek powraca z martwych. Z poziomym paskiem postępujesz analogicznie.

SMALL_RECT tRozmiar = { 0, 0, 79, 24 };
 - rozmiar okna konsoli Windows.
COORD tWymiary = { 80, 25 };
 - rozmiar bufora.
Wydaje mi się, że już powiedziałem wszystko co można powiedzieć o rozmiarach okna i bufora. Dalej kombinuj sam :)
P-30635
Mrowqa
Temat założony przez niniejszego użytkownika
» 2011-04-12 09:31:25
Dzięki ( i tak dużo nie rozumie :D ). Zmiana rozmiaru okienka mi chodziło o coś w stylu zamiast 80x25 na inny :P Ale i tak thx ;) WinAPI to obejmuje ?? Może się pouczę ...
PS wg was WinAPI jest bardzo przydatne ?? ( coś mi się zdaje, że tak, ale nie jestem pewien :D w końcu to do obsługi Windows'a ).
Co do tego wyżej to na razie nie piszę żadnych programów, ale jak co to napiszę w tym wątku, ew. założę nowy :P ( jeśli "coś się stanie" ) :D ( skoro ekran to bufor, to da się z niego czytać ?? :D )

PPS wiem, że dużo pytań - ale w końcu o to chodzi, żeby wiedzieć jak najwięcej, nie ? Doświadczenie jest ważne :P ( zwłaszcza jeśli chodzi o zawodową pracę :P Słyszałem, że ktoś zaproponował pracę 20tys zł/mies i programista się nie zgodził :D <--- ale to tak na boku jako ciekawostka :D Ciekawe jak dużo zarabiają programiści ... ci początkowi jak i bardzo zaawansowani :P )

Pozdrawiam,
Mrowqa
P-30646
McAffey
» 2011-04-12 15:44:41
Na forum jest zasada jeden temat = jeden problem, więc jak chcesz odpowiedzi na inne pytania/problemy to zakładaj nowe tematy ;]
P-30666
1 « 2 »
Poprzednia strona Strona 2 z 2