Avatar billede aggie Nybegynder
15. oktober 2001 - 13:06 Der er 4 kommentarer og
1 løsning

Shortcut og focus

Den her er mest til mbulow (siden han har svaret på samme applikation før), men andre der vil være med skal være velkomne :)
Det er måske en ide at titte på http://www.eksperten.dk/spm/119759 først, der står meget der er relevant..

Spørgsmålene er:
1) Jeg vi have, at den forbandede dims afleverer fokus tilbage til den applikation der havde det, når den minimerer,

2) Kan jeg sætte programmet til at reagere på keyboard shortcuts? (f.eks, istedet for at klikke på tray ikonet, kan jetg trykke CTRL-SHIFT-N eller lignende)
Avatar billede mbulow Nybegynder
15. oktober 2001 - 14:54 #1
Hej aggie :)

Du må undskylde at jeg aldrig fulgte op på dit sidste indlæg i spørgsmål 119759. Det er ikke fordi jeg ignorerede dig, opgaven var bare for tricky til at jeg følte jeg kunne bidrage med et fornuftigt svar...

Det jeg er kommet frem til indtil videre er:
Når man klikker på S\'et i systray\'et får systray\'et fokus, hvorefter \'notesblokken\' åbnes, og den får fokus.
Dvs. når man lukker \'notesblokken\', gives fokus tilbage til den app der før havde fokus, altså systray.
Så i bund og grund gør den desværre nok som den burde, men ikke det du vil ha\' den til :/

Så spørgsmål 1) bør nok ændres til noget i retning af hvordan man finder ud af hvilken app. der havde fokus før systray\'et, hvilket nok er en temmelig tricky opgave.

PS!!! Sidste opgave gik ikke hurtig pga. min erfaring med windows-programmering (for den er ikke så vild, som den gerne måtte være), men fordi jeg selv har haft et problem der mindede om det ;) Hehe

Hvis jeg finder en løsning på dit problem, skal jeg nok svare ASAP
Avatar billede aggie Nybegynder
15. oktober 2001 - 14:56 #2
finodino, så ser jeg om jeg selv kan finde en løsning på det med systray og fokus :))

- men kan du greje det med shortcuts?
Avatar billede mbulow Nybegynder
15. oktober 2001 - 15:35 #3
Løsning til dit shortcut spørgsmål:

Tilføj følgende til OnCreate, lige før linjen med \"return 1;\":
    // Register the hot-key
    RegisterHotKey(hwnd_main, 0, MOD_CONTROL | MOD_SHIFT, 0x4E);    // VK_N == 0x4E
Det gør at systemet (windows) holder øje med kombinationen Ctrl-Shift-N, og sender en besked til hwnd_main, når kombinationen dukker op.
0 er \'notesblokkens\' ID til den oprettede hotkey.

I WndProc skal du så bare huske at fange den besked som window sender. Med en hurtig gang copy-paste fra tidligere spørgsmål kan det gøres sådan:
    case WM_HOTKEY:
          switch(wParam){
              case 0:    // ID til hotkey: Ctrl-Shift-N
                    if(IsWindowVisible(hwnd))
                        ShowWindow(hwnd, SW_HIDE);
                    else{
                        ShowWindow(hwnd, SW_SHOW);
                        SetForegroundWindow(hwnd);
                    }
                    break;
          }
          return 0;

PS! Jaja. Jeg ved det godt... Copy/Paste er ikke pænt inden for programmering, men det gjorde svaret pænere/simplere ;) Hehe
Avatar billede aggie Nybegynder
15. oktober 2001 - 16:11 #4
heh, tilfældigvis så virker det der med fokus også, når man bruger keyboard shortcut :))

nåmn, jeg vil gerne have den på SHIFT+SPACE istedet, kan man det?

- og en *aller* sidste ting: gider du sende mig den samlede kode du har ændret? jeg er kommet til at smide kilden væk efter det første hold ændringer :/

( aggie@aggie.dk )
Avatar billede mbulow Nybegynder
15. oktober 2001 - 16:38 #5
Shift+Space:
Jada :) Du kan vist lave det om til alle de kombinationer af key-modifiers (Ctrl, Shift, etc.) og tastetryk du vil, men du må ikke hænge mig op på det ;)

Du skal bare ændre RegisterHotKey(...) til:
    RegisterHotKey(hwnd_main, 0, MOD_SHIFT, 0x20);    // VK_SPACE == 0x20



Koden er sendt...
Tak for de 100 points :)
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