Avatar billede a_dyhrberg Nybegynder
14. september 2001 - 15:49 Der er 13 kommentarer og
1 løsning

aflæsning af ENTER knap under MFC

jeg har en CDialog med nogle knapper en CListBox og en editbox i MFC. Denne dialog er oprette på en CPropertyPage hvor der også er nogle knapper
Jeg skal udføre nogle kommandoer når man trykker på ENTER.
hvordan kan jeg nemmest fange dette tastetryk.

Lige nu når jeg trykker på ENTER vælger programmet at aktivere den knap på propertypagen som har focus istedet.

Little thing im sure, but im stuck !!!!
Avatar billede dr.truti Nybegynder
14. september 2001 - 16:30 #1
Du kan ikke bare give den komando i kanppens Funktion ???? Sorry hvis det er helt langt ude men jeg forstår ikke dit spørgsmål 100% :(
Avatar billede a_dyhrberg Nybegynder
14. september 2001 - 16:44 #2
nej det kan jeg ikke den knap som programmet aktiver er jo til en helt anden funktion. Den henter en anden CDialog ind på CPropertySheeten.

Det er når jeg har tatstet noget ind i min edit box og trykker enter for at gemme resultatet. Så gemmer den ikke resultatet da enter knappen istedet aktivere den knap som henter en ny dialog ind istedet for den jeg arbejder i.

?? Makes any sence ??

ellers må jeg forklare det lidt tydliger !
Avatar billede dr.truti Nybegynder
14. september 2001 - 17:02 #3
Nåååå OK !!!!!

Okay men kan du så ikke gøre sådan at når du har trykket på knap 1 så bliver den invisible men så bliver Knap2 visible hvor du kan skrive din anden gemme kode......

Bare et forslag !!!

Truti [DK]
Avatar billede a_dyhrberg Nybegynder
14. september 2001 - 17:12 #4
eeeeh nej. OK

Det er fordi. det fungere som at navigere sig rundt i et menu system. lad os sige der er 2 knapper på mit property shet når man trykker på en af dem, åbner der en CDialog oven på. hvis jeg trykker på den anden knap destroyer denne dialog og åbner en ny. I den ene dialog har jeg en edit box jeg gerne vil fylde noget i. Når jeg gør dette og trykker på enter tror den jeg skifter til en anden dialog ved at trykke, på en ny menu knap ???
Avatar billede dr.truti Nybegynder
14. september 2001 - 17:49 #5
Lyder sq godt nok som et underligt problem !!! :)
Jeg kan ikke lige komme på noget lige nu men jeg vil vende til bage hvis jeg får en ide.
Avatar billede a_dyhrberg Nybegynder
14. september 2001 - 18:40 #6
Hvis du har en mail.
kan jeg prøve at sende det til dig.
Avatar billede dr.truti Nybegynder
14. september 2001 - 18:41 #7
Mail: maac@mail1.stofanet.dk
ICQ: 72755522
Avatar billede soepro Nybegynder
17. september 2001 - 08:48 #8
Du kan normalt ikke \"fange\" ENTER på en form med knapper, simpelthen fordi knapperne (den aktive kontrol, dvs. den knap der har fokus) har \"førsteprioritet\" til tastetrykkene. Du skal sætte property\'en \'KeyPreview\' på parent komponenten og nappe ENTER via OnKeyPress på parent componenten på den måde.
Avatar billede a_dyhrberg Nybegynder
17. september 2001 - 21:43 #9
Soepro vil du ikke lige udybe det. Det lyder som om at du har fattet problem stillingen. Men jeg forstår ikke hvad du mener !!!

Kan jeg ikke lig få din EMail / ICQ
Avatar billede jpk Nybegynder
07. oktober 2001 - 10:34 #10
Tilføj en handler for WM_GETDLGCODE
Avatar billede soepro Nybegynder
08. oktober 2001 - 09:32 #11
Alle tastetryk bliver under Windows fanget af Windows selv, og sendt videre til det aktive program som en \"event\" eller en MESSAGE. Den enkelte application i sin tur, er opbygget med et central \"message\" loop der fanger alle disse events fra selve Windows, og dernæst sender dem videre til f.eks. den komponent der har fokus. Alt efter opbygningen af det centrale \"message\" loop og komponentens ditto, vil du kunne fange f.eks. ENTER i komponenten eller i det centrale loop. Hvis du VIL fange enten i komponenten, må du altså fortælle det centrale loop at det IKKE skal behandle ENTER der.

Under C++ Builder (og MVC) har man på hver form (svarende til et Windows handle til et canvas) direkte en property der hedder \'KeyPreview\' som betyder at det centrale loop skal lade komponenten (her altså formen) kigge på evt. tastetryk FØR det bliver behandlet i det centrale loop. Jeg kender ikke MFC særlig godt, men som jpk skriver ville du formentlig skulle aktivere en handler til at reagere på tastetrykket. (Om den så hedder WM_GETDLGCODE eller hvad, aner jeg ikke - men jeg ville forvente at WM_GETDLGCODE giver dig dialogens \"modal result\", altså hvilken af dine knapper der blev trykket på, hvilket ikke nødvendigvis har noget med tasten ENTER at gøre. WM_GETKEYPRESS var et mere sandsynligt navn.)
Avatar billede jpk Nybegynder
08. oktober 2001 - 09:38 #12
WM_GETDLGCODE er ikke en MFC message! (Platform SDK)
Den har absolut heller intet med en dialogs modal result at gøre...

Fra platform SDK dokumentationen:
The WM_GETDLGCODE message is sent to the window procedure associated with a control. By default, the system handles all keyboard input to the control; the system interprets certain types of keyboard input as dialog box navigation keys. To override this default behavior, the control can respond to the WM_GETDLGCODE message to indicate the types of input it wants to process itself.
Avatar billede soepro Nybegynder
08. oktober 2001 - 09:41 #13
jpk >> OK, I stand corrected !
Avatar billede a_dyhrberg Nybegynder
14. november 2001 - 14:40 #14
Tjaa dette er ved at være et gammelt spørgsmål, og jeg er kommet videre unden at bruge noget af ovenstående hjælp. Min løsning var at jeg begyndte at bruge et grid komponent fra OGrid fra firmaet stingray. Denne løste dette enter problem. Men ellers tak for hjælpen til jer alle
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