Avatar billede a_dyhrberg Nybegynder
28. august 2001 - 15:08 Der er 14 kommentarer og
1 løsning

(MFC) Minimering af vindue til system tray

Jeg har programmeret en fuld applikation i MFC C++.

Det jeg har behov for er at programmet skal kunne minimeres, IKKE til taskbaren men til systemtray. ligesom ICQ, NortonAntiVirus. osv.

Der ud over skal den kunne poppe op af sig selv ved en given event.

Et kode eksembel vil være optimalt.

Projektet er lavet igennem MFC\'s wizzard, hvis det har nogen betydning.
Avatar billede wisen Nybegynder
28. august 2001 - 15:35 #1
Avatar billede a_dyhrberg Nybegynder
28. august 2001 - 21:57 #2
Det kan jeg bare overhovedet ikke få til at virke.
Jeg kan ser at der er flere andre som, heller kan når deres MFC proggy er dialog baseret, ligesom mit. Burde måske have fremgået i første beskrivelse
Avatar billede karlkoder Nybegynder
29. august 2001 - 06:27 #3
i visual studio er der et et eksempel som hedder:

setdisp

det bruger systray...      måske det kan hjælpe....?!??
Avatar billede wisen Nybegynder
31. august 2001 - 08:16 #4
Hej Anders, tak for mailen.

Bare lige for åbenheden skyld, og for at ingen skal få ondt i rø***, så stod der :

I figured out how to make you tip work. (Minimizing MFC windows)

If you want the points just send another answer to the posting.
And i will credit you.

Thanks for you help.

Anders Dyhrberg


... så her er et svar, Anders.
Avatar billede wisen Nybegynder
31. august 2001 - 08:16 #5
Hvad har du gjort ?
Avatar billede a_dyhrberg Nybegynder
31. august 2001 - 13:41 #6
Mener du hvad jeg har gjort for at få det til at virke ??
Avatar billede wisen Nybegynder
31. august 2001 - 13:41 #7
Ja; takker iøvrigt for point :)
Avatar billede a_dyhrberg Nybegynder
31. august 2001 - 13:55 #8
Nå dem havde du nu fortjent.

Jeg droppede alt det der stod på den tilhørende hjemmeside. downloadede SRC filerne. includerede dem der ikke hed noget med ...SDK.
Så kiggede jeg hans demo udgave igennem i sømmene.
alle hans guldkorn står i AssertValid()

Jeg lavede en member funktion i min mainDlg, og gav den følgende indhold.

{
// for the trayicon handling
    m_bGuardian = FALSE;

    HICON hIcon = ::LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_TRAY_ICON));  // Icon to use

    if (!m_TrayIcon.Create(

                        NULL,                            // Let icon deal with its own messages
                        WM_ICON_NOTIFY,                  // Icon notify message to use
                        _T(\"Right click for MENU\"),        // tooltip
                        hIcon,
                        IDR_TRAY_ICON_MENU,              // ID of tray icon
                        FALSE,
                        _T(\"\"),                            // balloon tip
                        _T(\"\"),                            // balloon title
                        NIIF_WARNING,                    // balloon icon
                        20 ))                            // balloon timeout
    {
        return -1;
    }

    m_TrayIcon.SetMenuDefaultItem(3, TRUE);

}

husk at includere .h filen og lave en POPUP menu i .RC filen til dit TrayIcon. Ret simpelt når det kommer til stykket.
Avatar billede wisen Nybegynder
31. august 2001 - 13:57 #9
Cool, jammen god fornøjelse...
Avatar billede a_dyhrberg Nybegynder
31. august 2001 - 14:00 #10
hov det med m_bGuardian kan udelades det er en jeg bruger til at se om vinduet er åbnet eller lukket. Det kunne jeg ikke finde en funktion til !
Avatar billede wisen Nybegynder
31. august 2001 - 14:04 #11
Hvad mener du med åbnet eller lukket; om vindue er synligt eller ligger i taskbaren ?
Avatar billede wisen Nybegynder
31. august 2001 - 14:08 #12
Måske kan du bruge CWnd::GetWindowPlacement :

BOOL GetWindowPlacement( WINDOWPLACEMENT* lpwndpl ) const;

Return Value

Nonzero if the function is successful; otherwise 0.

Parameters

lpwndpl

Points to the WINDOWPLACEMENT structure that receives the show state and position information.

Remarks

Retrieves the show state and the normal (restored), minimized, and maximized positions of a window.

The flags member of the WINDOWPLACEMENT structure retrieved by this function is always 0. If CWnd is maximized, the showCmd member of WINDOWPLACEMENT is SW_SHOWMAXIMIZED. If the window is minimized, it is SW_SHOWMINIMIZED. It is SW_SHOWNORMAL otherwise.
Avatar billede a_dyhrberg Nybegynder
31. august 2001 - 14:43 #13
Det jeg mener er om windoet er fremme eller væk fra taskbare og kyn i systemtray som er måden det virke på. Jeg kunne bare ikke finde en funktion i CSystemTray classen. Men den anden læsning funger fint. Ellers mange tak.
Avatar billede wisen Nybegynder
31. august 2001 - 14:44 #14
Ok
Avatar billede a_dyhrberg Nybegynder
31. august 2001 - 14:44 #15
ok det gik vist lige hurtigt nok, med skriveriet denne gang. Jeg håber du kan forstå det alligevel.
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