2014-06-07 4 views
0

Win 7 x64 시스템의 CodeBlocks 13.12에서 wxWidgets 3.0을 사용하여 간단한 GUI 소프트웨어를 작성하고 있습니다.상태 표시 줄에 메뉴 항목 텍스트가 잘못 표시됨 - wxWidgets 3.0

프레임의 메뉴를 만들고 프레임의 각 항목을 강조 표시하면 상태 표시 줄에 다른 텍스트가 나타나야합니다. 아래는 지금까지 내가 한 것입니다 (코드의 메뉴 부분 만). 메뉴 및 상태 표시 줄이 계획대로 나타납니다. 문제는 파일 및 데이터 하위 메뉴의 모든 항목이 강조 표시 될 때 첫 번째 하위 메뉴의 첫 번째 항목 인 상태 표시 줄에 "프로젝트 저장"을 표시한다는 것입니다. 적절한 메뉴 항목 이름이 표시되도록 변경하는 방법?

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); 

답변

1

나는 문제가 중복 된 메뉴 ID의 사용과 인해 의심 (예를 들어, SaveProject 두 번 사용된다). 이것이 왜 관찰 된 행동을 야기하는지 분명하지는 않지만 동일한 ID를 가진 두 아이템에 의해 생성 된 이벤트를 구별 할 방법이 없으므로 메뉴 ID를 재사용 할 수 없다는 것은 분명합니다. 그러지 마세요.

+0

답장을 보내 주셔서 감사합니다. 같은 메뉴 ID를 두 번 사용하여 지적한 것은 제 질문에 오타였습니다. 나는 그것을 편집했습니다. 나는 메뉴 ID를 열거하는 다른 방법을 사용하여 문제를 해결했다. 처음에는 wxID_HIGHEST + 1의 도움으로 해냈지만 작동하지 않았고 그 이유를 알지 못합니다. –

+0

이것은 매우 의심 스럽습니다. 메뉴 항목을 생성하는 것은 거의 모든 wxWidgets 프로그램에서 수행되는 작업이며 이러한 문제가 오래 동안 주목받지 못하면 매우 놀랄 것입니다. 두 번째 가설은 작성한 것처럼 모든 ID가 고유하다는 것을 확인한 후에이 코드가 확실히 작동해야하기 때문에 프로그램에서 다른 것을하고 있다는 것입니다. –