J'écris une application en C++ qui s'exécute en tant qu'icône de la barre d'état système. Lorsque l'application démarre initialement, la boîte de dialogue principale se charge et prend le focus, ce qui n'est pas le comportement que je souhaite avoir. Est-il possible de charger l'icône de la barre d'état système sans charger la boîte de dialogue principale?Masquage de la boîte de dialogue au démarrage pour une application de la barre d'état système
Répondre
Si vous avez utilisé l'assistant de projet standard de SFM, le code qui affiche la boîte de dialogue est dans la méthode InitInstance de vos applications. Il suffit de commenter les pièces dlg.DoModal()
et m_pMainWnd = &dlg;
et tout ira bien.
Notez que vous devrez peut-être coder votre propre boucle de message, sinon votre application se fermera juste après ces changements.
Je dirais que vous devez séparer votre code systray et votre code de fenêtre, et n'affichez la fenêtre que lorsque le systray est appelé. mais vous pouvez toujours appeler
ShowWindow(SH_HIDE);
La façon habituelle de procéder est de créer une application invisible basée sur une boîte de dialogue et d'afficher uniquement la fenêtre lorsque l'utilisateur interagit avec l'icône de votre barre d'état. Pour l'exemple de code sur la façon de procéder, voir here.