de menus (ou voces achavam que isso ja tinha sido feito?):new FXMenuTitle(menuBar, "&Arquivo", 0, _fileMenu);Aqui informamos:A barra de menus onde vai ficar. Novamente, pode ficar em um FXComposite qualquer. Mas nao ha a menor necessidade de uma bizarrice dessas.O titulo que vai aparecer. Nao preciso mais dizer para que serve o &, preciso?Icone. Eu, particularmente, nunca vi em nenhum programa (escrito em FOX ou nao) um menu com icone. Mas o FOX Toolkit te da essa liberdade.O painel que sera exibido ao acionar o menu.Nosso menu Arquivo esta pronto. Observemos, agora, o menu Editar.Menu Editar_editMenu = new FXMenuPane(this); new FXMenuCommand(_editMenu, "&Preferencias...", 0, 0, 0);new FXMenuTitle(menuBar, "&Editar", 0, _editMenu);Bom, esse aqui e so para mostrar a maneira como eu normalmente crio menus (e, de fato, qualquer objeto composto por uma hierarquia).Na primeira linha eu sigo o recuo normal do codigo. Esta e, digamos, a linha de criacao (cunhei esse termo agora...).Em seguida, vem as linhas de preenchimento (de novo...). Nelas, coloco os objetos que vao "dentro" do objeto principal, com um recuo a mais exatamente para deixar claro essa hierarquia.No final, volto ao recuo da linha de criacao. E a linha de realizacao ( >D ), pois nela dou um sentido ao meu objeto (afinal, nao faz sentido criar um painel sem acesso a ele).Desenvolvi esse estilo quando comecei a trabalhar com o OpenSceneGraph (nao confundam com OpenSG) e precisava definir as caracteristicas de um modelo, ficava mais ou menos assim:osg::ref_ptr geode = new osg::Geode(); osg::Geometry *geometry = new osg::Geometry(); osg::Vec3Array *vertexArray = new osg::Vec3Array(); /* Preenche a lista de vertices */ geometry->setVertexArray(vertexArray); osg::DrawElementsUInt *primitiveSet = new osg::DrawElementsUInt(GL_POINTS); /* Adiciona as primitivas */ geometry->addPrimitiveSet(primitiveSet); geode->addDrawable(geometry);Recuar os objetos mais internos me ajudou a entender melhor a hierarquia dos objetos do OpenSceneGraph e acabei aplicando essa tecnica ao programar com o FOX Toolkit. Nao vou explicar porque esta fora do escopo do topico (e do blog como um todo...).Bom, e apenas uma sugestao.Liberando os menusFXMenuPanels sao objetos compartilhaveis, assim como icones. Isso serve, por exemplo, para exibir o mesmo painel pelo menu ou clicando com o botao direito sobre algum objeto.Sendo assim, devem ser liberados "na maozona":delete _fileMenu;delete _editMenu;ResultadoDepois disso tudo, o menu Arquivo fica conforme a imagem a seguir. Em destaque, a barra de status mostrando o texto do comando de sair.Consideracoes finaisNotem o texto dos comandos de "Carregar imagem..." (menu Arquivo) e "Preferencias..." (menu Editar). Eles terminam em reticencias.Terminar um texto de exibicao (tanto de comandos de menu como tambem de botoes) com reticencias informa imediatamente ao usuario que uma nova janela se abrira, onde ele tera que executar mais acoes.Outra observacao importante e onde posicionar o codigo para criacao dos menus. No inicio, eu colocava tudo no construtor. As coisas foram aumentando de tamanho, e resolvi apenas criar a barra no construtor e chamar uma funcao, populateMenu(), para fazer essa tarefa.Agora, as coisas no meu projeto estao ficando grandes demais, e estou pensando seriamente em criar uma nova classe so para isso. Acontece que, na pressa de obter resultados, a gente acaba tocando tudo no mesmo lugar. Nessa brincadeira ate o padrao