Skocz do zawartości
Lisek^

Jak ukryć kursor w C++

Rekomendowane odpowiedzi

Jak rozumiem, chodzi o Win32

 

 

The ShowCursor function displays or hides the cursor. int ShowCursor(BOOL bShow  // cursor visibility flag  );

Acha, jeżeli to jednak DOS-owy kursor Cię denerwuje to co za problem, skoro masz kod w asemblerze??

 

Zależnie od kompilatora:

 

asm{     // tu instrukcje asemblera}lub_asm{     // tu instrukcje asemblera}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Procedure SetCursor(On: boolean);var Reg: Registers;begin  Reg.AX:= $0100;  Reg.BX:= 0;  if On then    Reg.CX:= $0607  else    Reg.CX:= $2020;  Intr($10,Reg);end;
Zostaje Ci tyko to przepisac na asm :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jadymy :D

 

asm {  mov AX, 0x0100;  mov BX, 0x0;  mov CX, 0x2020; // Aby wyłączyć spowrotem 0x0607  int 0x10;}

 

Mam nadzieję, że dobrze przepisałem na asembler :D nigdy nie pisałem nic w pascalu.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie wiem, po co te zabawy z Assemblerem, bo w C/C++ jest do tego specjalna instrukcja:

 

_SETCURSORTYPE(_NOCURSOR);

_SETCURSORTYPE(_SOLIDCURSOR);

_SETCURSORTYPE(_NORMALCURSOR);

 

1 instrukcja - brak kursora

2 instrukcja - prostokacik :P

3 instrukcja - normalny kursorek

 

Wiem, że działa na 100% w Borland C++. Jeśli chodzi o inne kompilatory, to musisz sprawdzić.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie wiem, po co te zabawy z Assemblerem

Ano wlasnie po to, zeby uniezaleznic sie od kompilatora.

 

Wiem, że działa na 100% w Borland C++. Jeśli chodzi o inne kompilatory, to musisz sprawdzić.

Jestem prawie pewien, ze jest to tylko w BC++ i w zadnym innym...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Z jednej strony masz racje, ale z drugiej, to po co się męczyć, skoro Borland Cię wyręcza?

Chociażby po to aby trochę Assemblera się nauczyć :)

 

p.s.

A te polecenia co napisałeś to chyba tylko w Visualu działają? Czy może się mylę :?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Teraz też potrzebuję pomocy a postanowiłem nie zkładać nowego wątku.

 

Otóż jak rozwiązać problem dzielenia liczby mniejszej przez większą typu int. Funkcja zwraca float i zawsze jest to 0. Wiem, że w C++ jest coś takiego jak zaokrąglanie do 0 ale nie wiem jak to dokładnie działa. Potrzebne mi to jest przy obliczaniu miejsca zerowego funkcji liniowej czyli coś w stylu x=-b/a

 

Może ktoś z Was wie co z tym fantem zrobić?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nowy dzial hmmm fajny bajer ale ja proponowalbym raczej odnosniki

do bardziej odpowiednich miejsc ;)

- binboy - C, C++, WinApi, Asm

- 4p - Delphi, Pascal

osobiscie preferuje ten pierwszy (zainteresowani wiedza czemu :] ).

 

Ale wracajac do tematu, Panie i Panowie pomijaja tutaj za duzo kwestii i pozostawiaja

za duzo niejasnosci z czego rodza sie bledy :( !!

 

Otoz obecnie najwazniejsze podzialy w aplikacjach to 16 i 32 bitowe programy.

Ten podzial to nie tylko zwiekszenie wymiarow int-a ale takze zmiany w bibliotekach

(tutaj wspomniany conio.h), przejscie z real na protected mode (po DOSie pozostal juz

tylko emulator :]).

I tak kompilatory DJGPP, BC++ 3.11 tworza aplikacje 16bitowe, ale juz VC++, BCB (od

bodajze wersji 4) tworza juz aplikacje tylko 32bitowe !! Ktore (jesli wybierzemy

odpowiedni projekt) mimo ze odpalaja sie w konsoli to z DOSem nie maja nic wspolnego

i pod nim w 100% sie nie uruchomia !!

 

Dlatego tez to co napisal mily :

_SETCURSORTYPE(_NOCURSOR);  

_SETCURSORTYPE(_SOLIDCURSOR);  

_SETCURSORTYPE(_NORMALCURSOR);  

(_set... powinno ofcoz byc z malymi literkami) zadziala na starej wersji conio.h

w kompilatorach 16bitowych, czyli przeznaczonych

dla DOS-a i przy kompilacji nie bedzie problemow (nie wiem czy zadziala to na gcc bo

pod linuxem uzywam w konsoli ncurses ale to juz inna bajka).

Natomiast na kompilatorach win32 conio jak i sama konsola jest nowa i funkcje modyfikujace

konsole zgromadzone zostaly w specjalnym headerku - wincon.h.

To wyjasnia powyzsze problemy kilku osob z conio.h i roznymi kompilatorami.

 

Podzialom poddal sie tez assembler i dlatego to co napisal Fido :

Ano wlasnie po to, zeby uniezaleznic sie od kompilatora.  

to niestety bzdura. Idea uniezaleznienia moze i istnieje ;) ale tak sie sklada

ze istnieja dwie konkurencyjne skladnie asm-a : AT&T (w kompilatorach opartych na gcc,

wiec np. DJGPP) i Intel'a (BCB, VC++ itp). Sa one calkowicie inne i kod ze wstawka na

pewno nie skompiluje sie na obu grupach kompilatorow. Uniezaleznienie nie istnieje :]

Po napisaniu kodu w asm-ie pozostaje wiec tylko satysfakcja z jego znajomosci - co jest

wystarczajaca nagroda :]

 

No to chyba na tyle tego wykladu :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

ps. djgpp jest 32-bitowy a binboy teraz nie dziala ;P

TRUE (co nie zmienia faktu ze tworzony jest kod DOSowy - przynajmniej stare wersje obecnie nie wiem jak to jest bo go po prostu nie uzywam :]) i TRUE (przenosza w jakies szybsze miejsce :]).

 

A i jeszcze wazny szczegol.

Otoz w win32 rzadzi PMode (tryb chroniony) on to powoduje ze mozemy wlasciwie

zapomniec o bezposrednim odwolaniu sie do sprzetu. Dlatego tez korzystanie we

wstawkach z przerwan jest maxymalnie ograniczone i tylko z niektorych (tych mniej

znaczacych) mozna korzystac ; 21h, 10h itp odpadaja niestety( ofcoz na CPL=3 czyli na poziomie zdefiniowanym przez M$ dla poczciwych uzytkownikow Windowsa), podczas gdy pod

czystym DOSem (real mode ma swoje zalety :]) mozna z nich bez ograniczen korzystac.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...