Avatar billede bjarke Nybegynder
18. september 1999 - 21:38 Der er 8 kommentarer og
1 løsning

Musestyring

tknudsen lavede et glimrende demo-program til grundlæggende brug af mus. Senere skrev han (du) om hvordan man kunne bruge musen i forbindelse med objekter/knapper:

"Hardware clock'en pull'er på int33h - og interrupter så programmet hvis
der klikkes på et 'aktivt' område på skærmen."

1)  Hvordan gøres dette (gerne et lille demoprogram)?

2)  Derudover vil jeg gerne høre om der findes noget materiale på nettet om dette og lignende og hvilken litteratur der kan anbefales til at komme videre med (interrupts, grafik, mus og lignende - jeg er rimelig fortrolig med indholdet af Robert Lafores "Object-Oriented Programming in C++).
Avatar billede soepro Nybegynder
22. september 1999 - 14:27 #1
Man kan ikke få int33h til KUN at interrupte når den trykkes oven på et aktivt område. Du kan lave forskellige int33h funktionskald, herunder et som giver dig stedet på skærmen hvor musen blev klikket. Det må du så efterfølgende checke om "rammer" nogle af dine aktive områder. Vær opmærksom på at musen bevæger sig i "ryk" af 8 pixels, når man kører text-mode - svarende til et tegn.

Og blot for at du nu ikke skal tror at jeg finder på dette - så har jeg læst et andet svar her på eksperten, hvor der er en henvisning til følgende side på nettet, med beskrivelse af bl.a. int33h:

http://www.brl.ntt.co.jp/people/takehiko/interrupt/index.html
Avatar billede bjarke Nybegynder
22. september 1999 - 14:36 #2
Ja, linket er vist fra tknudsen, så vidt jeg husker. Det er også ham der skrev ovenstående til mig, men f.eks. ved jeg ikke hvad hardware clock'en er og da slet ikke hvordan man i praksis laver et sådan program.

Så, jeg bliver nok nødt til at have en lille demo, for at finde ud af det :-)

Det med de 8 pixels kunne jeg også godt selv finde, men der er jo ikke noget om hvordan man laver sådan et c/c++ program!
Avatar billede tknudsen Nybegynder
22. september 1999 - 22:50 #3
hardware clock'en er en lille dims som set'er et software interrupt ca. 18.2 gange i sekundet og siden du vil lave musestyringen i dos kunne man jo forestille sig et TSR program som hver gang dette sw int kommer kontrollerede int33h for musens placering samt knap status. Hvis der så er en-eller-anden betingelse som man ønsker at reagere på skal TSR programmet så set'e et andet sw int som C-programmet har overtaget.

Denne betingelse kunne jo feks være at en (eller flere) knapper bliver trykket. Så skulle TSR prg sende noget data til C prg indeholdene x,y pos samt hvilke knapper der blev trykket...

Det eneste problem jeg lige kan finde er at jeg ikke kan lave dette TSR program i C - men i ASM. Desuden skal TSR prg loades før evt windows (fra autoexec.bat (?)) og C prg og både TSR og C prg skal have et fælles dataområde - dette kan også klares med et sw int !

Jeg kan godt gå videre i detajler hvis du har mod på det ...! ?
Avatar billede soepro Nybegynder
22. september 1999 - 22:59 #4
tknudsen >> Hvorfor i himlens navn bruge krudt på en TSR ??? Du kan da bare stjæle int33h direkte - og så starte din egen rutine med at kalde videre til systemets int33h - analogt til hvad jeg gjorde med uret. (se andet svar her på eksperten.)
Avatar billede tknudsen Nybegynder
23. september 1999 - 07:51 #5
soepro: ja - men jeg tænkte at c prg ikke skulle pull'e på int33 - nærmest ligesom noget event styring...
Avatar billede bjarke Nybegynder
23. september 1999 - 08:15 #6
tknudsen >> tak skal du ha', men jeg tror, at vi er ved at komme så langt væk fra det jeg kan, så det nok er ligemeget. Der er heller ikke meget ved bare at få noget kode og få at vide hvordan man skal gøre, hvis man ikke forstår det. Så kan jeg jo lige så godt gå over til windows-programmering, hvis jeg ikke selv kan lave tingene.

Så anyway, jeg tror bare jeg laver lidt klasser og nedarvinger til at holde styr på sagerne!

Jeg ved ikke helt hvad jeg gør med pointene, men hvis du også svarer tknudsen, så kan I (tknudsen og soepro)jo få lov at dele pointene (man accepterer bare to gange, hvis to skal have point ikke?). Håber det er i orden med jer gutter!
Avatar billede tknudsen Nybegynder
23. september 1999 - 10:32 #7
du kan jo også bare lave interrupt kaldet i dit C prg.

mht point - never mind - jeg er her for at hjælpe :)
Avatar billede bjarke Nybegynder
23. september 1999 - 10:51 #8
tknudsen >> hvor ædelt:-) Taler vi ikke om det samme - klasserne skal selvfølgelig bruge interrupten til at kontrollere musens position og knap-status?

soepro >> Mod sædvane, synes jeg ikke rigtig at dit svar rækker til en accept, men jeg kan jo lade spørgsmålet ligge lidt og hvis ikke der sker noget, så får du jo nok pointene alligevel.
Avatar billede bjarke Nybegynder
02. oktober 1999 - 23:24 #9
Når der sker vist ikke så meget mere her, så vær's'go soepro, her er lidt godter til sækken (selvom du er min nærmeste konkurrent i kategorien ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsikrings- og pensionsakademiet A/S

IT-teknisk profil

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Senior Platform Engineer

Politiets Efterretningstjeneste

Datacentertekniker hos PET