2017-10-06 2 views
0

Je fais des devoirs MFC. Mais il fait des erreurs.Comment déclarer un ID pour un gestionnaire ON_COMMAND?

BEGIN_MESSAGE_MAP(CMFC_Exp01Doc, CDocument) 
ON_COMMAND(ID_ARTHMETIC, &CMFC_Exp01Doc::OnArthmetic) 
ON_COMMAND(ID_ARITHMETIC, &CMFC_Exp01Doc::OnArithmetic) 
END_MESSAGE_MAP() 

erreur 2065 dit que Déclarez le mot "ID_ARTHMETIC, ID_ARITHMETIC"

J'ai trouvé beaucoup de sites sur MFC ON_COMMAND mais il ne déclare pas par exemple) ID_0000

Comment puis-je déclarer ce mot?

void CMFC_Exp01Doc::OnArthmetic() 
{ 
    int i, j; 
    int temp; 
    for (i = 0; i<256; i++) { 
     for (j = 0; j<256; j++) { 
      temp = m_InImage[i][j] + 40; 
      if (temp>255) 
       m_OutImage[i][j] = 255; 
      else if (temp < 0) 
       m_OutImage[i][j] = 0; 
      else 
       m_OutImage[i][j] = (unsigned char)temp; 
     } 
    } 

    UpdateAllViews(NULL); 
} 

void CMFC_Exp01Doc::OnArithmetic() 
{ 
    int i, j; 
    int temp; 
    for (i = 0; i<256; i++) { 
     for (j = 0; j<256; j++) { 
      temp = m_InImage[i][j] + 40; 
      if (temp>255) 
       m_OutImage[i][j] = 255; 
      else if (temp < 0) 
       m_OutImage[i][j] = 0; 
      else 
       m_OutImage[i][j] = (unsigned char)temp; 
     } 
    } 

    UpdateAllViews(NULL); 
} 
+1

Semble que vous êtes du code de copier-coller d'un autre projet. Jetez un coup d'oeil à votre fichier .rc et déterminez ce que ID_0000 puis vous déclarez dans les fichiers de ressources. –

+0

Vous n'avez probablement pas de connaissances de base sur le MFC. Vous n'irez pas très loin en copiant le code. Il y a des tonnes de tutoriels MFC là-bas. –

Répondre

2

Ces ID sont des définitions simples. Généralement défini dans un fichier nommé resource.h

Ces ID sont créés lorsque vous modifiez les parties de l'interface utilisateur comme des menus ou des barres d'outils. Chaque commande d'une barre d'outils ou d'un menu a un ID distinct. Ces ID pour les commandes sont généralement dans une plage> 0x8000. Autres questions utiles: Lorsque vous voulez qu'une commande soit gérée, cette commande doit être donnée par un utilisateur. Comment cela devrait-il être fait dans votre cas? Où avez-vous l'interface utilisateur pour cette commande? Vérifiez si vous avez déjà un identifiant de commande mais peut-être différent.