2017-03-16 1 views
0

Je crée une application de dispositif intelligent, qui crée une barre de commande de cette façon:bouton Fermer de CCommanBar ne quitte pas l'application

if (!m_wndCommandBar.Create(this) || 
     !m_wndCommandBar.InsertMenuBar(IDR_MAINFRAME) || 
     !m_wndCommandBar.AddAdornments(dwAdornmentFlags)) 
    { 
     TRACE0("CommandBar no se pudo crear\n"); 
     return -1;  // No se pudo crear 
    } 

    m_wndCommandBar.SetBarStyle(m_wndCommandBar.GetBarStyle() | CBRS_SIZE_FIXED); 

De cette façon, une barre de commande est créée avec un bouton de fermeture.

Il s'agit d'une application SDI pour périphérique intelligent.

Lorsque j'appuie sur le bouton de fermeture, la fenêtre de l'application disparaît, mais l'application continue à fonctionner. J'ai réalisé à ce sujet parce que lorsque je débogue en utilisant Visual Studio 2008, le débogueur ne se termine pas.

Que puis-je faire?

+0

Montrez-nous le code comment ajouter si le bouton de fermeture et comment du vous quittez l'application. –

+0

C'est le problème. Je n'ai pas ajouté ce bouton. Système ajouter des boutons automatiquement (bouton de démarrage, bouton de sip et bouton de fermeture). J'ai réalisé que le bouton de fermeture ne fait que masquer l'application, car je peux le voir dans le gestionnaire de tâches. J'ai seulement ajouté mon propre menu IDR_MAINFRAME. – jstuardo

Répondre

0

Les boutons par défaut et les contrôles système de Windows Mobile ne se ferment pas mais masquent (minimisent) la fenêtre. L'application continue donc de fonctionner en arrière-plan.

Vous devez ajouter un code personnalisé pour terminer votre application. Vous pouvez le faire par exemple avec un bouton seprate ou un élément de menu, puis exécuter PostQuitMessage ou un autre code pour terminer le processus principal (après avoir terminé les threads d'arrière-plan créés).

Vous pouvez également modifier le style de fenêtre pour inclure un bouton de fermeture (OK).

CommandBar_AddAdornments(hwnCB, 0, 0); 

ajoute les contrôles de la barre de commandes standard, normalement une option Close (X) et Help. Vous pouvez utiliser l'indicateur CMDBAR_OK pour l'appel ci-dessus pour ajouter un bouton Quitter/Terminer (OK). Votre boucle de message recevra un message WM_COMMAND avec IDOK comme ID de message. Cela peut être utilisé pour quitter l'application avec PostQuitMessage(). Voir MSDN.

Pour votre code:

m_wndCommandBar.AddAdornments(dwAdornmentFlags)) 

peut être changé pour:

m_wndCommandBar.AddAdornments(dwAdornmentFlags || CMDBAR_OK)) 
+0

J'ai ajouté un bouton OK à la place et en contrôlant WM_COMMAND, je pouvais poster un message de fermeture afin que l'application se termine, appelant les destructeurs de toutes les classes pour libérer de la mémoire. Tout va bien maintenant je vais essayer de changer le texte OK à l'autre texte ou icône. J'espère que c'est possible. – jstuardo

+0

Vous ne pouvez pas changer l'OK si vous utilisez CMDBAR_OK. Windows Mobile est très restrictif. – josef