2014-06-07 4 views
0

J'écris un logiciel GUI simple en utilisant wxWidgets 3.0 dans CodeBlocks 13.12, sur Win 7 x64 machine.Affichage incorrect du texte des éléments de menu dans la barre d'état - wxWidgets 3.0

Je voudrais créer un menu pour le cadre, et chaque élément dans le cadre devrait faire apparaître un texte différent dans la barre d'état lorsqu'il est en surbrillance. Ci-dessous ce que j'ai fait jusqu'à présent (seulement la partie menu du code). Le menu et la barre d'état apparaissent comme prévu. Le problème est que chaque élément (dans les sous-menus Fichier et Données) en surbrillance affiche "Enregistrer le projet" dans la barre d'état - qui est le tout premier élément du premier sous-menu. Comment changer cela afin que les noms des éléments de menu appropriés soient affichés?

CODE:

wxMenuBar* mbar = new wxMenuBar(); 

    wxMenu* fileMenu = new wxMenu(_T("")); 
    //fileMenu->Append(, _("&"), _(""))); 
    fileMenu->Append(SaveProject, _("&Save project"), _("Save project")); 
    fileMenu->Append(SaveProjectAs, _("&Save project as"), _("Save project as")); 
    fileMenu->Append(OpenNewProject, _("&Open new project"), _("Open new project")); 
    fileMenu->Append(OpenExistingProject, _("&Open existing project"), _("Open existing project")); 
    fileMenu->AppendSeparator(); 
    fileMenu->Append(Quit, _("&Quit"), _("Quit")); 

    mbar->Append(fileMenu, _("&File")); 

    wxMenu* dataMenu = new wxMenu(_T("")); 
    //fileMenu->Append(, _("&"), _(""))); 
    dataMenu->Append(ImportData, _("&Import data"), _("Import data")); 
    dataMenu->Append(ExportData, _("&Export data"), _("Export data")); 
    dataMenu->Append(SavaDataAs, _("&Save data as"), _("Save data as")); 

    mbar->Append(dataMenu, _("&Data")); 

    mainFrame->SetMenuBar(mbar); 

Répondre

1

Je soupçonne que le problème est dû à l'utilisation des ID de menu en double (par exemple SaveProject est utilisé deux fois). Bien qu'il ne soit pas clair pourquoi cela devrait entraîner le comportement observé, il est assez clair que vous ne pouvez pas réutiliser les ID de menu car vous n'aurez aucun moyen de faire la distinction entre les événements générés par les deux éléments ayant le même ID. Alors ne fais pas ça.

+0

Merci pour votre réponse. La chose que vous avez indiquée en utilisant deux fois le même ID de menu, était une faute de frappe dans ma question et je l'ai éditée. J'ai résolu le problème en utilisant une manière différente d'énumérer les ID de menu. Au début je l'ai fait avec l'aide de wxID_HIGHEST + 1, mais ça n'a pas marché, et je ne sais pas vraiment pourquoi. –

+0

Cela semble très suspect, la création d'éléments de menu est quelque chose fait par presque tous les programmes wxWidgets et je serais très surpris si un tel problème pouvait passer inaperçu pendant si longtemps. Ma deuxième hypothèse est que vous faites quelque chose d'autre dans votre programme que vous ne nous montrez pas parce que, tel qu'il est écrit, et après s'être assuré que tous les identifiants sont uniques, ce code devrait certainement fonctionner. –

Questions connexes