[#1] IDCMP_RAWKEY - jak dostac key up event?
Czesc
gdy wychwytuje zdarzenia od klawiszy to program reaguje na "key down".
W opisie jest, ze gdy nie ma ustawionej IDCMP_VANILLAKEY to program odbiera zdzarzenia "down" i "up" - jak "wyfiltrowac" zdzarzenie "up"?

Dzieki.
[#2] Re: IDCMP_RAWKEY - jak dostac key up event?

@peceha, post #1

Hej,

IECODE_UP_PREFIX - jest to maska bitowa. Jak jest ustawiona w polu Code wiadomości IDCMP_RAWKEY to oznacza wiadomość "Up".

W języku C można zapisać tak:
if (code & IECODE_UP_PREFIX) 
   /* zdarzenie UP */ 
else 
   /* zdarzenie DOWN */
[#3] Re: IDCMP_RAWKEY - jak dostac key up event?

@Hexmage960, post #2

Dzieki, jak zwykle OK
[#4] Re: IDCMP_RAWKEY - jak dostac key up event?

@peceha, post #1

Wystarczy dodac 128 do kodu klawisza wcisnietego.
Ja uzywam takiej procedury (przyklad uproszczony):

int Dekoduj_IDCMP(struct IntuiMessage *KomIDCMP)
{
        switch(KomIDCMP->Class)
        {
                case IDCMP_RAWKEY:
                        switch(KomIDCMP->Code)
                        {
                                case 0x45:    // Esc - wcisniety
                                        Quit = TRUE;
                                        break;

                                case 0x45 + 0x80:    // Esc - puszczony
                                        Quit = FALSEE;
                                        break;
                        }
        }
[#5] Re: IDCMP_RAWKEY - jak dostac key up event?

@Phibrizzo, post #4

Przeczytalem w Twoim poscie o tym +128 i mam nieodparte wrazenie ze gdzies juz nawet to uzylem - tylko gdzie? nie moge sobie przypomniec...
Dzieki, wybiore, ktore bardziej mi pasuje.
[#6] Re: IDCMP_RAWKEY - jak dostac key up event?

@peceha, post #5

Przeczytalem w Twoim poscie o tym +128 i mam nieodparte wrazenie ze gdzies juz nawet to uzylem - tylko gdzie? nie moge sobie przypomniec...

Chyba chodzi, jeśli mnie pamięć nie myli o #define IDCMP_IDCMPUPDATE 0x00800000L

Ja preferuję w miarę możliwości stałe symboliczne, bo jak później zaglądam do swego kodu, to w mig rozumiem o co chodziło kiedy go pisałem.

Szczególnie dotyczy to stałych systemowych.

Są różne szkoły. Oba sposoby są dość powszechne, sposób Phibrizzo jest często wykorzystywany gdy liczy się prędkość kompilacji.

Często stosuje się go w asemblerze, np. JSR -552(A6) to otwieranie bibliotek, choć makroasemblery również umożliwiają tworzenie stałych symbolicznych.

Ostatnia aktualizacja: 23.09.2019 14:39:14 przez Hexmage960
[#7] Re: IDCMP_RAWKEY - jak dostac key up event?

@Hexmage960, post #6

,,IDCMP_IDCMPUPDATE 0x00800000L


tak tak , to chyba to milem na mysli, hehe
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem