2015-02-19 18 views
6

Sto cercando di integrare alcune funzionalità di Windows 10 nella mia applicazione desktop Windows esistente. Sono un po 'bloccato integrando le notifiche Toast. Utilizzo dell'esempio di notifica del brindisi (https://code.msdn.microsoft.com/windowsdesktop/sending-toast-notifications-71e230a2/) Sono stato in grado di implementare il codice per inviare e nascondere le notifiche. Funziona anche, che quando l'utente fa clic su una notifica 'attiva' viene richiamato un gestore di eventi nella mia applicazione.Windows 10 Notifiche Toast Applicazione desktop

Tuttavia, non appena la notifica viene "archiviata" nel "Centro operativo", non accade nulla quando l'utente fa clic sulla mia notifica. Come posso reagire ai clic in tali situazioni?

Grazie per il vostro aiuto,

Lukas

risposta

2

Questo campione è per Windows 8; l'Action Center di Windows 10 Tech Preview è nuovo e non è ancora disponibile l'SDK per l'utilizzo di nuove funzionalità.

3

C'è documentazione aggiornata per Windows 10 che descrive come utilizzare Action Center (e brindisi interattivi) da un'applicazione Win32: https://docs.microsoft.com/en-us/windows/uwp/design/shell/tiles-and-notifications/send-local-toast-desktop

In sostanza, è necessario utilizzare un server COM. L'evento Activated sullo ToastNotification stesso è un evento di runtime ... inutile se il tuo programma è stato chiuso e l'utente fa clic sul tuo toast da Action Center. Pertanto, Activated si attiva solo se l'utente fa clic sul tuo toast quando viene visualizzato per la prima volta. NON si attiva quando l'utente fa clic sul tuo brindisi da Centro operativo. Ecco a cosa serve il server COM (o cosa è il metodo OnActivated nelle app UWP).

8

Ho sviluppato WinToast, una libreria scritta in C++ per integrare facilmente Windows Toast Notification. L'ho usato per integrare le notifiche di Toast in diversi progetti, specialmente con Qt Framework.

La notifica Toast nativa necessita di alcune funzioni di Com Fundamentals che sono disponibili solo nella versione moderna di Windows (client con supporto minimo: Windows 8).

Ecco perché la libreria carica dinamicamente tutte le librerie richieste. Rendi la tua applicazione compatibile con le versioni precedenti di Windows usando WinToast. C'è un esempio allegato che spiega come usarlo nel repository.

Per mostrare un brindisi, basta creare il modello e il tuo gestore personalizzato e lanciarlo:

WinToastHandlerExample* handler = new WinToastHandlerExample; 
WinToastTemplate templ = WinToastTemplate(WinToastTemplate::ImageWithTwoLines); 
templ.setImagePath(L"imagepath"); 
templ.setTextField(L"firstline", 0); 
templ.setTextField(L"secondline", 1); 

if (!WinToast::instance()->showToast(templ, handler)) { 
    std::wcout << L"Could not launch your toast notification!"; 
} 
+0

sembra pulito ma ho coulndn't farlo funzionare seguendo il readme github. Tutti i controlli vengono passati (anche l'ultimo messaggio di errore "Impossibile avviare ..." non viene visualizzato), ma non è visibile Toast e viene chiamato il '' toastFailed() '' del mio gestore. Hai bisogno di impostare ulteriori configurazioni nel tuo progetto? – PhilLab

+0

Ciao, potresti controllare l'ultimo stato? Includiamo un nuovo progetto per Visual Studio e alcune modifiche a quello di esempio con Qt. Funziona bene con Windows 8, 8.1 e 10 – mohabouje

+0

Grazie per l'aggiornamento. Ho provato di nuovo e ho avuto alcuni problemi. Sebbene un problema Github non sia probabilmente il posto giusto per questo, l'ho [aperto] (https://github.com/mohabouje/WinToast/issues/20) per semplificare la valutazione – PhilLab

Problemi correlati