Avatar billede aggie Nybegynder
11. oktober 2001 - 15:46 Der er 5 kommentarer og
1 løsning

minimere ved luk?

Hej jeg sidder med en lille notesblok lignende fætter, jeg har hentet hos nullsoft (winamp folkene).
Den kan lige præcis det den skal, og ikke alt muligt andet gejl, så jeg er glad ved den.

MEN, den duer ikke på min maskine (windows 2000 professional)...

meningen er, at når man trykker ALT+F4, skal den minimere til tray, men istedet lægger den bare vinduet bagest, og det kunne jeg godt tænke mig at få ændret. Jeg gætter at det er en 2-sekubders opgave for en, der faktisk kender den der api, men jeg gør ikke :/

hvis der er en der gider kigge på den og fortælle mig, hvad jeg skal lave om?

( http://www.nullsoft.com/free/sex/ )
Avatar billede mbulow Nybegynder
12. oktober 2001 - 11:53 #1
Hej aggie

Hvis du finder WndProc-funktionen (Starter linje 122) vil du kunne se TO linjer hvor der står:
    SetForegroundWindow(hwnd);

Indsæt foran hver af de to linjer følgende:
    if(!IsWindowVisible(hwnd))
          ShowWindow(hwnd, SW_SHOW);

Scroll lidt længere ned til OnClose-funktionen (Ca. linje 208), udkommenter linjen hvor der laves et kald til SetWindowPos-funktionen, og skriv istedet:
    ShowWindow(hwnd, SW_HIDE);

Jeg håber at den opfører sig nogenlunde som du ville ha\' den til nu... Ellers må jeg misforstået et eller andet, men så er det jo heldigvis nemt nok at komme tilbage til udgangspunktet ;)
Avatar billede aggie Nybegynder
12. oktober 2001 - 12:50 #2
hehe, jeg havde netop læst min gamle, og hidtil ulæste, visual c++ 5 bog, og fundet ud af selv, at indsætte

ShowWindow(hwnd,SW_HIDE) i OnClose, og
ShowWindow(hwnd,SW_SHOW) i OnActivate
(begge steder lige over SetWindowPos, som jeg ikke kan finde dokumentation på).

Jeg kan ikke se, at din indsættelse gør noget?

Til gengæld har jeg har lige et par tillægsspørgsmål, hvis du gider?

1)
Nu minimerer/maximerer den fint, men jeg vil gerne have den til at \'toggle\', når man klikker på tray icon, så hvis den er maksimeret, når man trykker på tray icon, skal den minimere, og omvendt..

2)
Jeg vil gerne have, at den får keyboard fokus når den maksimerer?
Avatar billede mbulow Nybegynder
12. oktober 2001 - 14:05 #3
Hehe :)

Grunden til at jeg placerede mine linjer i WndProc under WM_LBUTTONDOWN og WM_RBUTTONUP, var egentlig at jeg ikke lige havde lagt så meget mærke til OnActivate, så egentlig er din løsning også fin nok :) Meeen som du vil se under punkt 1 KAN der være fordele ved at placere koden i WndProc\'en frem for OnActivate, men det er et spørgsmål om smag og behag.
Men ud over det, valgte jeg egentligt den løsning jeg gjorde, fordi jeg blot søgte efter alle de steder, hvor SetWindowPos blev kaldt, og erstattede/tilføjede kode, så den blev skjult/vist i stedet for at blive flyttet øverst/nederst.

1)
Som jeg sagde lige før, er der forskel på om koden placeret i WndProc eller OnActivate:
Forskellen er at WndProc (helt præcist WM_ONLBUTTONDOWN), vil blive aktiveret HVER GANG der bliver klikket på ikonet i systray\'et. OnActivate vil kun blive kaldt med state=WA_INACTIVE, når der dobbeltklikkes på ikonet.

Det er det jeg mener med at det er et spørgsmål om smag og behag... Skal den lukkes med enkelt eller dobbelt-klik???
Skal den åbnes med enkeltklik og lukkes med dobbelt-klik, placerer du bare en:
    ShowWindow(hwnd, SW_HIDE)
i if(state==WA_INACTIVE) delen af, OnActivate og
    ShowWindow(hwnd, SW_SHOW)
i else delen.

Skal den derimod åbne og lukke med enkeltklik kan du ændre koden i:
    case WM_LBUTTONDOWN:
til:
    if(IsWindowVisible(hwnd))
          ShowWindow(hwnd, SW_HIDE);
    else{
          ShowWindow(hwnd, SW_SHOW);
          SetForegroundWindow(hwnd);
    }

Fair nok... Der findes sikkert en simpel løsning til at få OnActivate til at sende state=WA_INACTIVE ved et dobbeltklik, men jeg er ikke nok inde i WM_ACTIVATE til at kunne sige det :)


2)
At give notesblokken keyboard-fokus når den vises er egentligt ikke så svært, du skal bare skrive:
    SetFocus(hwnd_rich)
i else delen af if(state==WA_INACTIVE) i OnActivate.

Nyt punkt 3)
Hvis der er noget der irriterer mig, som jeg opdagede da jeg kiggede på punkt 1, er det at en anden applikation ikke bliver aktivaret, når notesblokken bliver lukkes, men hva\' så er der en ny udfordring der ;) Hehe

PS!!! Hvis du vil ha\' mig til at sende koden til dig, giver du mig bare din mail-adresse, så sender jeg den til dig
Avatar billede mbulow Nybegynder
12. oktober 2001 - 14:08 #4
Æhh... UPS

Vi ændrer lige ordet \'dobbeltklik\' i sidste sætning af punkt 1, til \'enkeltklik\'
Avatar billede aggie Nybegynder
12. oktober 2001 - 14:24 #5
whee, nu er den der :)

- men du har ret, det er irriterende den ikke giver fokus tilbage når man lukker..

jeg har 100 points mere, hvis du gider?
Avatar billede aggie Nybegynder
15. oktober 2001 - 13:07 #6
Jeg har lavet et ekstra spørgsmål, på
http://www.eksperten.dk/spm/121052

- håber virkelig du vil titte på det, det gik jo så smertefrit sidst :)
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